feat(zeph-tui): replace modal @ file picker with inline mention popup - #6659
Merged
Conversation
Typing @ at word-start now inserts the character into the input buffer like any other key and opens a non-modal popup that merely reflects the buffer, instead of the old modal picker that captured every keystroke and swallowed literal @ characters. The popup gains category tabs (All, Files, Skills, Agents): Files reuses the existing background file index, Skills are delivered via a new Channel::send_skill_catalog event (startup + hot-reload), and Agents read from existing runtime metrics. Accepting a selection replaces the whole @query token (not just up to the cursor), so a mid-token accept can no longer corrupt the buffer. The reduce/reduce_inner split adds a fail-closed resync predicate that closes or refilters the picker after any action that could touch the input buffer or session state, including paste and session switching, which the previous modal design could not observe. Closes #6647 Closes #6648
bug-ops
force-pushed
the
feat/issue-6647/inline-at-mention-picker
branch
from
July 27, 2026 20:19
f8a82a3 to
116afa5
Compare
bug-ops
enabled auto-merge (squash)
July 27, 2026 20:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@file picker with a non-modal inline popup: typing@at word-start inserts the character into the input buffer and opens a suggestion popup that reflects the buffer, instead of capturing every subsequent keystroke into a separate filter field (fixes the input-loss race and the inability to type a literal@).All | Files | Skills | Agents. Files reuses the existing background-built file index; Skills are delivered via a newChannel::send_skill_catalogevent (emitted at agent startup and on skill hot-reload); Agents read directly from existing runtime metrics (MetricsSnapshot::agent_definitions), requiring no new plumbing.@queryword rather than just the text up to the cursor, so accepting with the cursor positioned inside an existing mention can no longer corrupt the buffer.reduceis now a thin wrapper aroundreduce_innerplus a fail-closed resync step that closes or refilters an open picker after any action that could plausibly touch the input buffer or session state — including paste and session switching, neither of which the old modal design could observe.specs/084-tui-mention-picker/spec.mdamended in several passes to match the shipped design (this went through three review rounds specifically to close remaining spec/code drift).Closes #6647
Closes #6648
Test plan
cargo +nightly fmt --checkcargo clippy --profile ci --workspace --all-targets --features "desktop,ide,server,chat,pdf,scheduler,testing" -- -D warningscargo nextest run --config-file .github/nextest.toml --workspace --features "desktop,ide,server,chat,pdf,scheduler" --lib --bins(15088 passed, 0 failed)RUSTFLAGS="-D warnings" RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc --no-deps --workspace --features "desktop,ide,server,chat,pdf,scheduler"gitleaks protect --staged --no-banner --redactAppChannel::Tuiforwarding test for the new skill-catalog event (verified by revert-and-rerun to actually fail without the fix).local/testing/playbooks/tui-mention-picker.mdScenario F, not yet run