Skip to content

FEAT: slash command IntelliSense, detail status line and responsive pills - #75

Merged
merefield merged 19 commits into
mainfrom
feat/dynamic-session-commands
Oct 8, 2026
Merged

merefield merged 19 commits into
mainfrom
feat/dynamic-session-commands

Conversation

@merefield

@merefield merefield commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Session composers now discover available slash commands and their supplied help from the connected Codex app-server. Typing / shows suggestions, /mo filters locally, Up/Down selects, Tab completes and Enter opens the command's options. This works in terminal full detail, selected wide session rows when space permits, and writable web mode. Escape dismisses suggestions without losing the draft.

The same PR fixes attention pills dropping every session name when a few long labels overflow: the layout now shortens the longest names with ellipses first and restores full names as the terminal widens.

Commands

  • Shared Go catalogue and execution adapters keep terminal and web behaviour aligned. Models/reasoning, advertised speed tiers, collaboration modes and allowed permission profiles expose live choices and explicit confirmation for session settings.
  • Skills, apps, MCP servers/tools, hooks and experimental features expose browse-only catalogues with help. Codex has no generic slash-command discovery/execution endpoint; this is a catalogue-backed subset. Plugin lifecycle endpoints and process-wide feature mutations are excluded.
  • Setting choices are revalidated against the loaded idle session before sending. Confirmation expires after 30 seconds; ambiguous writes are not retried. An acknowledgement is described as a requested change for subsequent turns.
  • Successful setting confirmations close the command menu, invalidate cached menus/suggestions and return focus to the composer with a visible success notice. Reopening fetches a fresh catalogue revision; failed confirmations retain the draft/error context and cannot silently retry. Terminal command-browser use preserves any unrelated ordinary draft.
  • Slash text cannot accidentally become an ordinary prompt, steer, queued message or scheduled follow-up. // escapes a literal leading slash; structured question answers retain their existing handling.
  • Live catalogue titles/labels are normalized to one display line without flattening help paragraphs. Setting actions fail closed if their original label changes during normalization, keeping rendered choices and click surfaces aligned. The scheduler's slash-command validation is translated into every supported language.
  • Unavailable browser connections dismiss command menus, invalidate cached options and confirmation state, and preserve the composer draft; recovered commands load a fresh catalogue.

Interface and documentation

  • /statusline opens a local multi-select picker with field ordering, live preview, Apply and Cancel. Preferences persist across launches. Terminal detail highlights status-line values, subdues composer tips (not notices), and reserves a separating blank row above the global footer only when a status line is visible; very short terminals omit it to preserve controls. Shared layout keeps click targets aligned. Browser configuration also works in read-only mode without control requests. This is Codexometer's field catalogue, not a dynamically exposed native Codex CLI enum, and does not modify Codex CLI configuration.
  • Suggestions load asynchronously and appear as a bordered vertical popup above the composer in terminal and web. Only the selected command is highlighted; help stays subdued on one line and truncates with an ellipsis. The list shrinks as typing removes candidates without moving the composer; longer lists scroll within available space, with shared terminal rendering/click geometry. Existing setting-confirmation controls remain in the command browser.
  • Pill sizing retains short names and useful excerpts from long names, with Unicode display widths, stable session IDs and matching click surfaces.
  • Approval grant shortcuts are no longer swallowed when a newly visible approval replaces the focused composer, including when an intervening telemetry/redraw message retires the old working capability before the keypress. The first number only arms the choice, retains ordinary drafts and still requires separate confirmation; held/pasted keys, secret answers and cross-session transitions cannot trigger this handoff.
  • Ordinary composers omit the redundant FOLLOW-UP heading and repeated session identity; the detail-box title identifies the session. The task's existing dots-only activity row appears above FOLLOW-UPS when a queue is visible, otherwise above the input, in full detail and wide session rows. There is no extra animation or composer displacement, and queue hit targets follow the reordered row. Structured questions retain their question/progress heading. The clickable Ctrl+S Schedule/Close Schedule button sits on the subdued key-hint line, reserving its full width before truncating hints; very narrow layouts retain keyboard access when the button cannot fit.
  • Successfully sent steers appear as read-only STEER SENT receipts in the existing follow-up panel until live LATEST GUIDANCE catches up or a positively newer turn supersedes them. Receipts stay scoped to their session across navigation, expose no edit/cancel controls, and are not erased by native queue refreshes. The label is translated into every supported language.
  • Terminal full detail supports Previous/Next/Live controls and Alt+Left/Right to browse ten recent completed prompt/reply excerpts per session. Read-only, asynchronous thread/turns/list summary reads recover fast completions and reload server history; unsupported servers retain observed replies only. The currently viewed reply stays pinned through incoming work and eviction, and Copy/scrolling follow that reply. Live requests remain separately identified, selecting an approval or focusing the composer returns to live detail, and drafts survive navigation. No new on-disk history is introduced; controls adapt to available space and all supported languages.
  • Ordinary queue text and its heading use normal font weight without dimming their theme colours; selected rows and actionable buttons retain stronger emphasis.
  • README and intro post describe the supported subset, shortcuts, scope and fallback behaviour. Generated web assets are included; the local terminal binary has been rebuilt.

