Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
bf60e53
feat(cli): replace inline AgentExecutionDisplay with always-on LiveAg…
wenshao May 7, 2026
474423e
fix(cli): move elapsed + tokens to the front of LiveAgentPanel rows
wenshao May 7, 2026
2d3e07e
fix(cli): switch LiveAgentPanel row to layout C (right-pinned, no fle…
wenshao May 7, 2026
860c4ee
fix(cli): port Claude Code's bullet + arrow visual to LiveAgentPanel …
wenshao May 7, 2026
bfecc09
fix(cli): widen LiveAgentPanel, drop [in turn] marker, point overflow…
wenshao May 7, 2026
b8acd9c
fix(cli): make Down on focused BackgroundTasksPill open the dialog
wenshao May 7, 2026
e9b7698
fix(cli): address Copilot review on LiveAgentPanel — interval gate, g…
wenshao May 7, 2026
1bb1326
fix(cli): address Copilot second-pass review — dialogOpen tick gate, …
wenshao May 7, 2026
dbad3f9
fix(cli): reconcile registry-missing snapshots as just-finished + add…
wenshao May 7, 2026
93036b1
refactor(cli): split LiveAgentPanelBody + drop dead isPending/isWaiti…
wenshao May 7, 2026
0af28b5
fix(cli): map internal tool names to user-facing display names in Liv…
wenshao May 7, 2026
c3d80fc
fix(cli): keep already-terminal snapshots visible until TTL + close 4…
wenshao May 7, 2026
a722d59
refactor(cli): rename FOREGROUND_ROW_PREFIX from `[in turn]` to `[blo…
wenshao May 7, 2026
a28c939
fix(cli): address 4 review findings — height budget, neutral synthesi…
wenshao May 7, 2026
1b0bd3b
fix(cli): ANSI-escape user-controlled strings + restore one-line scro…
wenshao May 7, 2026
ec41da4
fix(cli): paused agents count as active in tally + sync reconciliatio…
wenshao May 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,12 @@ function terminalStatusPresentation(
}

// Foreground agent rows get this prefix so users can tell at a glance
// that cancelling one will end the parent's current turn — a much heavier
// consequence than cancelling a truly async background entry.
const FOREGROUND_ROW_PREFIX = '[in turn]';
// that cancelling one will unblock — and end — the parent's current
// turn, a much heavier consequence than cancelling a truly async
// background entry. `[blocking]` reads more directly than the earlier
// `[in turn]` (which was widely misread as "queued / sequential" —
// the opposite meaning).
const FOREGROUND_ROW_PREFIX = '[blocking]';
const SHELL_ROW_PREFIX = '[shell]';

function rowLabel(entry: DialogEntry): string {
Expand Down Expand Up @@ -1083,9 +1086,11 @@ export const BackgroundTasksDialog: React.FC<BackgroundTasksDialogProps> = ({
const hints: string[] = [];
if (showCancelConfirmHint) {
// Force the confirmation step into the hint row so the user sees
// exactly what the next `x` will do.
// exactly what the next `x` will do. Phrasing matches the
// `[blocking]` row prefix \u2014 "blocking turn" reads as "your input
// is waiting on this", which is what the cancel actually unblocks.
hints.push(
'x again to confirm stop \u00b7 ends current turn',
'x again to confirm stop \u00b7 ends the blocking turn',
'Esc cancel',
);
} else if (dialogMode === 'list') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,14 @@ export const BackgroundTasksPill: React.FC = () => {

const onKeypress = useCallback(
(key: Key) => {
if (key.name === 'return') {
// `return` and `down` both open the dialog. Down completes the
// focus chain Composer ↓ → AgentTabBar ↓ → Pill ↓ → Dialog,
// so users can `↓ ↓ (↓)` their way from an empty composer
// straight into the roster without having to remember the
// Enter shortcut. The LiveAgentPanel's overflow callout
// (`↓ to view all`) relies on this; without a Down handler
// the chain dead-ends at the highlighted pill.
if (key.name === 'return' || key.name === 'down') {
openDialog();
} else if (key.name === 'up' || key.name === 'escape') {
setPillFocused(false);
Expand Down
Loading
Loading