Repository navigation
🤖 feat: status bar for the Agent interface status page - #7661
Conversation
Shows the agent's live activity, the last message's delivery state, a collapsible transcript peek and Start here from the agent's last reply, above the sandboxed status page.
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🟢 e2e stories (Haiku): 14 passed22 agent steps · 7 replayed from cache · 15 model calls · 46.3k tokens (24% cached) All 14 tests in 9 files
e2e 0.20.0 · 1m 20s · web · run artifacts 🟢 e2e Electron stories (Haiku): 3 passed3 agent steps · 3 model calls · 8.0k tokens (22% cached) All 3 tests in 3 files
e2e 0.20.0 · 19.4s · electron · run artifacts 🟢 e2e agent repros (Haiku): no tests selectedSpend: $0.00 of the $1.00 cap (proxy ledger) e2e 0.20.0 · 5.4s · 2 targets (web, phone) · run artifacts |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5195e3c86f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…a-controls UAT round 1 minors: the relative time read "just now" for good while the workspace was idle (nothing re-renders the bar), and the transcript toggle named the peek's id while the peek was unmounted.
- armed bash monitors read as waiting, not idle - blank or non-startup runtime details fall back to Starting… - serialized parallel calls name the one that started - an old held input no longer stands in for a newer landed message - peer messages in the peek name their sender and show their text - Start here stays off in its confirmation once a turn starts - Ctrl+Alt+Shift+P shows or hides the transcript peek
The turn guard in openModal and executeStartHere read the same rendered prop as disabled and confirmDisabled, so they added nothing. Moving the history write into appendStartHereBoundary keeps useStartHere under the CRAP floor (CC 15 -> 14).
…nputs Also documents the transcript peek shortcut.
…rovider call The peek shortcut test now opens the Start Here dialog and checks that the chord leaves the peek alone (it passed with isShortcutOwnedElsewhere removed). The serialized-calls test runs two unstarted provider calls, so picking the oldest instead of the newest fails. The busy bar test drops a no-clock-time check that no single change could fail: queued receipts carry no timestamp.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7699c788cc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…tart here's shortcut - The command palette keeps the bar's chords and the view switch, like a dialog (isShortcutOwnedElsewhere checks isCommandPaletteTarget). UAT round 2, S1. - The status bar shows Interrupting… while a Stop is pending, with StreamingBarrier's precedence (Codex P2). - KEYBINDS.STATUS_START_HERE (Ctrl+Alt+Shift+H) opens Start here from the bar. The frame does not forward it: a page script could open the confirmation under the user's typing, where Y confirms (Codex P1). - The status page's bridge forwards the transcript peek chord: Alt chords match the physical key, AltGr stays the page's text, and the host replays code and Alt (Codex P1). The bar's chords also skip AltGr on the host.
Moves the isTurnActive check for a stop in progress from the precedence test into the table that owns isTurnActive for every phase.
…ill claimed The bar claims its chord even when it does nothing, as useBarShortcut's comment says; no test pinned it, so returning before preventDefault passed.
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
Pixel's flake check saw two renders of StatusBarMidTurn: the chat's streaming token count read ~15 or ~10. The store refreshes that count on deltas but not on tool-call-start, so the tool call's tokens showed only when no render ran between the two events. The tool call now carries no tokens.
|
@codex review |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
|
@codex review |
🛡️ Codex Security Review · Automatically triggeredSecurity review completed. No security issues were found in this pull request. Reviewed commit: Only the user who started this review can view the report in Codex. ℹ️ About Codex security reviews in GitHubThis is an experimental Codex feature. Security reviews are triggered when:
Once complete, Codex will leave suggestions, or a comment if no findings are found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31248d901f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…uring an armed retry The status bar's Start here confirmation now turns OK off when a newer reply replaces the one it opened for; reopening it confirms the newer reply. An armed or starting auto-retry shows "Retrying…" and counts as a running turn, so Start here stays off until the retry is abandoned.
Summary
Adds a host-rendered status bar to the top of the Agent interface status view (the
artifacts-agent-interfaceexperiment). It shows what the agent is doing right now, whether your last message reached the transcript, a collapsible peek at the latest transcript rows (also onCtrl+Alt+Shift+P), and a Start here action on the agent's last reply (also onCtrl+Alt+Shift+H).Background
The status view lays
status.htmlover the transcript, so feedback on the experiment was:Implementation
agentInterfaceStatusBar.ts: pure helpers.deriveStatusActivity: starting (with the runtime's startup breadcrumb, else Starting…), interrupting (after Stop, until the stream ends, withStreamingBarrier's precedence), compacting, waiting for an answer,Running <tool> · <detail>, thinking, writing a reply, working, retrying (while an auto-retry is armed or starting, asRetryBarriercounts it), waiting on a background monitor, idle, or stopped with an error. It only counts tool rows from the current turn. Of serialized calls it names the one whose execution began (executionStartedAt), and a parallel call that is still running wins over a newer call that finished.deriveLastMessageReceipt: Queued, then Sending…, then In transcript (with the row's clock time, as the transcript shows it). A held input is the receipt only when there is nothing else to show, and the others are counted in a +N held chip. It skips machine-authored user rows.recentTranscriptRows(another agent's message names its sender and shows its payload, not the envelope) andfindStartHereSource. Start Here uses the same eligibility asAssistantMessage: the reply must be settled, not compacted, after the latest boundary, and not a peer message.AgentInterfaceStatusView.tsx: the bar is a leaf that subscribes to the workspace store itself, so stream deltas re-render only the bar and not the page frame. It renders nothing for workspaces the store has not registered. The transcript peek is a sibling capped at 40% of the section. It usescolumn-reverseto follow the tail, so it needs no effect. Its open state persists under a new global key.TOGGLE_STATUS_TRANSCRIPT_PEEK(Ctrl+Alt+Shift+P,Cmd+Option+Shift+Pon macOS) for the peek andSTATUS_START_HERE(Ctrl+Alt+Shift+H) for Start here. OneuseBarShortcuthook listens only while the status page shows. It ignores key repeats and AltGr (which types text), and leaves the chords to dialogs, the command palette, terminals and remote desktops. The palette check is in the sharedisShortcutOwnedElsewhere, so it also covers the existingCtrl+Shift+Sview switch. Settings > Keybinds and the buttons' tooltips list both. No other keybind matches either chord.event.code), since Option changes the key on macOS, and leaves AltGr to the page. The host replays the chord withcodeandaltKey, only from the main pane's status page (STATUS_PAGE_FRAME_CHORDS), and only during the user's own gesture in the focused frame. The Start here chord is not forwarded on purpose: a page script could then open the confirmation while the user types in the page, and the next key would land in the dialog, where Y confirms.useStartHeretakesturnActiveandsourceKeyoptions. The bar passes both. Start here is off while a turn runs (an armed auto-retry counts), also in a confirmation that opened before the turn started: the backend does not refuse a compaction replace during a turn.sourceKeyis the last reply's id: an open confirmation's OK turns off once a newer reply replaces the one it opened for, and reopening it confirms the newer reply. The history write moved intoappendStartHereBoundaryand the gate intouseStartHereGate, which keeps the hook under the CRAP floor. Other callers pass neither option and behave as before.docs/workspaces/artifacts.mdx, plus the regenerated built-in skill content.StatusBarMidTurn(laptop, dark and light) andStatusBarMidTurnPhone.No new dependencies.
Validation
sleep 20bash call with thinking and text phases, at 375 px and 1440 px, in light and dark. It recorded the activity line switching toRunning bash · Sleep twenty21 ms aftertool_use, then back to Idle aftermessage_stop, Queued changing to In transcript, the Start here modal adding a context boundary, and no horizontal overflow at 375 px.Ctrl+Alt+Shift+Hopens the same confirmation as the button, but not mid-turn, not with focus in the page and not from the page's own script; and Interrupting… shows after Stop until the stream ends (about 86 ms during bash, 230 ms during thinking). After round 3, only 2b9b606 changes production code. Round 4 on 2b9b606 passed all four cases. During an armed auto-retry (HTTP 529, up to attempt 6) the bar read Retrying… and Start here stayed off (the button, the chord and an open dialog's OK) until Stop or Esc, and then read Stopped with an error. A retry that succeeds goes on to Writing a reply… and Idle. An open Start Here confirmation turned OK off within about 100 ms of a newer turn and kept it off after the turn ended; Cancel and reopen confirmed the newer reply, and the saved boundary holds its text.codeandaltKey, the interrupting flag, the retry state and the pinned source.StatusBarMidTurnrendering two ways: the chat's streaming token count read ~15 or ~10, because the store refreshes it on deltas but not ontool-call-start. The story's tool call now carries no tokens; a local replay of Pixel's capture gave identical renders in 10 of 10 runs for both themes.Risks
Low. The bar only appears inside the experimental status view. The page frame, the send confirm strip and the composer are unchanged.
useStartHereis shared with the chat's Start Here; for its other callers the only changes are the extracted history write and gate.Known limitations:
<notification>text in the peek.