Skip to content

perf(web): hidden terminal drawers and typing stop doing idle work - #926

Merged
rynfar merged 3 commits into
pylonfrom
upstream/2026-09-30-web-idle-work
Sep 30, 2026
Merged

rynfar merged 3 commits into
pylonfrom
upstream/2026-09-30-web-idle-work

Conversation

@rynfar

@rynfar rynfar commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Two upstream client-performance fixes for work the web app did while idle. Part of #865.

Source Upstream PR Disposition
6989856aa630611dd7d6dcc8cfe9f97456816284 #13686 Adopted. Hidden-but-mounted terminal drawers read only the thread shell instead of subscribing to full thread detail, so their history is no longer held in memory. The active drawer keeps detail, which also covers archived threads that have no shell.
ed57bed8e71b2e89a9350c94bda0dacc71cd4817 #13884 Adapted. Shortcut modifier tracking compares against its own copy and skips the React state dispatch when nothing changed, so ordinary typing no longer re-enters the sidebar tree.

Pylon adaptations

  • Pylon's web tests have no jsdom, which upstream's render regressions need. Rather than add a DOM test dependency, the guard lives in a small createShortcutModifierTracker that the hook delegates to, and the regressions assert on the tracker: a reset by keyup or by paste/blur, then typing and repeated resets report nothing, and the next real modifier reports exactly once.
  • Draft waitForShell/promotion, scoped environment/worktree/PTY metadata, synthetic dictation paste and blur resets, and both sidebars' use of the hook are unchanged.

Verification

  • vp test run src/shortcutModifierState.test.ts from apps/web: 7 tests pass.
  • vp run -F @t3tools/web typecheck: no errors.
  • vp lint / vp fmt --check on the three changed files: no errors (existing set-state-in-effect warnings in ChatView.tsx are on untouched lines).

Limits: no rendered-client pass and no latency measurement; upstream's 195x figure is not claimed for Pylon.

Model: Claude Opus 5.5. Harness: Claude Code in Pylon. Workflow: review-t3-upstream skill.


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

t3dotgg and others added 3 commits September 30, 2026 09:23
… in memory (#13686)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 6989856aa630611dd7d6dcc8cfe9f97456816284)
…ncy improvement (#13884)

Co-authored-by: GPT-6 Astra <noreply@openai.com>
(cherry picked from commit ed57bed8e71b2e89a9350c94bda0dacc71cd4817)
Pylon's web tests have no jsdom, so the dispatch guard from upstream
ed57bed8e71b2e89a9350c94bda0dacc71cd4817 moves into a small tracker the
hook delegates to, and the render regressions assert on that tracker.
@rynfar
rynfar force-pushed the upstream/2026-09-30-web-idle-work branch from 2cc1c77 to efeef4d Compare September 30, 2026 15:23
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Sep 30, 2026
@rynfar
rynfar merged commit d3eb44d into pylon Sep 30, 2026
17 checks passed
@rynfar
rynfar deleted the upstream/2026-09-30-web-idle-work branch September 30, 2026 15:34
@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 14.0 KiB — 15.1 KiB ✅
Codex Thread snapshot wire — 7.3 KiB — 7.3 KiB ✅
Codex Live turn WebSocket wire — 6.7 KiB — 7.8 KiB ✅
Codex Live turn WebSocket decoded — 58.0 KiB — 66.4 KiB ✅
Codex Live turn messages — 9 — 21 ✅
Claude Total thread wire — 14.0 KiB — 15.1 KiB ✅
Claude Thread snapshot wire — 7.3 KiB — 7.3 KiB ✅
Claude Live turn WebSocket wire — 6.7 KiB — 7.8 KiB ✅
Claude Live turn WebSocket decoded — 58.9 KiB — 66.4 KiB ✅
Claude Live turn messages — 9 — 21 ✅

Baseline: unavailable · PR result: efeef4d · 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: 115.7 KiB
  • Claude decoded thread snapshot: 116.4 KiB

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 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.

3 participants