[WIP] Duck.ai navigation sidebar on the New Tab Page (POC)#2774
Draft
tomasstrba wants to merge 1 commit into
Draft
[WIP] Duck.ai navigation sidebar on the New Tab Page (POC)#2774tomasstrba wants to merge 1 commit into
tomasstrba wants to merge 1 commit into
Conversation
Adds a left rail to the desktop NTP with Duck.ai entry points: New Chat, New Voice Chat, New Image, a recent Chats list, and a Settings & More footer. The rail is a thin presentation layer over the existing omnibar Duck.ai plumbing — actions route through the omnibar service (viewAllAiChats, submitChat with voice/image modes, openAiChat) and the recent-chats list reuses AiChatsProvider/AiChatsList, so native opens Duck.ai exactly as it does from the NTP search box today. No new messaging is introduced beyond a duckAISettings target on the existing `open` notification. Rendering is gated by a new `duckAiSidebar` initialSetup setting (mirroring customizerDrawer) so native controls availability behind a feature flag.
Contributor
Build Branch
Static preview entry points
QR codes (mobile preview)
Integration commandsnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/tom/duck-ai-ntp-sidebar")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/tom/duck-ai-ntp-sidebar
git -C submodules/content-scope-scripts checkout origin/pr-releases/tom/duck-ai-ntp-sidebarPin to exact commitnpm (Android / Extension): Swift Package Manager (Apple): .package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "fe126edf8d8e4a5ef7eded2a92f0936df9f63295")git submodule (Windows): git -C submodules/content-scope-scripts fetch origin pr-releases/tom/duck-ai-ntp-sidebar
git -C submodules/content-scope-scripts checkout fe126edf8d8e4a5ef7eded2a92f0936df9f63295 |
Contributor
[Beta] Generated file diffTime updated: Wed, 17 Jun 2026 13:12:28 GMT Apple
File has changed Integration
File has changed Windows
File has changed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Asana Task/Github Issue: https://app.asana.com/1/137249556945/project/42792087274227/task/1215798721094053?focus=true
Description
POC: a left navigation rail on the desktop New Tab Page with Duck.ai entry points — New Chat, New Voice Chat, New Image, a recent Chats list, and a Settings & More footer (Pro badge is a static stub for now).
The rail is a thin presentation layer over the existing omnibar Duck.ai plumbing:
omnibar_viewAllAIChats, New Voice Chat / New Image →omnibar_submitChat(voice-mode/image-generation), recent chat →omnibar_openAiChat(reusesAiChatsProvider/AiChatsList), Settings & More →openwith a newduckAISettingstarget.duckAISettingstarget.Rendering is gated by a new
duckAiSidebarinitialSetupsetting (mirrorscustomizerDrawer), so native controls availability behind a feature flag. Paired macOS change adds thenewTabPageDuckAISidebarflag +HtmlNewTabPageSubfeature.duckAISidebar.Opening as draft/WIP to get a buildable branch for linking into the apple-browsers macOS PR.
Testing Steps
npm run build -w special-pagesthen servebuild/integration/pages/new-tab— the rail shows by default (mock setsduckAiSidebar: enabled); pass?duckAiSidebar=disabledto hide it. Recent chats populate; clicking New Chat / Voice / Image / a recent chat / Settings dispatches the expectedomnibar_*/openmessages.newTabPageDuckAISidebarflag (internal-only); open a new tab and verify the rail + that actions open Duck.ai as the NTP omnibar does.Checklist