Skip to content

fix(composer): rest on scroll and preserve readable drafts - #402

Merged
rynfar merged 3 commits into
pylonfrom
upstream/2026-09-07-composer-interaction
Sep 7, 2026
Merged

rynfar merged 3 commits into
pylonfrom
upstream/2026-09-07-composer-interaction

Conversation

@rynfar

@rynfar rynfar commented Sep 7, 2026 •

Copy link
Copy Markdown
Collaborator

Scrolling long conversations currently leaves the full composer covering reading space. This ports the final upstream composer behavior as one dependency group: desktop scrolling rests the composer, typing or returning to the end expands it, and clicking elsewhere leaves it alone. Multiline drafts and new threads stay expanded.

Pylon keeps its provider-instance locks, quick questions, session queue and harness controls, goal and compaction actions, remote upload behavior, diagnostic errors, and subscription usage. The context strip reserves space for Pylon-specific controls; workspace and branch stay together on the left and usage stays on the right. Native mobile navigation is unchanged; phone-width web behavior and shared settings remain compatible.

Verification: 724 focused tests across 46 files, including a new regression for Pylon session-control widths; affected web, desktop, mobile, server, contracts and client-runtime typechecks; scoped lint and formatting. Integrated client verification covers scroll collapse, blur staying expanded, multiline drafts, return-to-end clearance and narrow widths. Screenshots and a short recording below use synthetic conversation fixtures; no provider turn was started.

Bounded upstream head: 062987b2fb0ef48cc7776d654931bd9f3bcf1f9f. The 27 sources below are resolved: 26 adopted through the final behavior; #9499 is superseded by #10437 removing blur collapse. Subsequent fixes replace temporary implementations. No blur-collapse setting is introduced.

  • e9db39ce05c706122bb747fd5e7e70e1aac78935 — fix(web): align composer notices and stash (#8890)
  • a19f01fc19d209d9962c4bb66372ed9e03e320a9 — feat(web): make context window indicator opt-in (#9190)
  • 5b8445b7a777ab1070aa97b062b1618971073a96 — fix(web): collapse the resting composer (#7855)
  • 044ea8e347d980a215057c325de8335d38f0f9aa — fix(web): stop the resting composer layout loop (#9393)
  • d4ba2a1f11498eae9683f6dc95a08b1c17c29765 — fix(composer): mute fast icon when collapsed (#9451)
  • 126afb56fca56c663f4f40acd46f123ab27eee2b — fix(web): banner buttons no longer expand the resting composer (#9452)
  • d5825e1d2fb1703ced2bbe2661f6a4937dd530bf — fix(web): stop clipping the traits chevron on long Codex effort labels (#9433)
  • 03728361aa7beb9c13da320097450e6fe65aac3e — feat(web): let users turn off composer collapse on blur and scroll (#9469)
  • 77138cf33194a303adfbbd69cc93efa69f84245d — fix(web): dont collapse composer when interacting with bottom row (#9490)
  • c726c30a148c2add6a3ec7f31f54ae48dc5d2f0c — fix(web): keep opencode icon hollow in collapsed composer (#9492)
  • 6382268323f86e01b2d40206bcf33beccb3fb64a — fix(web): let paste expand a resting composer (#9498)
  • 522ebe65a542ace6f22d9ad95f95ef9ade7e87f1 — fix(web): keep the composer open while selecting timeline text (#9499)
  • 0ba06a122bc73f705bfc18875366b4eeb1160992 — fix(web): settle the resting composer layout with a pixel of slack (#9482)
  • 54aef6fbe16f637092505b30bd25230c4b0744d8 — fix(web): restore composer controls as space becomes available (#9539)
  • 3c3e05ccfe34ab7af273f4a4faa72909cafd7a21 — fix(web): measure collapsed model labels at their visible width (#9540)
  • f239b77df93077e40c27cc5c5909e94266571859 — fix(web): close composer menus when their controls hide (#9541)
  • 3e2c1a66f74f0a45768332c360cd3682f61129e1 — fix(web): thread error banner no longer shifts the chat (#9473)
  • 9e1bc36a0843699db54ee28abbdac70584ae8f33 — fix(web): keep the last message visible when the resting composer expands (#9553)
  • f559fe0ba6fb5950bd14a2404f10b9c94b33f696 — fix(web): show context meter in compact composer (#9430)
  • 7d5dc66c151a9ca7bfef45cffc9d3516842c5566 — fix(web): mute composer helper text (#9654)
  • 0de956ed2f92b8a6ead56e1566801db232d365dc — fix(web): refine server update notice (#9744)
  • 8e056a0e5124775b9439751667bac483d7b5320a — fix(web): open composer selectors below controls (#9767)
  • 720e126b761ba0da112d8c68b589d20ab98a7eb0 — fix(web): restore composer expansion after tool calls (#9782)
  • c1d27e593b278e7d997c05efdbcc043bae653e83 — fix(web): keep the composer expanded until the thread can scroll (#9965)
  • ecf3716fd190005b1552957b3c7880ab849a0a65 — fix(web): composer regains focus when you tab back into T3 Code (#10463)
  • a07715c09e2f2b82555ca4221904fd806c770f8e — fix(web): preserve multiline composer drafts during timeline scrolling (#10444)
  • a12589dc0bec60b498e72bdd2190871ee6b5c80d — fix(web): stop collapsing the composer when it loses focus (#10437)
Before After scrolling
Before Resting

Expanded composer with the last message visible · Narrow layout

composer-interaction.webm

Implemented with GPT-6 in the Codex desktop harness.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.8 KiB 13.6 KiB −174 B (−1.2%) 15.1 KiB ✅
Codex Thread snapshot wire 7.1 KiB 7.1 KiB +2 B (+0.0%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.7 KiB 6.5 KiB −176 B (−2.6%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 57.4 KiB 56.5 KiB −910 B (−1.5%) 66.4 KiB ✅
Codex Live turn messages 10 8 −2 (−20.0%) 21 ✅
Claude Total thread wire 13.8 KiB 13.7 KiB −100 B (−0.7%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB +7 B (+0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.6 KiB −107 B (−1.6%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.1 KiB 57.3 KiB −840 B (−1.4%) 66.4 KiB ✅
Claude Live turn messages 8 8 0 (0.0%) 21 ✅

Baseline: e571cb2 · PR result: d31b13c · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 111.2 KiB
  • Claude decoded thread snapshot: 111.9 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@rynfar
rynfar merged commit 304c3dc into pylon Sep 7, 2026
18 checks passed
@rynfar
rynfar deleted the upstream/2026-09-07-composer-interaction branch September 7, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant