Skip to content

chore(sync): absorb upstream main through b21d87243 (v0.0.36–v0.0.38 cycles) - #105

Merged
NoahHendrickson merged 135 commits into
customfrom
claude/sync-2026-09-01
Sep 2, 2026
Merged

NoahHendrickson merged 135 commits into
customfrom
claude/sync-2026-09-01

Conversation

@NoahHendrickson

Copy link
Copy Markdown
Owner

Absorbs 133 upstream commits (last sync point: 018d7f2, Aug 28) through b21d872 (Sep 1), spanning the v0.0.36–v0.0.38 release cycles. Notable arrivals: Claude Fable 5.1 (pingdotgg#9078) plus remote Claude model discovery (pingdotgg#9084), the composer banner dock (pingdotgg#8734, pingdotgg#8850, pingdotgg#8855), server-side thread settling (pingdotgg#8600, pingdotgg#8321, pingdotgg#8596), attaching any file to a turn (pingdotgg#8236) and video attachments (pingdotgg#8688), pull request list filters (pingdotgg#8809) and GitHub reference links in markdown (pingdotgg#8812), settings search by detail (pingdotgg#8831), keybinding settings rows (pingdotgg#8532), a searchable sidebar project filter (pingdotgg#5931), project settings from thread menus (pingdotgg#8925), the desktop quit-shortcut confirmation (pingdotgg#9076), the CLI opening projects in the running desktop app (pingdotgg#8824), Electron 43 (pingdotgg#8626), Expo SDK 57 (pingdotgg#8609), a run of server perf fixes (pingdotgg#8187, pingdotgg#8368, pingdotgg#9000, pingdotgg#9024, pingdotgg#9032, pingdotgg#8988), and remote web session cookie isolation (pingdotgg#8085).

Claude Fable 5.1 and the model manifest

The fork had cherry-picked upstream's Fable 5.1 commit (pingdotgg#9078, identical patch-id) in PR #103. Upstream then replaced the hard-coded Claude catalog with remote manifest discovery (pingdotgg#9084). All seven model/provider files in conflict (ClaudeProvider.ts, the ClaudeAdapter and ProviderRegistry tests, ModelManifest.ts + model-manifest.json + test, contracts/model.ts, shared/model.test.ts) resolve to upstream's version outright; the fork carries no customization there. Fable 5.1 and future Claude models now arrive through the remote manifest exactly as upstream ships it, and the fork's own Fable patch is gone.

Resolution highlights

  • 17 conflicted files (12 last time); seven were the model files above, plus the lockfile (regenerated with vp i, fork-only deps re-added).
  • ChatComposer: upstream's render adopted wholesale — ComposerBanner.Dock (banner stack, sync/activity strip, approval/questions/plan drawer, tasks drawer and tab, stash badge) and ComposerSurface.Main — with the fork shell re-seated on top: ComposerShell vessel, box/surface/drag-over markers, the px-2 py-2.5 prompt row, ComposerPromptRow carrying send (now with upstream's attach-files paperclip ahead of it), "Ask anything", design-change pills, no bottom toolbar. The shoulder-clearance machinery is deleted: nothing hangs above the vessel any more. The banner stack and sync status therefore moved out of ChatView into the composer, as upstream did.
  • ChatView: ComposerSurface.Shell/Host adopted; liveness stays on the context-strip pill (upstream's banner item is not rendered); the draft greeting stays on its own centered layer (upstream now parks it bottom-full above the stack); stray file-drop guard kept; ATTACHMENT_ONLY_BOOTSTRAP_PROMPT for design-only sends.
  • BranchToolbar: upstream's ComposerSurface.ContextStrip adopted untouched; COMPOSER_CONTEXT_STRIP_CLASSNAME deleted and the fork's strip flatten re-keyed on [data-slot="composer-context-strip"]. The glass-shell disable rules are re-keyed on the composer-shell/host data-slots, since upstream deleted the CSS classes.
  • Questions card: the stacking rules now target [data-chat-composer-top-drawer] through the dock's two attachment wrappers. Upstream's fix(web): restore unified activity logs and composer banners pingdotgg/t3code#8734 restyle of its own card header is declined (the fork owns the card).
  • Sidebar: client-side auto-settle removed per fix(server): settle threads server-side pingdotgg/t3code#8600 (settledOverride is the only settle signal; changeRequestAutoSettles is gone from client-runtime); confirmAndUnpinThread (feat(web): add toggleable confirmation before unpinning a thread pingdotgg/t3code#7313) adopted behind the draft-row guard; the project-settings context item (feat(web): open project settings from thread menus pingdotgg/t3code#8925) arrives. Upstream's searchable project combobox (feat(web): make the sidebar project filter a searchable combobox pingdotgg/t3code#5931) and fixedHeader are declined per the manifest; the fork's scope row drives upstream's open-state reducer so handleProjectSettings stays upstream's.
  • MessagesTimeline: upstream's working row (worktree-setup shimmer, no step label) with the pixel rain leading it; design-mode chips and upstream's file-attachment rows both render.
  • ChatHeader: overflow-clip breadcrumb adopted; favicon still dropped, project semibold.
  • Overrides: the three model-picker shadows port upstream's unavailable-model and badge changes (fix(opencode): handle child approvals, stops, and model catalogs pingdotgg/t3code#8480, feat(models): discover Claude models from remote manifest pingdotgg/t3code#9084); modelPickerModelHighlights no longer exists upstream. The other four shadows were untouched upstream.
  • Icons: eight new lucide bindings in the Phosphor shim — FileText, FileSpreadsheet → FileXls, Presentation, Mail → EnvelopeSimple, Image, Brain, CalendarArrowDown/Up → SortDescending/SortAscending.
  • ci-runners: the session-logic.test.ts timing raise is retired; upstream fix(web): stop session activity timing test from blocking releases pingdotgg/t3code#8585 dropped that assertion.
  • narrow-workspace-layout: the lightbox is z-[60] now (fix(web): keep image preview above sidebar control pingdotgg/t3code#8811); guard and intent updated, the panel's z-45 sandwich still holds.
  • Mobile: the DraftComposerAttachment rename merged with the fork's checkout-branch import.

Judgment calls to review

  1. Banner dock inside the vessel: system banners, sync status, the drawers and the stash badge now render inside the fork vessel, above the prompt surface and below the context chips. Upstream's attached glass paints its own outline there. Worth a look with a banner, a pending approval, Questions, and a stash entry.
  2. Attach-files paperclip sits in the prompt row beside the 24px send at upstream's icon-sm size; not restyled.
  3. Sort icons: Phosphor has no calendar-with-arrow, so the pull-request "newest / oldest" sorts use sort-direction glyphs.
  4. Questions card stacking was re-targeted to the deeper dock nesting without a browser pass; check the card and prompt still read as one box.
  5. Watched upstream files that merged without conflict (settings panels, desktop window, preview view, index.css) changed silently; the guard suite is green and a fence census found only the intended removals.
  6. No browser pass was done.

Verification

  • vp test run src/__fork_guards__ — 45 files, 377 tests green
  • Web, desktop and mobile typecheck green; .fork/lint-owned.mjs clean (193 files); vp fmt --check clean on every hand-edited file
  • Fork resolver + src/custom + model picker / composerProviderState / PendingUserInputPanel / MessagesTimeline / Sidebar logic and snooze / ChatHeader / BranchToolbar / ChatView logic tests — 78 files, 943 tests green
  • Mobile branch-resolver tests — 5 green
  • git rerere recorded all 17 resolutions

Merge and CI take the full suite from here.

Resolved by Claude Fable 5.1 via Claude Code.

🤖 Generated with Claude Code

ikifar2012 and others added 30 commits August 28, 2026 23:49
…mproving launch times (pingdotgg#5769)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius@mac.lan>
…6011)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
…gdotgg#7313)

Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Julius Marminge <julius@mac.lan>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
PRs pingdotgg#8437 and pingdotgg#8236 crossed: one made stashShortcutLabel a required
ComposerStashMenu prop, the other added a test case without it, so
main fails web typecheck.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Lucenx9 and others added 22 commits September 1, 2026 12:45
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…pingdotgg#9001)

Co-authored-by: Guillermo Casanova <guillermo.casanova.b@gmail.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Six repeat contributors remained unvouched. Add their approved accounts to the trust list:

- `github:ipanasenko`
- `github:nateEc`
- `github:maxwellyoung`
- `github:tsouth89`
- `github:0x4bs3nt`
- `github:Adamulek123`

This change does not modify runtime or workflow logic.

Made by GPT-5.6 Sol in the Codex harness.
Absorbs upstream 018d7f2..b21d872 (v0.0.36–v0.0.38 cycles). Claude
model handling follows upstream's remote-manifest discovery (pingdotgg#9084)
instead of the fork's cherry-picked Fable 5.1 patch; the composer adopts
ComposerSurface + ComposerBanner.Dock with the fork shell re-seated on
top; the sidebar drops client-side auto-settle per pingdotgg#8600.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.3 KiB 13.4 KiB +181 B (+1.3%) 15.1 KiB ✅
Codex Thread snapshot wire 6.9 KiB 6.9 KiB +1 B (+0.0%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.4 KiB 6.5 KiB +180 B (+2.8%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 55.5 KiB 57.0 KiB +1.5 KiB (+2.6%) 66.4 KiB ✅
Codex Live turn messages 9 10 +1 (+11.1%) 21 ✅
Claude Total thread wire 13.3 KiB 13.5 KiB +202 B (+1.5%) 15.1 KiB ✅
Claude Thread snapshot wire 6.9 KiB 6.9 KiB +9 B (+0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.4 KiB 6.6 KiB +193 B (+3.0%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 56.4 KiB 57.8 KiB +1.5 KiB (+2.6%) 66.4 KiB ✅
Claude Live turn messages 9 10 +1 (+11.1%) 21 ✅

Baseline: a938f69 · PR result: b682248 · 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: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

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

The merge re-exposed several fork seams around upstream's banner dock and
working row:

- the prompt frame regained upstream's attached-banner glass (backdrop
  filter, drop shadow, ::after ring) for every banner except Questions;
  shed it unconditionally since the surface owns the fill and hairline
- the Questions drawer kept ComposerBanner.Root's 4px inset on three
  sides; clear all padding, not only the bottom
- the stash tab squeezed the full-width Questions card; the dock stacks
  and the tab rides above the card's right shoulder instead
- "Preparing worktree..." rendered twice: upstream pingdotgg#8922 moved it into
  the timeline working row, so drop the composer control-row copy
- the working-row rain sat baseline-aligned and gapless against the
  timer text after upstream's row rewrite; centre it with an 8px gap
- the shell kept the mode/model row painted under the mobile
  pending-answer cluster, which upstream hides
- BranchToolbar's no-thread branch reuses the liveness strip fallback
  instead of re-rendering it inline with a dead measure ref
- drop the unused PencilRulerIcon import and a redundant guard clause

Guards and manifest intents updated to pin each of these.

Claude Fable 5.1 via Claude Code.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@NoahHendrickson
NoahHendrickson merged commit 3824934 into custom Sep 2, 2026
20 checks passed
@NoahHendrickson
NoahHendrickson deleted the claude/sync-2026-09-01 branch September 2, 2026 04:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. 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.