Skip to content

feat(tui): add read-only settings view and transcript search - #6246

Merged
bug-ops merged 1 commit into
mainfrom
feat/issue-6024/tui-settings-editor
Jul 13, 2026
Merged

feat(tui): add read-only settings view and transcript search#6246
bug-ops merged 1 commit into
mainfrom
feat/issue-6024/tui-settings-editor

Conversation

@bug-ops

@bug-ops bug-ops commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds a read-only TUI settings view (S key / command-palette entry) with Providers, MCP, and Agents tabs, sourced live from MetricsSnapshot. Provider fields are whitelist-copied so secret values (API keys, Cocoon access hash, Candle HF token) can never reach the view. Edit-in-place is explicitly out of scope for this PR (spec's own recommended v1 boundary).
  • Adds a Ctrl+F in-transcript search overlay mirroring the existing Ctrl+R reverse-search pattern: substring match against message content and tool names, highlight-and-scroll, next/prev cycling, Esc restores prior scroll position, Enter accepts. A match inside a collapsed tool-output block scrolls to a visible anchor. The transcript render cache is bypassed only for actually-matched messages to avoid a full reparse on every keystroke.
  • Both features are zeph-tui-only, read-only, add no new background task, and require no new config.toml keys.

Closes #6024
Closes #6023

Test plan

  • cargo +nightly fmt --check
  • cargo clippy --profile ci --workspace --all-targets --features "desktop,ide,server,chat,pdf,scheduler,testing" -- -D warnings
  • cargo nextest run --config-file .github/nextest.toml --workspace --features "desktop,ide,server,chat,pdf,scheduler" --lib --bins (13527/13527 passed)
  • RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc --no-deps --workspace --features "desktop,ide,server,chat,pdf,scheduler"
  • RUSTFLAGS="-D warnings" cargo check --workspace --all-targets --features desktop,ide,server,chat,pdf,scheduler --locked
  • cargo test --doc --workspace --features "desktop,ide,server,chat,pdf,scheduler"
  • gitleaks protect --staged --no-banner --redact (no leaks)
  • New unit/integration test coverage: 9 reducer-level tests covering all new Action variants (scroll-to-match, Esc-restore, Accept-leaves-scroll, tab/selection navigation), a collapsed-tool-output-block scroll test, apply_provider_switch_metrics/with_settings_metrics/reload_config population tests, ProviderSummary secret-exclusion test, Ctrl+F/Ctrl+R decode-key + mutual-exclusion regression tests
  • .local/testing/playbooks/tui.md and .local/testing/coverage-status.md updated (main repo)
  • Live TUI session (tmux-pty) against the new playbook scenarios — not run in this session; recommended before/during the next CI live-testing cycle

Add a read-only Panel::Settings view (S key / command-palette entry)
listing configured LLM providers, MCP servers, and sub-agent
definitions across three tabs, sourced live from MetricsSnapshot.
ProviderSummary is built via explicit whitelist field-copy so secret
fields can never leak into the view even if ProviderEntry gains a new
secret field later. Metrics are populated from three dedicated sites
(startup, provider switch, config reload) rather than piggybacked on
MCP lifecycle events, so the view stays live instead of stale/empty.

Add a Ctrl+F transcript search overlay mirroring the existing Ctrl+R
reverse-search interaction pattern: case-insensitive substring match
against message content and tool names, highlight-and-scroll (not
filter), next/prev match cycling, Esc restores the pre-search scroll
position, Enter accepts. Routed at the top-level key decoder for
deterministic mutual exclusion with Ctrl+R/command-palette/file-picker.
Scroll-to-match derives from the live-rendered line layout so matches
inside collapsed tool-output blocks scroll to a visible anchor rather
than an assumed-expanded position, and the render cache is bypassed
only for actually-matched messages to avoid a transcript-wide reparse
on every keystroke while search is open.

Both features are zeph-tui only, read-only, and introduce no new
background task (MCP status already flows through the existing
metrics channel; tool-output text is already inline in message
content) and no new config.toml keys.

Closes #6024
Closes #6023
@github-actions github-actions Bot added documentation Improvements or additions to documentation rust Rust code changes core zeph-core crate enhancement New feature or request size/XL Extra large PR (500+ lines) labels Jul 13, 2026
@bug-ops
bug-ops enabled auto-merge (squash) July 13, 2026 20:10
@bug-ops
bug-ops merged commit 345b473 into main Jul 13, 2026
43 checks passed
@bug-ops
bug-ops deleted the feat/issue-6024/tui-settings-editor branch July 13, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core zeph-core crate documentation Improvements or additions to documentation enhancement New feature or request rust Rust code changes size/XL Extra large PR (500+ lines)

Projects

None yet

1 participant