Skip to content

Rename the Duck.ai menu's Chats entry and menu to NTP - #9765

Open
malmstein wants to merge 3 commits into
developfrom
feature/david/duckai-menu-ntp
Open

Rename the Duck.ai menu's Chats entry and menu to NTP#9765
malmstein wants to merge 3 commits into
developfrom
feature/david/duckai-menu-ntp

Conversation

@malmstein

@malmstein malmstein commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Task/Issue URL: https://app.asana.com/1/137249556945/project/1174433894299346/task/1218339917320990
Tech Design URL (if applicable):
API Proposals URL(s) (if applicable): None

Description

Brings the Duck.ai menu to the new tab page and relabels its third entry from All Chats to Chats. The NTP has two different Duck.ai affordances depending on the address bar setting, the omnibar icon and the native input's start-chat icon, so both now open the menu when the input is empty and contextualMenuAllChats is on; typed input still goes straight to Duck.ai, as does an empty input with the flag off. The rename reuses duck_ai_chat_history_title, already translated in all 24 locales, so no new string is introduced. Pixels are unchanged.

Steps to test this PR

NTP, address bar set to "Toggle between Search and Duck.ai"

  • Settings, AI Features, Duck.ai section: choose "Toggle between Search and Duck.ai"
  • On a new tab, tap the Duck.ai icon in the address bar
  • Confirm a menu with New Chat and Chats, and no Ask About Page
  • Tap Chats and confirm the Chats screen opens

NTP, address bar set to "Search Only"

  • Switch the same setting to "Search Only"
  • On a new tab, tap the Duck.ai icon with the field empty; the same two-item menu appears
  • Type any text, tap the icon again, and confirm Duck.ai opens directly with no menu

Page menu unchanged

  • Load any web page and tap the Duck.ai icon
  • Confirm New Chat, Ask About Page, divider, Chats

Flag off

  • Turn contextualMenuAllChats off in Feature Flag Inventory, force stop and relaunch
  • On the NTP the icon opens Duck.ai directly; on a page the menu shows two items with no dangling divider

Note

Low Risk
Feature-flagged Duck.ai entry-point and menu UX only; behavior on loaded pages is unchanged aside from the Chats label string.

Overview
Extends the Duck.ai contextual menu (New Chat + Chats, relabeled from “All Chats” via duck_ai_chat_history_title) to the new tab page when contextualMenuAllChats is on and the omnibar query is empty.

Omnibar: NTP no longer always skips contextual mode—empty query + flag opens ShowDuckAIContextualMode; typed query or flag off still opens full Duck.ai. Regular pages keep unfocused-only contextual behavior.

Native input start-chat icon: Empty input + flag shows the same menu through DuckChatContextual.launch with sourceUrl = null; non-empty input still calls submit(). NativeInputHost gains isInputEmpty() and tabId() for that routing.

Menu content: RealDuckChatContextual passes sourceUrl into showMenu and hides Ask About Page when there is no page (NTP/blank tab).

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

malmstein and others added 3 commits September 9, 2026 23:36
Ship review asked for the entry to read Chats rather than All Chats, so
point it at duck_ai_chat_history_title, the already translated title of
the screen it opens, and drop the untranslated string it replaces.

Ask About Page now hides itself when the tab has no page, which is what
leaves New Chat and Chats when the menu is shown from the NTP.

https://app.asana.com/1/137249556945/project/1174433894299346/task/1218339917320990

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The menu was suppressed on the NTP because contextual chat is about the
page you are viewing. Now that it carries a Chats entry alongside New
Chat it earns its place there, so offer it when that entry is enabled
and the query is empty, and keep opening Duck.ai directly otherwise.

The NTP omnibar is focused from the start, so the menu hangs off an
empty query there rather than off focus as it does on a page.

https://app.asana.com/1/137249556945/project/1174433894299346/task/1218339917320990

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
In search-only mode the new tab page shows the native input field, whose
start chat icon submitted straight to Duck.ai. An empty input has nothing
to send, so it now opens the same menu the omnibar shows, New Chat and
Chats. Anything typed still goes straight to Duck.ai, as does an empty
input when the menu entry is disabled.

The host gains isInputEmpty and tabId so the plugin can make that call
and hand the tab to the existing contextual menu.

https://app.asana.com/1/137249556945/project/1174433894299346/task/1218339917320990

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Copy link
Copy Markdown
Contributor Author

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

@malmstein malmstein changed the title Rename the Duck.ai menu's Chats entry and hide Ask About Page Rename the Duck.ai menu's Chats entry and menu to NTP Sep 9, 2026
@malmstein
malmstein marked this pull request as ready for review September 9, 2026 22:19
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