feat(web): add transcript presentation settings#4481
feat(web): add transcript presentation settings#4481charlielockyer-rice wants to merge 5 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 160179d. Configure here.
| )} | ||
| data-chat-column-maximized-away={rightPanelMaximized ? "true" : "false"} | ||
| data-transcript-text-size={settings.transcriptTextSize} | ||
| data-transcript-width={settings.transcriptWidth} |
There was a problem hiding this comment.
Details summary ignores text size
Medium Severity
ThreadErrorBanner still caps at hardcoded 48rem while living under the new data-transcript-width column. Composer banners now follow --chat-content-max-width, so Narrow/Wide leaves the thread error banner misaligned with the transcript and composer.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 160179d. Configure here.
ApprovabilityVerdict: Needs human review This PR introduces new user-facing presentation settings with cross-cutting UI changes. Additionally, there is an unresolved review comment identifying a consistency bug where ThreadErrorBanner doesn't respect the new width setting. You can customize Macroscope's approvability policy. Learn more. |


Claude Code Desktop already exposes transcript text-size and width controls. This PR brings the same presentation model to T3 Code without changing the existing default.
What Changed
Why
The fixed transcript column can feel too narrow on large displays, while different readers may prefer smaller or larger conversation text. These settings make both adjustable without changing the existing experience for anyone who leaves the defaults alone.
UI Changes
The old fixed presentation corresponds to Medium text / Medium width.
All nine transcript combinations
Validation
vp run --filter @t3tools/contracts typecheckvp run --filter @t3tools/web typecheckChecklist
Note
Add transcript text size and width presentation settings
transcriptTextSizeandtranscriptWidthsettings (each with small/medium/large or narrow/medium/wide options) toClientSettingsSchemaand the General Settings panel UI.data-transcript-text-sizeanddata-transcript-widthdata attributes, which drive CSS variables (--transcript-text-size,--chat-content-max-width) defined in index.css to scale typography and max-width dynamically.sideGutterinstead of computing it from viewport width internally.text-smis replaced by a CSS variable in several timeline components, so font size now follows the user's transcript text size setting rather than a fixed value.Macroscope summarized 160179d.
Note
Low Risk
Presentation-only settings with medium defaults; changes are mostly CSS variables and layout measurement, with schema tests for invalid values.
Overview
Adds transcript text size (small / medium / large) and transcript width (narrow / medium / wide) as persisted client settings, with medium for both as the default so behavior matches the old fixed layout.
Settings & contracts: New
transcriptTextSizeandtranscriptWidthonClientSettings/ patch schemas with validation tests. General settings gets two toggle groups plus reset-to-default wiring in restore-defaults.Chat UI:
ChatViewexposesdata-transcript-text-sizeanddata-transcript-widthon the chat column;index.cssmaps those to--chat-content-max-width(40 / 48 / 64rem) and--transcript-text-size/ compact sizes. Timeline, composer, banners, context strip, and markdown usemax-w-[var(--chat-content-max-width,48rem)]instead ofmax-w-3xl; user/review message text and.chat-markdownscale via CSS variables (headings useemrelative to base).Timeline minimap: Gutter/hit-strip logic no longer assumes a fixed 768px column—it measures the side gutter from the
[data-timeline-root]element and recomputes whentranscriptWidthchanges.Reviewed by Cursor Bugbot for commit 160179d. Bugbot is set up for automated code reviews on this repo. Configure here.