Skip to content

Implement full-page chat for Ask in new tab and enhance hand-off logic - #3318

Merged
esokullu merged 4 commits into
webbrain-one:mainfrom
esokullu:main
Nov 6, 2026
Merged

esokullu merged 4 commits into
webbrain-one:mainfrom
esokullu:main

Conversation

@esokullu

@esokullu esokullu commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

esokullu and others added 4 commits November 6, 2026 12:47
Ask in the WebBrain new tab used to open the side panel next to an
empty new tab page. It now turns that same tab into WebBrain's
full-page chat, with the question already sent; Back returns to the
new tab. Act still opens the side panel, since it needs a page to work
on.

- New tab: Ask writes the existing per-tab hand-off record and then
  loads src/ui/sidepanel.html?mode=ask&standalone=true&tab=1 in its own
  tab, which claims the record as a side panel would. The new tab
  bundle is rebuilt for both extensions.
- Side panel page, `tab=1` (full-page chat): bound to its own tab
  (tabs.getCurrent), no window scope, and on Chrome it never reports
  itself as the window's side panel, so Act from another tab still
  opens the real panel. The first-open pin coachmark waits for a real
  side panel, since it points at the panel header.
- Agent: full-page chat runs carry `standaloneWebTools`. They keep the
  standalone plain-chat boundary (no page or browser context) but get
  Ask's read-only web tools (fetch_url, research_url, calculate) and
  their own system prompt, and keep their own tool calls in the
  isolated model view. The standalone window and in-browser (WebGPU)
  models stay tool-free. Traces name the prompt standalone_web_chat.
- Docs: docs/newtab.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A side panel already open beside the new tab listens for the same
per-tab hand-off key, so it could claim Ask's record before the
full-page chat loaded: the question was sent in the panel and the chat
came up empty.

Hand-off records now say who they are for (`target`: `tab-chat` for
Ask, `panel` for Act; records without one, from an older new tab, are
the panel's). The receiver takes a `receiver` role (the full-page chat
passes `tab-chat`) and claims only its own records, from the main key
and from the retry slot, leaving the other's exactly as written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Continuing a full-page chat (Continue at the step limit, or a retry
after a failure, which runs through the same path) dropped both
`standaloneChat` and `standaloneWebTools`: the background `continue`
case did not forward them in either browser, and Firefox's
continueAgent did not send them. The continuation then ran as an
ordinary page-aware side panel Ask.

Forwarding them exposed a second problem: the model-visible view hands
the standalone isolation a projected copy of the continued turn (it
adds the task assembled from the genuine user messages), so the
isolation could not find the turn and sent the model an empty
conversation. It now takes the latest standalone-marked user turn
when the persisted object is not there, and carries the projection's
task note onto this turn's content. This also covers standalone
follow-ups the planner folds into the same task.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New tab Ask opens a full-page chat that can read the web
@vercel

vercel Bot commented Nov 6, 2026

Copy link
Copy Markdown

@esokullu is attempting to deploy a commit to the esokullu's projects Team on Vercel.

A member of the Team first needs to authorize it.

@esokullu
esokullu merged commit 6ba8d72 into webbrain-one:main Nov 6, 2026
1 of 3 checks passed
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