Skip to content

DuckAi/ChatTab: Add New Image, New search and remove New Tab option from + menu - #9761

Open
karlenDimla wants to merge 2 commits into
feature/karl/duckai-sidebar/history-context-menufrom
feature/karl/duckai-sidebar/plusmenuchanges
Open

DuckAi/ChatTab: Add New Image, New search and remove New Tab option from + menu #9761
karlenDimla wants to merge 2 commits into
feature/karl/duckai-sidebar/history-context-menufrom
feature/karl/duckai-sidebar/plusmenuchanges

Conversation

@karlenDimla

@karlenDimla karlenDimla commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/task/1218238186970934?focus=true
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable):

Description

  • New "+" plus menu on the omnibar with New Chat, New Voice Chat, New Image (sidebar-only), New Search / New Tab, and New Fire Tab entries.
  • New Search (the sidebar relabel of "New Tab") opens a regular new tab and auto-surfaces the native input focused on the Search tab; with the flag off the entry stays "New Tab" and behaves as before.
  • Generalized the onboarding input-screen one-shot into InputScreenLaunchTarget (carries an InputMode instead of a DUCK_AI boolean) so both onboarding (Duck.ai tab) and New Search (Search tab) can drive the initial input mode.

Steps to test this PR

Setup

  • Internal build installed
  • Native input / input screen feature is active (native omnibar input widget with the Search / Duck.ai toggle is in use)
  • Do at least one duck.ai chat
  • Open the browser on a New Tab Page and focus the omnibar so the "+" plus button is available
  1. nativeDuckAiSidebar enabled (default) — open the "+" menu
  • Tap the "+" plus button in the omnibar
  • The menu entry (with the add-tab icon) reads New Search (not "New Tab")
  • The New Image entry IS visible
  1. nativeDuckAiSidebar enabled — tap New Search
  • A new tab opens (regular, non-Fire)
  • The native input widget IS auto-surfaced (keyboard shown), without a manual omnibar tap
  • The widget opens with the Search tab selected (not Duck.ai)
  • The input field is empty and ready to type
  • Typing a query and submitting performs a search (not a Duck.ai chat)
  1. nativeDuckAiSidebar disabled (via FF Inventory) — open the "+" menu
  • Tap the "+" plus button in the omnibar
  • The menu entry reads New Tab (not "New Search")
  • The New Image entry is NOT visible
  1. nativeDuckAiSidebar disabled — tap New Tab
  • A new tab opens (regular, non-Fire)
  • The tab lands with the address bar unfocused (native input is NOT force-opened)
  • No Search-tab pre-selection behavior occurs (unchanged pre-existing behavior)

Regression check

  • Duck.ai onboarding: completing the Search-path onboarding still auto-opens the input screen on the Duck.ai (chat) tab
  • Custom-AI onboarding still finishes on the Duck.ai (chat) tab
  • Focusing the omnibar on an existing tab (no menu action) still opens the input with the default toggle position — SEARCH is not spuriously forced

Note

Medium Risk
Touches new-tab launch, keyboard focus, and onboarding handoff into the native input screen; New Image is UI-only until wired.

Overview
Replaces onboarding-only OnboardingInputScreenLaunchTarget with a browser-scoped InputScreenLaunchTarget that arms a one-shot InputMode (Search or Duck.ai) for the next native input screen. Onboarding and segmented end CTAs still land on Duck.ai via InputMode.DUCK_AI; the omnibar + menu can arm InputMode.SEARCH when opening a new tab under the native Duck.ai sidebar.

When nativeDuckAiSidebar is on, the + popup shows New Image (stub click handler), relabels New Tab to New Search, and BrowserTabViewModel peeks the launch target so the keyboard/input screen still opens even when the input-screen feature would normally suppress focus.

Adds layout/strings for New Image / New Search and unit tests for the new launch-target API; existing tests are updated for the renamed dependency.

Reviewed by Cursor Bugbot for commit 685b489. Bugbot is set up for automated code reviews on this repo. Configure here.

karlenDimla and others added 2 commits September 9, 2026 13:36
Wire the sidebar "New Search" menu action to open a regular new tab and
auto-surface its native input on the Search tab.

Generalize the onboarding input-screen one-shot into InputScreenLaunchTarget,
carrying an InputMode instead of a DUCK_AI boolean, and have showOrHideKeyboard
force the input open when a mode is armed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copy link
Copy Markdown
Contributor Author

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 685b489. Configure here.

duckAiFeatureState.showInputScreen.value ||
currentBrowserViewState().lastQueryOrigin == QueryOrigin.FromBookmark ||
(settingsDataStore.omnibarType == OmnibarType.SPLIT && alreadyShownKeyboard)
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Launch target never clears

Medium Severity

showOrHideKeyboard now peeks inputScreenLaunchTarget and forces focus, but the signal is only cleared in showNativeInput. AI onboarding still arms it for all users, and showInputScreen is mutually exclusive with native input, so consumeInitialInputMode never runs. After that, every later NTP/showOrHideKeyboard call keeps forcing the keyboard and ignores CTA drop-focus, bookmark origin, and split-omnibar rules until process death.

Additional Locations (2)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 685b489. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant