Conversation
Add ui.tab_bar_position, ui.show_clock, and ui.prefix_hint to the versioned config reference so it stays in sync with the config model.
…ts (tvaintrob#1) Adds a new configurable keybinding `next_blocked_agent` that focuses the next agent in blocked state, wrapping around when reaching the end. This allows quickly jumping to agents that need human input without cycling through idle/working agents. Configuration (in config.toml): [keys] next_blocked_agent = "prefix+shift+n" Co-authored-by: tamir altshuler <tamir@tamirs-MacBook-Pro.local> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Long agent titles are hard-truncated in the sidebar, so anything past the
panel width is unreadable. Adds an opt-in `max_rows` to the inline token
style, letting a token continue onto indented continuation rows instead:
[ui.sidebar.agents]
rows = [
["state_icon", { token = "terminal_title_stripped", max_rows = 2 }],
[{ token = "workspace", dim = true }, "tab"],
]
Defaults to 1, so existing configs render byte-identically.
Wrapping happens during row resolution, which is what agent entry height
is derived from, so scroll geometry, visible-count and hit testing pick
up the continuation rows without separate bookkeeping. The budget-sharing
logic is extracted into token_layout() and shared by both the wrap and
render paths so the wrap width matches the budget the renderer will use;
otherwise the two disagree and text is double-truncated.
Wraps on whitespace where possible and hard-splits a single overlong
word, using the unicode-width helpers so CJK titles stay correct. The
last permitted row still truncates with the existing ellipsis.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Long agent titles are hard-truncated in the sidebar, so anything past the panel width is simply unreadable. This adds an opt-in
max_rowsto the inline token style, letting a token continue onto indented rows instead.Before / after at 26 columns:
Design
max_rowslives on the existing inline token style (alongsidefg/bold/dim) rather than as a new sidebar-level key, so it composes with what's already there and stays opt-in per token occurrence. Defaults to 1, so existing configs render byte-identically.Two implementation notes worth reviewing:
agent_entry_height_in_body()derives entry height fromresolved_agent_rows(...).len(), and scroll math, visible-count and hit testing all read from that. Emitting continuation rows there means those all follow automatically instead of needing parallel bookkeeping.resolved_token_spansintotoken_layout()and used by both paths. If they disagree, text gets double-truncated or overflows.Wraps on whitespace where possible, hard-splits a single overlong word, and uses the existing unicode-width helpers so CJK titles stay correct. The last permitted row still truncates with the normal ellipsis.
Tests
5 added: default-unchanged, wrapping onto an indented row, entry height growing by exactly the continuation count (scroll geometry), overlong single word, and config parsing/validation.
cargo test --release --bin herdr -- --test-threads=1→ 2644 passed.cargo clippy --release --all-targetsclean.Known caveats
max_rowsparses on space tokens too (shared struct) but is ignored — space row heights come from a separate path. Documented as agents-only.max_rows > 1and overflows wins; others truncate as before.Depends on #2
masterdoesn't compile undercfg(test)(NextBlockedAgentmissing from a test-only match) andscripts/config_reference_check.pyfails onkeys.next_blocked_agent. Both are fixed in #2. Test counts above were measured with that fix applied locally; CI here stays red until #2 merges.Unrelated pre-existing flake:
pane_graphics_stream::inactive_owner_cancels_idle_stream_and_dispatches_closefails intermittently even serially and passes consistently in isolation.🤖 Generated with Claude Code