feat(ui): [AGENTS] left-panel box + single-source slash commands - #553
Merged
Conversation
Merge the parallel name-only and (name, description) lists into one slash_commands() -> Vec<(name, desc)>. slash_command_names() (tab completion, is_known_slash_command) and slash_command_descriptions() (the /help render) both derive from it, so adding a command is now one list entry plus one handle_slash match arm instead of three synchronized edits across two lists. name<->description drift is now structurally impossible; the old bidirectional drift test is replaced by a no-duplicate-names guard, the only residual copy-paste hazard. /help renders "name description".
Renders a fourth left-panel box listing running agents (hardcoded placeholder names for now). Reserves its height in the ACTIVITY sizing calc so it isn't crowded out on short panels, mirroring the existing git_reserve logic. Agent-status data will be plumbed through LeftPanelInfo in a follow-up.
Follow-up to abcab0f, which added a placeholder [AGENTS] box with
hardcoded names. Thread the actual subagent profile name through the
data flow and collapse the separate subagent region into the vitals
card.
- task.rs: SubagentChatEvent::Spawn gains `agent: Option<String>`,
populated from args.agent at both spawn sites.
- agent_io.rs: forward `agent` into the panel-row store.
- state.rs: subagent_panel_rows simplifies from id -> (state, prompt,
files) to id -> Option<String> (agent name).
- panel_data.rs: SubagentStatusRow collapses to { id_short, agent };
drop the prompt/files fields and the path-extraction helper.
- panels.rs: remove the split layout (── agents ── region, height
reservation/capping, paint_subagent_list). LeftPanel::render is now a
single paint_idle_card call that renders [AGENTS] inline below [GIT].
- text.rs: remove tail() and extract_file_paths_from_prompt() (only the
deleted renderer used them).
- mod_tests.rs: idle test asserts the · (none) empty-state placeholder
instead of the old hardcoded names.
Net -291/+118. Build clean, 560 ui tests pass.
Collaborator
|
thanks, if you could fix that rustfmt I can merge it in after |
Fixes the rustfmt CI failure on PR dirge-code#553. Pure formatting, no behavior change: expands the over-long tuple/struct-literal lines that rustfmt wanted on multiple rows, and collapses the short slash_command_names iterator chain to one line.
Contributor
Author
|
@yogthos pushed the latest changes, fixed the rustfmt :) |
yogthos
pushed a commit
that referenced
this pull request
Jun 30, 2026
[AGENTS] left-panel box listing running subagents (id_short disambiguates same-profile rows), slash commands unified to a single source of truth, critic scoped/disabled for read-only and design prompts, and the 0.14.0 (#547) duplicate-output regression fixed by gating stream-chunk retry on !committed again. Plus a README note on building with newer libclang. (#548, #549, #552, #553, #554)
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
Two UI improvements bundled on this branch. Both build clean, pass
cargo clippy --all-targets(incl. the #540 gate), and pass the full suite (3201 tests, 0 failures) against currentmain.1.
[AGENTS]box in the left panelAdds a fourth left-panel box below
[GIT]listing running subagents, with the profile name threaded through the whole data flow:SubagentChatEvent::Spawngainsagent: Option<String>, populated fromargs.agentat both spawn sites (task.rs).agent_io.rsforwardsagentinto the panel-row store.state.rs:subagent_panel_rowssimplifies fromid -> (state, prompt, files)toid -> Option<String>(agent name).panel_data.rs:SubagentStatusRowcollapses to{ id_short, agent }; the old prompt/files fields and the path-extraction helper are dropped.panels.rs: the split── agents ──region (height reservation/capping,paint_subagent_list) is removed.LeftPanel::renderis now a singlepaint_idle_cardcall that renders[AGENTS]inline below[GIT].text.rs: removestail()andextract_file_paths_from_prompt()(only the deleted renderer used them).Empty state renders
· (none).2. Single source of truth for slash command names + descriptions
Merges the parallel name-only and
(name, description)lists into oneslash_commands() -> Vec<(name, desc)>.slash_command_names()(tab completion,is_known_slash_command) andslash_command_descriptions()(the/helprender) both derive from it, so adding a command is now one list entry plus onehandle_slashmatch arm instead of three synchronized edits across two lists.Name↔description drift is now structurally impossible; the old bidirectional drift test is replaced by a no-duplicate-names guard (the only residual copy-paste hazard).
/helprendersname description.Test plan
cargo buildcargo clippy --all-targetscargo test— 3201 passed, 0 failed