fix(web): keep composer banners readable and stop scroll jumps when the pill mounts - #668
Merged
Merged
Conversation
(cherry picked from commit 4749035bda13b4b6260499caedbc0d69a2f60e6f)
…#12317) (cherry picked from commit fcfd9f911a27ee3b813d64582c53d82dfa2e892b)
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
…on v2 Records DEF-18 for upstream #12302 and #12270. Neither refines anything Pylon has: there is no ActivityGroupTimelineRow, ReasoningTraceBlock or reasoning field in contracts, so adopting them first means adopting #11784 and #12147, a new full-stack capability. Orchestration v2 is unmerged on t3code/codex-turn-mapping and will rewrite orchestration contracts, so the maintainer parked this behind that decision.
Contributor
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Adversarial review found that upstream's non-compact layout renders a permanently visible details popover next to descriptions that can never truncate. Five Pylon banners qualify: environment update, thread woke, snoozed/settled, resume-compaction and auto-balance. Marks them compact, aligns the delegates label with the segment bar's container query, and adds the ComposerBannerStack coverage the flag shipped without.
This was referenced Sep 20, 2026
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.
Ports two upstream web fixes from T3 Code. Part of upstream integration cycle #667, bounded at upstream
b44c1ce5d25ee0d5a5be82e380618a886c19ea96.Sources
4749035bda13b4b6260499caedbc0d69a2f60e6ffcfd9f911a27ee3b813d64582c53d82dfa2e892bBoth applied by
cherry-pick -xwith original authorship retained; each needed one conflict resolved against Pylon's diverged code.Composer banners
Banner stack items gain an optional
compactflag. Compact banners keep the oldwrap-actions-narrowrow layout and the description that collapses into an info popover below 400px; everything else now useswrap-actions, giving the description room to sit beside the title instead of being truncated away. The popover gains an accessible label, a wider max width,wrap-anywhere, and a bounded scroll region so a long description stays readable. Only the two project-clone banners are marked compact, matching upstream.Adaptations
ComposerBanner.Actions: upstream's hunk also carries classes for anapprovalbanner layout. Pylon'sComposerBanner.Rowlayout union is"inline" | "wrap-actions" | "wrap-actions-narrow"— it has noapprovallayout, which arrives in a different upstream commit Pylon has not adopted. Only this source's actual change was applied: the 400pxwrap-actionscase drops-ms-2/justify-startforjustify-end. No dead classes for a layout that does not exist here.ComposerTasksBadge: upstream replacessm:flexwith the container query@min-[560px]:flexon the task segment bar. Pylon's badge is substantially diverged — it renders a delegates label, hides segments while the list is expanded, and usesTaskProgressSegments fitrather than upstream'sTaskSegments. All of that is preserved; only the breakpoint changed.Pylon's other nine banner producers (environment unavailable, server version, background liveness, thread woke/snoozed, resume compaction, branch mismatch, send-environment) are left non-compact, which matches upstream's default for its own equivalents.
Scroll-to-end pill
Publishing the composer overlay height and publishing the scroll-to-end clearance were one callback, and the effect that ran it listed
showScrollToBottomas a dependency. The pill mounts in the same commit that rests the composer, so a fast fling could measure a stale overlay height against the new resting flag, drop the timeline inset reservation and yank the scroll position.publishScrollToEndClearanceis now split out, the height publisher records the last height in a ref, and a separate layout effect recomputes only the clearance when the pill appears.Adaptation
The conflict sat where Pylon inserts
linkedPullRequestStatusandresolveDisplayedThreadPrimmediately after that effect. Upstream's effect split and dependency change were taken; Pylon's pull-request resolution block is preserved unchanged.Not included
592021f008(#12302) andfbc8b96002(#12270) were in this cycle's selection but are not ported here. Both refine upstream's activity-group timeline —ActivityGroupTimelineRow,ReasoningTraceBlock,expandedReasoningMessageIds,isActivityEntry,reasoningMessages— none of which exist in Pylon. Their disposition is tracked in #667; adopting the underlying architecture is a separate product decision, not a catch-up adaptation.Verification
vp test runonComposerBannerStack.test.tsx,ComposerTasksBadge.test.tsx,ComposerPendingUserInputPanel.test.tsx,ChatView.logic.test.ts,MessagesTimeline.logic.test.ts— 5 files, 284 tests passed.vp run -F @t3tools/web typecheck— exit 0.vp checkon the five changed files — 0 errors. The 25 warnings are pre-existing React-compiler notes; the two outsideChatView.tsxare atComposerBannerStack.tsx:71andComposerPendingUserInputPanel.tsx:93, both outside every changed hunk.These are visual changes to banner density and scroll behavior. Browser evidence is not attached — computer use is not authorized for this cycle. Recorded as outstanding in #667.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.