Skip to content

Add directory commands, simplify Pace and fix terminal web links - #81

Merged
merefield merged 7 commits into
mainfrom
feat/session-directory-commands
Oct 10, 2026
Merged

merefield merged 7 commits into
mainfrom
feat/session-directory-commands

Conversation

@merefield

@merefield merefield commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Codexometer did not offer /cd, /cwd or /pwd, so users could neither change nor inspect a session’s working directory through its command browser. Add a directory editor and read-only aliases to the terminal and writable browser interfaces.

/cd resolves absolute, session-relative and home paths, requires an existing local directory, and uses the existing review/confirmation flow. It revalidates the session, target/symlinks and empty server queue, sends only threadId/cwd, and verifies running configuration before reporting success. Directory telemetry/footer and directory-scoped inventories follow live settings rather than captured original metadata. Input widgets continue to pass background telemetry and ticks through. Shared transport validation handles percent-encoding expansion and enforces the decoded 512-character rename and 1,024-character directory limits in both the daemon adapter and browser handler.

Scope: this updates the selected thread’s server directory while retaining its ID/history. It does not reproduce native /cd’s project configuration/trust reload and possible conversation fork. Other attached clients may send directory overrides. The confirmation and documentation explain this difference.

Add docs/slash-command-support.md, a version-matched audit of all 63 registered CLI 0.162.1 command variants plus three aliases (66 upstream command names). It distinguishes implemented/partial/browse-only adapters, missing server workflows, native client UI, debug entries and older documented names, with a reason for each gap and follow-up priorities. Missing commands such as /compact, /fork, /goal, /review, /ps and /stop already have APIs; their Codexometer workflows are missing.

The audit now rates every entry by proposed priority (P1/P2/P3, Defer, Done or Exclude) and implementation complexity (Low to Very high). Each estimate names the next increment and dependencies; delivery order starts with existing-view aliases and read-only diagnostics, then session controls and shared lifecycle/project-context foundations.

Remove the old distance-from-safety Pace view from the terminal and browser, then rename the retained Zone view to Pace. Preserve its consumption-versus-elapsed-time coordinates, diagonal safety line, colours, trace and trend behaviour. Both frontends now offer a single Pace graph. Saved zone selections and legacy browser graph URLs resolve to Pace; persisted preferences and navigation use the canonical pace name.

Terminal session text previously depended on each terminal detecting raw URLs, which failed for wrapped text and macOS mouse capture. Add explicit HTTP/HTTPS OSC 8 links with underlined Markdown labels and visible destinations. Every wrapped line restores and closes its own link and underline, keeping scroll slices clickable without affecting borders or adjacent columns. Local macOS consumes session link clicks before navigation/approval handling and opens the unchanged URL as a literal /usr/bin/open argument; SSH markers disable this fallback. Windows and other platforms retain terminal-owned opening.

Complete inline Markdown links, including optional double-quoted, single-quoted and parenthesized titles, in prose to github.com, openai.com and chatgpt.com, including subdomains matched at domain boundaries, display only the underlined label. Other destinations keep their labels and URLs visible. Bare URLs, code and approval requests preserve their visible text; inline code protects only its matched span so a commit hash beside a link does not prevent cooking; copying and stored action payloads retain the original source. Unsupported schemes, credentials, truncated/oversized targets and supplied OSC links cannot become app-opening actions. Add a translated error if the macOS opener fails.

Recognise the default Terminal.app/Ghostty macOS Option-arrow encodings (ESC b / ESC f) for previous/next history in full session Detail. The fallback is macOS-only and yields to focused reply editors, so word movement remains available while composing. Native Alt-arrow navigation and other platforms retain their existing behaviour; command, queue and schedule editors keep their keys.

Validation:

  • Full Go core suite with race detection/coverage; all 17 locale rendering checks.

  • Go vet and Windows amd64 cross-build.

  • Frontend type/format checks, regenerated embedded assets and all 61 browser tests using installed Chrome.

  • Regression coverage for confirmation/target scope, relative/home paths, whitespace/Unicode, stale directory/state/connection, symlink retargeting, queued messages, pending approvals, server rejection/ignored fields, delayed application, remote environments and live footer fallback after disconnect.

  • Read-only metadata check against the installed daemon confirmed its local environment identifier. Local binary rebuilt.

  • Byte-for-byte comparison of the retained terminal plot with the previous Zone renderer across themes, sizes, consumption levels, trace settings and trend modes; browser regressions cover retained dot/trace coordinates, diagonal safety line, trend clipping/colours and bookmark/preference migration.

  • Link regressions cover exact destinations, domain lookalikes/subdomains, code and approval fidelity, Unicode labels, wrapping/scroll slices, border isolation, truecolour/256-colour rendering, source/clipboard preservation, local/SSH opening scope, literal arguments and opener failure feedback. Tests never launch a real browser.

  • History-key regressions decode real native and macOS terminal escape sequences, verify previous/next/live navigation, preserve editor word movement and isolate other views/editors. Windows application and UI test binaries cross-compile.

  • Command-input regressions cover maximum CJK/four-byte Unicode names, long encoded directory paths, browser list/prepare/commit preservation, invalid UTF-8/escapes and decoded limits. Titled-link tests cover all title delimiters, escaped quotes, angle destinations, exact punctuation/query targets, URLs inside titles, malformed titles and literal/source fidelity.

  • Inline-code regressions reproduce the PR link beside a commit hash and cover code before/after links, mixed backtick lengths, escaped and unmatched delimiters, multiline spans, paragraph/fence boundaries, full Detail modes, colour profiles and original clipboard text.

