Skip to content

[WIP] Duck.ai navigation sidebar on the New Tab Page (POC)#2774

Draft
tomasstrba wants to merge 1 commit into
mainfrom
tom/duck-ai-ntp-sidebar
Draft

[WIP] Duck.ai navigation sidebar on the New Tab Page (POC)#2774
tomasstrba wants to merge 1 commit into
mainfrom
tom/duck-ai-ntp-sidebar

Conversation

@tomasstrba

Copy link
Copy Markdown
Contributor

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:

  • New Chat → omnibar_viewAllAIChats, New Voice Chat / New Image → omnibar_submitChat (voice-mode / image-generation), recent chat → omnibar_openAiChat (reuses AiChatsProvider/AiChatsList), Settings & More → open with a new duckAISettings target.
  • No new messaging beyond the duckAISettings target.

Rendering is gated by a new duckAiSidebar initialSetup setting (mirrors customizerDrawer), so native controls availability behind a feature flag. Paired macOS change adds the newTabPageDuckAISidebar flag + HtmlNewTabPageSubfeature.duckAISidebar.

Opening as draft/WIP to get a buildable branch for linking into the apple-browsers macOS PR.

Testing Steps

  • Dev harness: npm run build -w special-pages then serve build/integration/pages/new-tab — the rail shows by default (mock sets duckAiSidebar: enabled); pass ?duckAiSidebar=disabled to hide it. Recent chats populate; clicking New Chat / Voice / Image / a recent chat / Settings dispatches the expected omnibar_* / open messages.
  • In-app (macOS): behind the newTabPageDuckAISidebar flag (internal-only); open a new tab and verify the rail + that actions open Duck.ai as the NTP omnibar does.

Checklist

  • I have tested this change locally
  • This change will be visible to users
  • I have ensured the change is gated by config

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.
@github-actions

Copy link
Copy Markdown
Contributor

Build Branch

Branch pr-releases/tom/duck-ai-ntp-sidebar
Commit fe126edf8d
Updated June 17, 2026 at 1:11:34 PM UTC

Static preview entry points

QR codes (mobile preview)
Entry point QR code
Docs QR for docs preview
Static pages QR for static pages preview
Integration pages QR for integration pages preview

Integration commands

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#pr-releases/tom/duck-ai-ntp-sidebar

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-sidebar
Pin to exact commit

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#fe126edf8d8e4a5ef7eded2a92f0936df9f63295

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

@github-actions

Copy link
Copy Markdown
Contributor

[Beta] Generated file diff

Time updated: Wed, 17 Jun 2026 13:12:28 GMT

Apple
    - apple/pages/new-tab/dist/index.css
  • apple/pages/new-tab/dist/index.js

File has changed

Integration
    - integration/pages/new-tab/dist/index.css
  • integration/pages/new-tab/dist/index.js

File has changed

Windows
    - windows/pages/new-tab/dist/index.css
  • windows/pages/new-tab/dist/index.js

File has changed

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