Commit Graph

4614 Commits

Author SHA1 Message Date
Charles Cunningham
d65960d57b tui: restore multi-agents slash alias
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:53 -07:00
Charles Cunningham
90e964fed4 tui: pause replay after personality updates
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:53 -07:00
Charles Cunningham
eb31929288 tui: align slash help subagents naming
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:53 -07:00
Charles Cunningham
39f436fd69 tui: complete legacy sandbox preflight asynchronously
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
51d1e061f8 tui: encode queued resume paths losslessly
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
5ebd3486a8 tui: refresh windows slash help snapshots
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
7e91f70be0 tui: run legacy sandbox preflight before enable
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
027524dac5 tui: classify slash commands by execution kind
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
02f6733dea tui: clear empty-arg slash drafts on dispatch
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
a80a654b04 tui: honor resume cwd prompt exits
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
3b4b48320e tui: route elevated approvals through setup flow
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
295f7fe976 tui: serialize exact resume picker targets
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
7bcff58ea4 tui: reject unavailable queued slash drafts on replay
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
ef2b09c61a tui: preserve selected resume target path
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
648739854e codex: fix windows slash help snapshots (#14170)
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
3a6e3a95be tui: remove dead windows sandbox event
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:52 -07:00
Charles Cunningham
614936d113 tui: fix duplicate windows sandbox import
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
96fe896919 codex: fix CI failure on PR #14170
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
7250e82a9b tui: preserve world-writable warning opt-out
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
d8c0839fc2 tui: reject unavailable queued slash drafts
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
efa6715884 tui: cfg-gate realtime settings draft helper
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
93ead12235 tui: block queued replay behind open popups
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
2268f98488 tui: clean up slash help footer hints
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
e477780626 tui: clear slash help search before closing
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
541bc6ef34 tui: let shift-n go backward in slash help search
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
56c7646161 tui: shorten slash help close hint
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
0727144012 tui: space slash help footer
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
6e20c5af8c tui: refine slash help search controls
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
77e1e8029a tui: add slash help search and status
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
8fbc9d32fd tui: let q dismiss slash help
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:51 -07:00
Charles Cunningham
528e3df3f6 tui: let slash help grow with terminal
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
6a278e943f tui: make slash help dismissible
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
8fda4e0fc2 tui: add slash command help page
Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
ad586ba24c tui: share slash command shlex codec
Centralize slash command draft serialization on top of shlex so popup flows and queued replay use the same quoting and tokenization rules.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
7ea03de12b tui: resume queued replay after idle slash actions
Pause queued replay on local slash actions that need app-side updates or popup dismissal, then resume once the app event queue and bottom pane are idle. Add regression coverage for queued theme replay and popup-gated resume.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
bcb3555e70 tui: reject repeated model modifiers
Track whether /model effort and scope modifiers were provided so repeated sentinel values like default and global are rejected consistently.

Validation: cargo test -p codex-tui; just fix -p codex-tui; just fmt

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
8c45c1acfc tui: canonicalize interactive slash drafts
Route interactive slash-command pickers through canonical serialized drafts so live dispatch and queued replay share one parser/executor path.

Validation: cargo test -p codex-tui; just fix -p codex-tui; just fmt

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
217da0c113 tui: make slash command helpers exhaustive
Switch supports_inline_args() and requires_interaction() to exhaustive matches so newly added SlashCommand variants must be classified explicitly.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
bb3e61843a tui: clarify queue replay stop comment
Explain that the busy-path Stop return in dispatch_command() only matters for live dispatch because queued replay never reaches that branch.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
173d0ef4e3 tui: resolve interactive slash commands before queueing
Mark popup-opening slash commands as requiring interaction, open them immediately instead of queueing bare drafts while a task is running, and make queued replay restore any legacy bare interactive command draft instead of opening UI mid-drain.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
8267155494 tui: document slash dispatch replay contract
Explain above dispatch_command that live callers usually ignore its return value while queued replay uses QueueReplayControl to decide whether draining can continue.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
393740dbed tui: clarify live slash queueing branch
Document that the busy-path queueing in dispatch_command is only reached during live slash dispatch, not queued replay, so the returned drain-control value is effectively a throwaway for that branch.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:50 -07:00
Charles Cunningham
ed546bc217 tui: preserve queued slash draft intent
Serialize custom /review instructions with an explicit custom marker so queued replay cannot reinterpret branch-like text as a structured review target, and rename queued replay to better reflect that it drains inputs until blocked.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
122e1475d5 tui: simplify interrupt status plumbing
Send interrupt ops directly from the bottom pane instead of routing them through the status indicator widget, and remove the now-unused event wiring from the widget and its tests.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
fa50564579 tui: restore interactive slash queue behavior
Keep bare /model and /review interactive while preserving serialized queue replay, restore queued slash drafts into the composer on interrupt, and align queued slash parsing with the same feature-gated lookup used by the composer.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
35e8aa9ce0 Simplify queued slash command replay
Unify queued slash commands as serialized drafts, route popup actions through the same replay path, and stop replay after commands that submit a turn.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
9ab49d2c37 narrow esc interrupts in tui
Limit Esc interrupts to an empty composer when no popup is active, while preserving the pending-steer interrupt path.

This keeps dialog dismissal on Esc working normally without interrupting the running conversation.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
e5f1b8435d queue interactive slash command selections
Keep interactive slash flows usable while a turn is running, and queue the resulting action instead of the bare slash token.

Also let Esc interrupt through popup-active states so queued drafts restore without dropping queued slash actions.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
a8f1f43c1f preserve queued slash actions on interrupt
Restore only queued user-message drafts into the composer when a turn is interrupted, keep queued slash-command actions replayable, and cover the interrupt replay behavior in codex-tui tests.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00
Charles Cunningham
072d5d9e49 remove dead tui helper methods
Drop the unused bottom-pane mention-binding drain helpers introduced by the queueing refactor and switch the affected tests to the existing non-destructive composer mention accessor.

Co-authored-by: Codex <noreply@openai.com>
2026-03-15 23:32:49 -07:00