Hover tips in the composer#
Every control in the composer area (the environment row above the input
and the control row below it) explains itself on hover with the same
tooltip, HoverTip from components/ui/tooltip.tsx, never the browser's
native title bubble. The tip body is TipBody:
- Title line: what the control is and its current value, for example "Project: fzkuji.github.io", "Permissions: Auto mode", "Thinking effort: Medium", "Chat Agent: deepseek-flash".
- Detail line (muted, optional): the specifics a chip cannot fit, such as a full path, the full branch name and change counts, or what a click does ("Click to turn off.").
The tip appears after the pointer rests for 1.5 s, never while the control's own menu is open, and is wider than the chip (up to 320 px, paths wrap anywhere).
| Control | Title | Detail |
|---|---|---|
| Channel (Local) | Channel: |
where the conversation runs; click to switch |
| Project segment | Project: |
folder path; fixed for this conversation, or click to choose |
| Working-folder segment | Working folder: |
full path; the agent can read and edit it |
| ✕ on a working folder | Remove from this conversation | files on disk stay |
| Git segment | uncommitted files and +/−; worktree path; what the menu offers | |
| Add folder | Add working folder | give the agent another folder |
| Web page chip | Web page: |
whether the agent can use it; click to toggle |
| Page preview chip | Show page preview | bring the page back as a floating preview |
| Goal chip | Goal | the goal text; click for progress and controls |
| Permission badge | Permissions: |
the mode's description |
| Options (+) | Options | attach files, toggle tools / web search / sandbox |
| Tool chips | Tools / Web search / Sandbox / Unattended on | what it does; click to turn off |
| Effort | Thinking effort: |
how long the model thinks; click to adjust |
? in the effort card |
Thinking effort | how long the model reasons; higher levels think longer and use more tokens, lower levels answer faster; Recommended marks the model's default (effort-picker.html) |
| Model badges | Chat Agent / Execution Agent: |
its role; click to change model |
Web page preview header#
The floating page preview over chat (components/center-tabs/web-tab-pip.tsx)
uses the same HoverTip + TipBody on its header buttons. The eight
resize handles keep their aria-labels but show no tip: a bubble popping
up over the page while the pointer skims the edge is noise. The title and
status text are labels, not controls; they keep a native title with the
full text for when they truncate.
| Control | Title | Detail |
|---|---|---|
| Open page | Open page | Switch to this tab in the centre |
| Review request (while the agent waits for approval) | Review request | The agent is waiting for your confirmation |
| More (⋮) | More | Auto-follow, action markers and operation history |
| Close (✕) | Close preview | Hides the preview; the agent keeps working |
Implementation status#
- All rows above: implemented.
- The send button keeps the native
title: it is disabled exactly when its message matters most (paste lost, attachment loading), and a disabled button fires no pointer events forHoverTip. Not migrated. - The Fast toggle keeps its existing hint text. Unchanged by request.