Repository navigation
fix(tui): keep the quote rail on wrapped rows of a blockquote - #7144
Merged
Hmbown merged 1 commit intoOct 29, 2026
Merged
Conversation
A blockquote drew its │ rail on the first row only and padded wrapped rows with blanks of the same width, so a quote that wrapped looked as if it ended after one line while the assistant rail beside it carried on. The blanks were there for selection copy: continuation rows reported the rail width as copy_prefix_width because the transcript's rail-scan does not strip spaces. That scan runs on every row and strips the │ spans there as it does on the first one, so draw them on every row and report 0 throughout; copied text is unchanged. blockquote_wraps_with_continuation_rail_indent now expects the rail on each row. Signed-off-by: Lstarsky0 <59827030+Lstarsky0@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Hmbown
pushed a commit
that referenced
this pull request
Oct 30, 2026
…kip ci] Nine user-visible fixes landed on main today without an [Unreleased] line. Adds Fixed entries for: - #7095 save and recovery-checkpoint coalescing and reset-failure fixes (4d974f0, b42759e, c4a4f42, 6a08f03) and interrupted deletion retry (16d42ab), stating the original report is not yet reproduced; - #7133 context inspector effective/zero threshold and disabled state (0bf3158, e908528); - #7115 read-only doctor --probe-local credential check (14a5723); - #7144 blockquote quote rail on wrapped rows, crediting @Lstarsky0 in the Fixed entry, the CHANGELOG Contributors block and docs/CONTRIBUTORS.md. crates/tui/CHANGELOG.md regenerated with scripts/sync-changelog.sh; sync-changelog --check passes; check-contributor-credit.py: 9 contributors since v0.10.2 credited on all three surfaces; git diff --check clean. Co-Authored-By: Claude Opus 5.5 <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.
What and why
A blockquote draws its
│rail on its first row only and pads wrapped rows with blanks of the same width. At 60 columns, before:The assistant rail beside it carries on but the quote's stops, so a wrapped quote reads as one quoted line followed by ordinary text. After:
The blanks were there for selection copy: continuation rows reported the rail width as
copy_prefix_widthbecause the transcript's rail-scan (compute_rail_prefix_width) doesn't strip spaces. That scan runs on every row and strips the│spans there as it does on the first one, so every row now draws the same per-depth spans and reportscopy_prefix_width: 0, which also removes the first-row branch.blockquote_wraps_with_continuation_rail_indentnow expects the rail on each row; its width and re-join checks are unchanged.Issue
No-Issue: a wrapped blockquote loses its rail after the first row; I searched and found no issue for it
How I tested it
mainat 588426d in a pseudo-terminal at 60 columns with an empty HOME and a local mock OpenAI-compatible server replying with a>and a>>quote; the rows above come from those runs.markdown_render.rsintocodewhale-tui-kitwithout touching these functions): with a throwaway test (not part of this PR) that selects a wrapped>and>>quote at 24 columns and callsselection_to_text, both builds copyalpha beta gamma delta epsilon zeta eta theta iota kappa, with no rail characters.cargo nextest run -p codewhale-tui -p codewhale-tui-kit --lib: 13880 of 13886 passed, with the 480 tests whose names matchmarkdown,quote,selectionortranscriptamong them. The 6 failures (status_public_output_and_read_only_state_match_baseline,golden_turn_events_match,model_visible_prefix_bytes_match_goldens,interrupted_session_deletion_keeps_recovery_incomplete_and_can_finish,worker_compacts_past_its_context_window_and_keeps_working,reasoning_effort_uses_one_strict_alias_table_and_legacy_fallback) also fail onmainat 588426d without this change.cargo fmt --all -- --check,cargo clippy -p codewhale-tui -p codewhale-tui-kitwith CI's flags (also on 1.99),cargo check -p codewhale-tui -p codewhale-tui-kit --all-targetsandcargo +1.89.0 check -p codewhale-tui -p codewhale-tui-kit: clean.Checklist
maincargo fmt --allpasses, and tests cover new or changed behaviordocs/features.toml(cargo test -p codewhale-tui --test feature_registrychecks it) — n/a