fix(web): keep messages from showing through the composer footer#30064
Problem
Messages scrolling behind the floating composer show through its workspace/branch row and bottom gap, overlapping the footer labels. Fixes #30048.
Change
Add a theme-aware background fade behind the active-thread composer, becoming opaque before the footer. The centered draft composer is unchanged. Existing bottom clearance and scroll behavior stay intact.
Scope and approval
This qualifies as a very small, focused fix for an obvious visual bug: the footer has no background over a scrollable conversation. It changes only the shared web/desktop presentation, with no new setting, workflow, or product default.
Verification
- Reproduced in an isolated Linux web dev client with Replay (dev), a response ending in 24 file bullets, and the persistent composer context strip enabled. Before: bullets overlap the workspace row and bottom gap. After: the same scroll position leaves those areas clear.
- Checked dark/light appearances at 1280px and the narrow layout at 390px. Scrolled both directions and used “Scroll to end”; the final bullet landed fully above the composer (64px clearance). Native macOS/Electron and remote transport were not exercised; both use this same web presentation.
vp run check:changedpassed: format, lint, knip, affected typechecks, 49 tests in three focused files, and the React Compiler check. Per AGENTS.md, the visual fix is proved with captures rather than a new UI test.
Light appearance · Narrow layout · Scrolling and scroll-to-end recording
Reviewed with review-loop: 1 round with GPT-6.1 Sol on xhigh. Reviewer verdict: approved, no findings.
Created with GPT-6.1 Sol in the Codex harness through T3 Code.
Checks
Approvability
Verdict: Approved at 9cab670
Macroscope's review found this PR approvable — Adds a theme-aware fade behind the composer so scrolling messages no longer show through its footer. The change is limited to presentation, leaving composer interactions and product defaults unchanged.
You can add or adjust custom eligibility rules. Learn more.
Note
Reviews paused
It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.
- Last reviewed commit: bdba8b7acf392a3bbedd198d8f4e2d3c5d784a5e
- Latest commit, not reviewed: f1d9ae1fdab311ede96180cc061031b011be7d87
Use the following commands to manage reviews:
@coderabbitai resumeto resume automatic reviews.@coderabbitai reviewto trigger a single review.
Use the checkboxes below for quick actions:
- Resume reviews
- Trigger review
No actionable comments were generated in the recent review.
Walkthrough
-
The non-draft composer overlay now uses a background gradient. Its existing positioning and padding remain unchanged.
Changes: Composer overlay
Layer / File(s) Summary Non-draft overlay background
apps/web/src/components/ChatView.tsxThe non-draft composer overlay adds a background gradient. Estimated code review effort: 1 (Trivial) | ~3 minutes
Change: Bug fix · Severity of issue fixed: Low
Possibly related issues
- pingdotgg/t3code#27512: This issue reports timeline text showing through the context row under the composer during scrolling. The PR adds a background gradient behind the composer.
Merge Risk: External image Minimal · previous review bdba8
-
This is a small visual change that keeps messages from showing through the composer footer. No actionable merge-blocking risk was found.
Pre-merge checks: Passed 4
-
Check name Status Explanation Title check Passed The title clearly and concisely describes the main change: preventing messages from showing through the composer footer. Description check Passed The description includes all required sections. It explains the problem, change, scope justification, verification steps, observed results, visual evidence, limitations, and agent details. Linked Issues check Passed [ #30048] The whole-PR diff changes the active-thread composer overlay inapps/web/src/components/ChatView.tsxto use a theme-aware gradient that becomes opaque before the footer. The draft composer …Out of Scope Changes check Passed The only source change is the composer background gradient in ChatView.tsx. This change directly prevents message content from showing through the composer footer for [#30048]. No unrelated setting,…Full details: Linked Issues check
-
Explanation
[
#30048] The whole-PR diff changes the active-thread composer overlay inapps/web/src/components/ChatView.tsxto use a theme-aware gradient that becomes opaque before the footer. The draft composer branch remains unchanged. Reported verification confirms the last bullet stays above the composer with about 64px clearance, and the reported format, lint, knip, typecheck, focused tests, and React Compiler checks passed.
Full details: Out of Scope Changes check
-
Explanation
The only source change is the composer background gradient in
ChatView.tsx. This change directly prevents message content from showing through the composer footer for [#30048]. No unrelated setting, workflow, product default, or component behavior changed.
-
Finishing Touches
-
Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
External image Recent review info
-
External image Run configuration
-
- Source mode: Auto
- Repository: pingdotgg/t3code
- Branch: main
- File: .coderabbit.config.ts
- Commit: b3fdf2b
- Layers: Repository TS config
- Review profile: CHILL
- Plan: Advanced
- Run ID:
0d5df923-7595-4987-8ad4-84e392744939
External image Commits
-
Reviewing files that changed from the base of the PR and between 1df6a36a4ac5ae08201e1aa93a807aa5ebc15990 and bdba8b7acf392a3bbedd198d8f4e2d3c5d784a5e.
External image Files selected for processing: 1
-
apps/web/src/components/ChatView.tsx
External image Files skipped from review as they are similar to previous changes: 1
-
- apps/web/src/components/ChatView.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.
External image Recent review info
-
External image Run configuration
-
- Source mode: Auto
- Repository: pingdotgg/t3code
- Branch: main
- File: .coderabbit.config.ts
- Commit: b3fdf2b
- Layers: Repository TS config
- Review profile: CHILL
- Plan: Advanced
- Run ID:
0d5df923-7595-4987-8ad4-84e392744939
External image Commits
-
Reviewing files that changed from the base of the PR and between 1df6a36a4ac5ae08201e1aa93a807aa5ebc15990 and bdba8b7acf392a3bbedd198d8f4e2d3c5d784a5e.
External image Files selected for processing: 1
-
apps/web/src/components/ChatView.tsx
External image Files skipped from review as they are similar to previous changes: 1
-
- apps/web/src/components/ChatView.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.
-
Note
Written by gpt-6.1-sol on behalf of Maria
Verified in a real dev environment
Verified unchanged head 9cab670a6b6fabea94bbad4f8e40a43d3b50bb7c in Linux Chrome, driven with Playwright from the repository dependencies.
- Started
github/main(cefb544af3c9) in a separate worktree aftervp i. Created a project pointing at a real git repository through the app, selected Codexgpt-6.1-sol, and submitted a real turn requesting 40 markdown bullets. Enabled the persistent composer context row in Appearance settings. Main reproduced message text overlapping the workspace row and bottom gap. - Stopped main's dev server before starting this exact PR head after
vp i. Preserved the app-created conversation in isolated dev state. At the same 1280×900 viewport and scrollTop 972, the footer stays clear. The overlay becomes opaque halfway down. - Clicked Scroll to end: the final bullet ends at y=664 and the overlay starts at y=728.5, leaving 64.5px clearance. Scrolling both directions still works.
- Checked light appearance and a 390×844 narrow web viewport. Opened the footer branch picker, entered and cleared a draft, and inspected the unchanged centered new-thread composer.
- Submitted a follow-up through the PR's web composer using real Codex
gpt-6.1-sol; its completed reply appeared in the conversation. vp run check:changed cefb544af3c98224874419198c0359b652ca3c94passed throughblacksmith-check: format, lint, knip, affected typechecks, 49 tests in three files, and React Compiler coverage. The worker needed its shallow history deepened and Chromium installed before the successful run. Existing CI also reports 30 successful checks.
Main, before:
main: message bullets overlap the composer footer
PR, same conversation and scroll position:
pr: composer footer stays clear
Scroll to end, with the last bullet fully above the composer:
pr: final bullet has 64.5px clearance above the composer overlay
Light appearance:
pr: footer stays clear in light mode
Narrow web layout:
pr: clear footer at 390px width
Scrolling, scroll-to-end, footer branch picker, and draft entry. The animation below uses the inspected 12.5-second recording. The uploaded MP4 was also checked for playback and seeking:
pr: scrolling and composer controls in the real web client
Not verified
Native Electron on macOS or Windows, native iOS/Android, remote relay/tunnel connections, and providers other than Codex were not exercised. The 390px capture is the web client, not a native mobile client.
No source changes were needed.
Merged current main
Note
Written by claude-opus-5-5 on behalf of Maria
Merged github/main (ef81fd15ca) at 87aa560eb9 with a merge commit. The one conflict was the composer overlay class in ChatView.tsx: kept main's [@media(max-height:34rem)]:items-end on the draft branch and this PR's fade on the active-thread branch. vp run check:changed passed through blacksmith-check (format, lint, knip, typecheck, 49 tests, React Compiler), and all CI checks are green on the new head. The captures above predate the merge and were not retaken.
Added 3 commits
Evidence
Real web app, Chromium, 1280×800 CSS pixels, light theme, fresh synthetic git project on each commit. Enable persistent composer context, open a completed replay response ending in file-path bullets, scroll text behind the footer, then click Scroll to end.
Base shows file-list text through the workspace row and bottom gap. Head covers both areas. The final bullet remains fully readable after Scroll to end on both commits.
Reproduction instructions · Synthetic seed script · Browser driver
AI-assisted; verified with the tests and tools listed above.
Not shown:
- Remote workspace connection was not exercised; the reproduction used a local synthetic git workspace.
- Desktop shell, mobile clients, dark theme, and scrollbar dragging were not exercised.