Validation

  • Complete Go regression suite.
  • Status-line tests cover multi-selection, ordering, cancellation, persistence, sanitization, narrow layouts and unchanged Copy click targets; browser tests verify read-only configuration makes no control writes.
  • Targeted race tests for async suggestions, command catalogues/confirmations and pill sizing.
  • Svelte/TypeScript and formatting checks; production web build.
  • Full Playwright browser suite, including completion, Escape dismissal, command option help and explicit confirmation.
  • Terminal tests exercise filtering without per-keystroke requests, Tab completion, safe Enter handling, session isolation and rendered click surfaces in full and wide detail.
  • Popup regressions cover shrinking height, stationary composer, scrolling, resizing, empty states and borders; browser tests verify vertical arrangement and filtering without layout shifts.
  • Approval/composer transition regression tests cover full and wide detail, legacy and enhanced keyboards, old confirmations, draft retention and excluded input; targeted race tests also pass.
  • Terminal and browser regressions exercise consecutive setting changes across catalogue revision changes, failed-confirmation draft retention, and late results that must not alter another terminal session's draft.
  • Steer regressions cover full/wide rendering, read-only controls, session isolation, late/failed acknowledgements, repeated identical guidance, native queue refreshes, newer-turn cleanup and telemetry-driven reconciliation.
  • Composer regressions cover idle/working/question row counts, wrapping, responsive click and hover surfaces, narrow widths, localization and stationary scheduler/composer alignment.
  • History regressions cover bounded read-only summary requests, ordering, sanitization, unavailable servers, asynchronous recovery, stale replies, session isolation, pinned-answer eviction, scrolling/copy, draft retention, live approval safety and localized click/hover geometry.

@merefield merefield changed the title FEAT: live slash command IntelliSense and better attention pill sizing FEAT: slash command IntelliSense, detail status line and responsive pills Oct 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved catalogue rendering, disconnected-menu, localization, and Go formatting issues remain.

4 open findings
What changed in this PR

Adds shared slash-command discovery, configurable session status lines, improved attention pills, and steer receipts across terminal and web interfaces.

Changes:

  • Introduces live command catalogues with explicit setting confirmation.
  • Adds persistent, reorderable status-line fields and responsive pill truncation.
  • Tracks steering receipts and improves approval/composer transitions.
File Description
web/​tests/​browser.spec.ts Tests commands and status-line configuration.
web/​src/​StatusLine.svelte Adds web status-line picker.
web/​src/​state.svelte.ts Extends web state types.
web/​src/​Sessions.svelte Renders session status lines.
web/​src/​SessionCommands.svelte Adds web command browser.
web/​src/​SessionActions.svelte Integrates slash completion.
web/​src/​preferences.svelte.ts Persists status-line preferences.
README.md Documents new functionality.
intro-post.md Summarizes new user features.
internal/​web/​state.go Projects status-line data.
internal/​web/​server.go Registers command-control routing.
internal/​web/​control.go Integrates command requests.
internal/​web/​control_commands.go Implements command confirmation API.
internal/​web/​control_commands_test.go Tests command API safety.
internal/​web/​dist/​index.html References rebuilt assets.
internal/​web/​dist/​assets/​index-f6yvkeCn.css Adds generated frontend styles.
internal/​web/​dist/​assets/​index-CIiWCxs0.css Removes obsolete styles.
internal/​ui/​view.go Composites suggestions and footer spacing.
internal/​ui/​preferences.go Persists terminal status fields.
internal/​ui/​monitor_summary.go Adds progressive pill truncation.
internal/​ui/​monitor_summary_test.go Tests responsive pill geometry.
internal/​ui/​monitor_suggestions.go Implements terminal suggestions.
internal/​ui/​monitor_suggestions_test.go Tests suggestion behavior.
internal/​ui/​monitor_steer.go Tracks steer receipts.
internal/​ui/​monitor_steer_test.go Tests receipt reconciliation.
internal/​ui/​monitor_statusline.go Implements terminal status lines.
internal/​ui/​monitor_statusline_test.go Tests status-line behavior.
internal/​ui/​monitor_schedule.go Rejects scheduled slash commands.
internal/​ui/​monitor_schedule_pane.go Adjusts hint emphasis.
internal/​ui/​monitor_queue.go Displays read-only steer receipts.
internal/​ui/​monitor_prompt.go Integrates commands and steer tracking.
internal/​ui/​monitor_context.go Renders command/status panels.
internal/​ui/​monitor_commands.go Implements terminal command browser.
internal/​ui/​monitor_commands_test.go Tests command confirmation flows.
internal/​ui/​monitor_approval_shortcut_test.go Tests approval handoff safety.
internal/​ui/​model.go Adds command/status model state.
internal/​statusline/​statusline.go Defines shared status-line fields.
internal/​statusline/​statusline_test.go Tests normalization and sanitization.
internal/​i18n/​locales/​*.json Translates STEER SENT.
internal/​codex/​session_turn_unix.go Blocks slash steering and queuing.
internal/​codex/​session_stream_test.go Tests guidance identity tracking.
internal/​codex/​session_settings_unix_test.go Extends app-server fixtures.
internal/​codex/​session_queue_unix.go Handles literal slash queue text.
internal/​codex/​session_prompt_unix.go Safely handles slash prompts.
internal/​codex/​session_context.go Adds guidance identifiers.
internal/​codex/​session_context_daemon.go Captures live guidance identity.
internal/​codex/​session_commands.go Defines shared command interfaces.
internal/​codex/​session_commands_unix.go Builds live command catalogues.
internal/​codex/​session_commands_unix_test.go Tests catalogue execution.
internal/​codex/​session_commands_test.go Tests slash escaping.
internal/​codex/​live_usage.go Merges live guidance metadata.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

Comment thread internal/codex/session_queue_unix.go Outdated
Comment thread internal/codex/session_commands_unix.go Outdated
Comment thread web/src/SessionCommands.svelte
Comment thread internal/ui/monitor_schedule.go Outdated
@merefield
merefield merged commit 16ada22 into main Oct 8, 2026
6 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.

2 participants