Config screen agent row clips its model annotation at 110 columns - #173
Merged
Merged
Conversation
The agent row on the Config screen is one unwrapped line — marker, name, provenance, verbs, then a dim `<model … · deep … · plan …>` tail — in a Paragraph with no Wrap, so it clips at the pane's width. Listing every optional verb (#167) grew the built-in claude row from ~98 to ~121 columns, which pushed the model annotation off the end at 110, where it used to fit. The annotation is the half that cannot fall off: it exists so the `{model}` in the dispatch line below reads without opening voro.toml. So it moves onto its own dim continuation line directly under that command, spelled `{model}: opus · deep fable · plan fable` — anchored to the placeholder it explains rather than trailing a row whose length is set by how many verbs an agent happens to define. That costs a line per agent carrying a model map, which the pane's fixed 14-line cap would have paid for by hiding agents off the bottom. The cap goes: the pane now sizes to the rows it has and yields only what the viewers list below needs to keep a row. That list scrolls with its selection and this paragraph does not, so an agent hidden here is the more expensive truncation. Verified in a scratch tmux at 100 columns: the built-in claude row shows every verb and its model map, and six model-carrying agents all render with the viewers list intact. Covered by two ui tests at that width.
The Config screen test asserted the literal `[sessions attach resume message(fork) logs stop plan]`, which pinned a template detail rather than the width it meant to check: #170 dropped `--fork-session` from the built-in claude `message`, so `verbs()` now reports plain `message` and the assertion failed on the pull request's merge with main while passing on the older base the branch was written against. Both assertions now read the expected text off the rendered agent's own row — the bracketed verb list from `verbs`, the annotation from `models` — so the test still fails if the row clips at 100 columns and no longer fails when a template changes what the row correctly says.
MJohnson459
force-pushed
the
task-448-config-model-line
branch
from
August 14, 2026 17:21
ce52cb7 to
b326a07
Compare
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.
The Config screen's agent row was one unwrapped line — marker, name, provenance, verbs, then a dim
<model … · deep … · plan …>tail — rendered in aParagraphwith noWrap, so it clipped at the pane's width. Listing every optional verb (#167) grew the built-in claude row from about 98 to about 121 columns, which pushed the model annotation off the end at 110, where it used to fit.The annotation is the half that cannot be allowed to fall off: it exists so the
{model}in the dispatch line below reads without openingvoro.toml. It therefore moves onto its own dim continuation line directly under that command, spelled{model}: opus · deep fable · plan fable— anchored to the placeholder it explains rather than trailing a row whose length is set by how many verbs an agent happens to define. The name row keeps marker, name, provenance and the verb list, and now fits well inside an ordinary terminal.That costs one line per agent carrying a model map, which the pane's fixed 14-line height cap would have paid for by hiding agents off the bottom — the cost the task called out. So the cap goes: the pane sizes to the rows it has and yields height only for what the viewers list below needs to keep a border and a row. That list is a
Listwith aListStateand scrolls with its selection; the agentsParagraphdoes not, so an agent hidden there is the more expensive truncation.docs/DESIGN.md§9 records the layout and the reasoning in the Config screen paragraph — why the model map earns a line, and why the pane sizes to its rows rather than to a fixed cap.voro agent listat the shell is untouched; nothing truncates there, so its inline spelling stays as it was.Verified two ways. In a scratch tmux at 100x30 (per the
verifyskill, isolated--dbandXDG_CONFIG_HOME), the built-in claude row shows[sessions attach resume message(fork) logs stop plan]and, two lines below it,{model}: opus · deep fable · plan fable— the acceptance criterion. With six model-carrying agents configured (17 lines) all six render and the viewers list keeps its three rows; at 60x10 the pane degrades without panicking and viewers still keeps a row. Twoui.rstests at 100 columns cover both: the existing Config screen test now asserts the verb list and the model line, and a newconfig_screen_shows_every_agent_it_hasasserts six agents all render with the viewers list intact (it fails under the old 14-line cap).cargo test --workspacepasses (469 tests),cargo clippy --workspace --all-targets -- -D warningsis clean,cargo fmt --all --checkis clean.Follow-up filed as #450: the agents pane still hides rows it cannot fit with no indication, on a terminal too short to give it the height it wants.