Skip to content

feat(threads): persist active order across clients - #413

Merged
rynfar merged 2 commits into
pylonfrom
upstream/2026-09-07-active-thread-order
Sep 8, 2026
Merged

rynfar merged 2 commits into
pylonfrom
upstream/2026-09-07-active-thread-order

Conversation

@rynfar

@rynfar rynfar commented Sep 8, 2026 •

Copy link
Copy Markdown
Collaborator

Active threads previously returned to creation order after reload, and moving between sidebar sections required separate actions. Persist their manual order on the server, expose Move up/down on both mobile lists, and support web dragging across Active, Pinned, Settled and Snoozed with explicit destination cues and cancellation cleanup.

Pylon adaptations preserve migration numbering (new migration 057), archived and live snapshots, provider/Prime lifecycle ownership, delegation and attention indicators, draft discard, project filters and older-server capability guards. Hidden and snoozed order keys stay reserved. Bulk shell updates publish once per batch, while optimistic ordering waits for canonical state and receipts.

Validation: 550 focused tests across 20 files; contracts, client-runtime, server (t3), web, mobile and desktop typechecks; scoped formatting, lint, dependency and export checks. Browser checks cover active reorder/reload persistence, active-to-pinned dragging, Escape cancellation, pin removal and cross-device mobile Move up. Native iOS reused the compatible development binary with the new bundle. Screenshots and motion evidence are below.

Bounded upstream head: 062987b2fb0ef48cc7776d654931bd9f3bcf1f9f. All eight sources adopted with no remaining partial scope:

  • 2d645df474f0af5e261edb56a79f7a2a9a2d442e — feat(threads): persist manual active thread order (#9729)
  • 6766e682ac1a0aa33020358ba98707f4f8fee467 — feat(mobile): arrange active threads from both thread lists (#9730)
  • 4023d93bce3f610349fbf38e991f737c1c5e0c98 — feat(web): drag threads across sections with consistent motion (#9731)
  • 9a47c7bd40522977c7df022a5b64759aae7b58e0 — feat(web): simplify sidebar drag destination cues (#9750)
  • 490eb17d31d3037930d0e6b549393e9dbcebde60 — fix(web): clarify sidebar drag dividers and empty targets (#10464)
  • 4e969f3731aaa590889d74274b3b6dced6d86291 — fix(web): keep sidebar drag dividers clear and gestures smooth (#10453)
  • 252df7742047af8a1b859dc652b2f40b639d16b3 — perf(web): keep the sidebar responsive during bulk thread updates (#10413)
  • 5b0c923ea3413c038f32ac4c523ae96863443f9f — feat(web): name the drop action while dragging sidebar threads (#10378)

Before / after web arrangement:

Before After pinning by drag
Before After

Mobile arrangement menu (Move up verified across the connected browser):

Mobile arrangement menu

Drag destination and release motion:

thread-drag.mp4

Implemented and verified by GPT-6 Astra in the Codex desktop harness.

Adapt final upstream thread arrangement and gesture lifecycle stack for Pylon.

Upstream-source: 2d645df474f0af5e261edb56a79f7a2a9a2d442e
Upstream-source: 6766e682ac1a0aa33020358ba98707f4f8fee467
Upstream-source: 4023d93bce3f610349fbf38e991f737c1c5e0c98
Upstream-source: 9a47c7bd40522977c7df022a5b64759aae7b58e0
Upstream-source: 490eb17d31d3037930d0e6b549393e9dbcebde60
Upstream-source: 4e969f3731aaa590889d74274b3b6dced6d86291
Upstream-source: 252df7742047af8a1b859dc652b2f40b639d16b3
Upstream-source: 5b0c923ea3413c038f32ac4c523ae96863443f9f
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 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.7 KiB 13.7 KiB −87 B (−0.6%) 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.6 KiB 6.6 KiB −89 B (−1.3%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 57.3 KiB 56.5 KiB −822 B (−1.4%) 66.4 KiB ✅
Codex Live turn messages 8 8 0 (0.0%) 21 ✅
Claude Total thread wire 13.8 KiB 13.7 KiB −74 B (−0.5%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB +22 B (+0.3%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.7 KiB 6.6 KiB −96 B (−1.4%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 58.2 KiB 57.4 KiB −840 B (−1.4%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 9b8410f · PR result: e3486d2 · 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 6d4bb28 into pylon Sep 8, 2026
18 checks passed
@rynfar
rynfar deleted the upstream/2026-09-07-active-thread-order branch September 8, 2026 17:41
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