@merefield merefield changed the title Add session directory commands and audit slash-command support Add directory commands, audit slash support and simplify Pace graphs Oct 10, 2026
@merefield merefield changed the title Add directory commands, audit slash support and simplify Pace graphs Add directory commands, simplify Pace and fix terminal web links Oct 10, 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

Valid editor input can exceed the encoded command cap, and titled Markdown links do not follow the documented rendering behavior.

3 open findings
What changed in this PR

Adds directory commands, consolidates quota graphs under Pace, improves terminal links/history navigation, and documents slash-command coverage.

Changes:

  • Adds confirmed /cd plus read-only /cwd and /pwd.
  • Renames Zone to Pace with preference and URL migration.
  • Adds safe terminal hyperlinks, macOS opening, and Option-arrow history navigation.
File Description
web/​tests/​browser.spec.ts Expands browser regressions.
web/​src/​SessionCommands.svelte Generalizes command input for directories.
web/​src/​Quota.svelte Consolidates quota graph routing.
web/​src/​preferences.svelte.ts Migrates legacy graph preferences.
web/​src/​ConsumptionPace.svelte Retains former Zone visualization.
README.md Documents new behavior.
internal/​web/​dist/​index.html References rebuilt assets.
internal/​web/​dist/​assets/​index-ED7GoxW0.css Adds rebuilt stylesheet.
internal/​web/​dist/​assets/​index-4j3sNB-h.css Removes previous stylesheet.
internal/​web/​dist/​assets/​index-KFu7j0xL.js Adds rebuilt frontend bundle.
internal/​web/​dist/​assets/​index-LUN8vjss.js Removes previous frontend bundle.
internal/​web/​control_commands.go Reports directory-change success.
internal/​web/​control_commands_test.go Tests confirmed directory changes.
internal/​ui/​view.go Displays link-opening failures.
internal/​ui/​view_test.go Updates view coverage.
internal/​ui/​theme.go Removes the Zone view ID.
internal/​ui/​tabs.go Removes the Zone tab.
internal/​ui/​tabs_test.go Updates tab expectations.
internal/​ui/​session_links.go Implements terminal web links.
internal/​ui/​session_links_test.go Tests link rendering and safety.
internal/​ui/​session_links_other.go Disables app opening off macOS.
internal/​ui/​session_links_darwin.go Adds macOS URL opening.
internal/​ui/​session_links_darwin_test.go Tests macOS opening scope.
internal/​ui/​quota_graph.go Retains one Pace graph.
internal/​ui/​quota_graph_test.go Updates graph regressions.
internal/​ui/​preferences.go Migrates saved Zone selections.
internal/​ui/​monitor_working.go Links working-session prose.
internal/​ui/​monitor_history.go Adds links and macOS history keys.
internal/​ui/​monitor_history_test.go Tests history key encodings.
internal/​ui/​monitor_detail.go Links full-detail prose.
internal/​ui/​monitor_context.go Links session previews.
internal/​ui/​monitor_context_modes.go Links expanded contexts.
internal/​ui/​monitor_commands.go Adds directory command editing.
internal/​ui/​monitor_commands_test.go Tests directory review flow.
internal/​ui/​model.go Handles link clicks and failures.
internal/​ui/​meters.go Removes Zone rendering paths.
internal/​ui/​meters_test.go Updates meter-view coverage.
internal/​ui/​english_snapshot_test.go Refreshes presentation snapshot.
internal/​quotagraph/​graph.go Removes transformed Pace segments.
internal/​quotagraph/​graph_test.go Updates segment tests.
internal/​i18n/​locales/​zh-Hans.json Translates link-opening failure.
internal/​i18n/​locales/​tr.json Translates link-opening failure.
internal/​i18n/​locales/​sv.json Translates link-opening failure.
internal/​i18n/​locales/​ru.json Translates link-opening failure.
internal/​i18n/​locales/​pt-PT.json Translates link-opening failure.
internal/​i18n/​locales/​pt-BR.json Translates link-opening failure.
internal/​i18n/​locales/​nl.json Translates link-opening failure.
internal/​i18n/​locales/​nb.json Translates link-opening failure.
internal/​i18n/​locales/​ja.json Translates link-opening failure.
internal/​i18n/​locales/​it.json Translates link-opening failure.
internal/​i18n/​locales/​fr.json Translates link-opening failure.
internal/​i18n/​locales/​fi.json Translates link-opening failure.
internal/​i18n/​locales/​et.json Translates link-opening failure.
internal/​i18n/​locales/​es.json Translates link-opening failure.
internal/​i18n/​locales/​en-GB.json Adds canonical failure text.
internal/​i18n/​locales/​de.json Translates link-opening failure.
internal/​i18n/​locales/​da.json Translates link-opening failure.
internal/​codex/​session_settings_unix_test.go Extends daemon directory fixtures.
internal/​codex/​session_directory_unix.go Implements directory commands.
internal/​codex/​session_directory_unix_test.go Covers directory validation and telemetry.
internal/​codex/​session_commands.go Adds input metadata fields.
internal/​codex/​session_commands_unix.go Registers and executes directory commands.
internal/​codex/​live_usage.go Applies live working directories.
internal/​codex/​live_usage_test.go Tests runtime directory fallback.
internal/​codex/​daemon_status.go Adds directory snapshot data.
internal/​codex/​daemon_status_unix.go Tracks runtime directories.
docs/​slash-command-support.md Adds the command-support audit.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread internal/codex/session_commands_unix.go Outdated
Comment thread internal/ui/session_links.go Outdated
Comment thread docs/slash-command-support.md Outdated
@merefield
merefield merged commit 0516f57 into main Oct 10, 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