Repository navigation
feat(web): add thread width control for orchestrator V2 - #15109
rohan-patnaik wants to merge 5 commits into
Conversation
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a persisted thread-width capability with new controls, cross-component layout changes, and production minimap measurement logic. The default remains unchanged, but the scope and runtime interaction across the conversation UI are substantial enough to warrant human review. You can add or adjust custom eligibility rules. Learn more. |
Signed-off-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
|
Merged current V2 main into |
Signed-off-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
|
Merged current |
|
@coderabbitai full review |
✅ Action performedFull review finished. |
|
@coderabbitai Could you enumerate every failed pre-merge check on current head |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -u
repo=pingdotgg/t3code
sha=12e3d94cf740c3be2a87cbd522d46c3ff937580c
echo '=== PR state ==='
gh pr view 15109 --repo "$repo" --json url,headRefOid,baseRefOid,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,body
echo '=== Exact commit check runs ==='
gh api --paginate "repos/$repo/commits/$sha/check-runs?per_page=100" --jq '.check_runs[] | {id,name,status,conclusion,head_sha,details_url,output}'
echo '=== Exact commit statuses ==='
gh api --paginate "repos/$repo/commits/$sha/statuses?per_page=100" --jq '.[] | {context,state,description,target_url,created_at}'
echo '=== PR reviews ==='
gh api --paginate "repos/$repo/pulls/15109/reviews?per_page=100" --jq '.[] | {user:.user.login,state,commit_id,submitted_at,html_url,body}'
echo '=== PR comments ==='
gh api --paginate "repos/$repo/issues/15109/comments?per_page=100" --jq '.[] | {user:.user.login,created_at,html_url,body}'
echo '=== Inline review comments ==='
gh api --paginate "repos/$repo/pulls/15109/comments?per_page=100" --jq '.[] | {user:.user.login,path,line,commit_id,html_url,body}'Length of output: 31126
There is one failed CodeRabbit pre-merge check: Approvability. It is an approval-policy requirement, not a code defect. The review requires no author-side code, test, or PR-description changes. Failed pre-merge checks
The paths in that explanation identify the feature scope:
Those paths are not defect findings. The review identifies no incorrect behavior or required implementation change. See the full pre-merge explanation. The other four CodeRabbit pre-merge entries passed: Title, Description, Linked Issues, and Out of Scope Changes. The last two passed through skips because no linked issues were found. GitHub checks on this exact headNo published GitHub check run has a
The remaining four check runs succeeded. What blocks mergeGitHub reports Maintainer approval is the sole failed requirement identified by CodeRabbit’s review. Macroscope also retains an eligibility rejection. The skipped prerequisite-dependent checks mean I cannot certify that maintainer approval alone will satisfy every repository merge rule. My generic “Please resolve the failing checks” wording was too broad. It did not mean that you must change code, add tests, or rewrite the PR description. No code defect is recorded in the current review. You are interacting with an AI system. |
|
Thanks for clarifying. For Separately, CI, Web Preview, Mobile Fingerprint Check and Mobile EAS Preview all report |
|
Merged current main ( These checks reused existing dependencies; I have not run a fresh install or a new UI/mobile pass. Scope approval and workflow authorization still need maintainer action. |
|
Merged current main in Maintenance by GPT-6.1-Sol via Codex. |
|
Note Written by Thanks for revisiting thread width on V2. This adds a persistent header slider and finer width choices to the existing Appearance presets. The guide permits focused configuration, and your description cites a maintainer request, so this closure reflects our narrower current review capacity under Read this first. Right now we are only taking focused bug fixes from outside contributors. Please return to the linked discussion for an explicit maintainer decision to take this enhancement before requesting reconsideration. |
Problem
The existing Appearance → Chat width presets control the conversation and composer, but changing width requires leaving the thread and offers only three choices. Wide-screen conversations need finer adjustment while keeping the current Appearance choice as the default.
Change
Adds a header Width control with 0–100% expansion in 5% steps. 0% inherits Appearance; intermediate values expand from that preset; 100% fills the available pane. The device-local preference persists across threads and reloads.
Rebuilt on orchestrator V2 main
fed41fa88, including #2829. The control feeds V2’s existing--chat-content-max-widthcontract so the timeline, composer and ChatCanvas width probe use the same setting. Nested composer surfaces fill the outer lane. Minimap measurements observe the mounted column, reacquire virtualized replacements, and refresh when width changes.Scope and approval
Replaces #12785, following the maintainer’s request for a fresh implementation and verification on V2. Refs #12784 for its width request; its separate Fit tables request remains outside this PR.
This follows the focused configuration route: #11594 established configurable conversation width. This control adjusts that same sizing capability, preserves the default Appearance behavior, and leaves Markdown/table behavior intact. The minimap observation and shared width contract are needed to keep the existing layout and pointer targets correct while adjusting width.
Verification
vp test run apps/web/src/hooks/useThreadWidth.test.tsx apps/web/src/components/chat/{observeTimelineColumn,MessagesTimeline.logic,chatCanvasLayout,timelineMinimapItems}.test.ts: 172 tests pass. Covers preference sharing/persistence/normalization, mounted-column replacement and cleanup, timeline/minimap logic and V2 canvas geometry.vp fmt --check. Scopedvp lintreports zero errors; all 104 component warnings match unchanged main after line-number normalization.fed41fa88: both report the same 140 diagnostics in unrelated tests, principally@effect/vitestexports. No additional diagnostics from this change; the full web typecheck is not green.Width control at 100% · With a side panel open · 12-second interaction recording
All evidence uses synthetic content at 1920×1080 in an isolated dev environment. No provider prompts were sent. Applies to the web UI and the desktop UI that embeds it; the native desktop shell and React Native client were not separately exercised. The preference stays local to the device/browser origin and introduces no provider or wire-contract changes.
Rebuilt and verified with GPT-6.1-Sol (high), Codex harness in T3 Code, adapting the width-only implementation from #12785.