fix(mobile): pin expo-audio so the release smoke patch stays in use - #11426
juliusmarminge merged 1 commit into
Conversation
expo-audio 57.0.5 was published, so a fresh lockfile resolution of ~57.0.4 picks it up and pnpm fails with ERR_PNPM_UNUSED_PATCH for the 57.0.4 patch. The release smoke script regenerates the lockfile from scratch, so it broke on every PR. Pin the exact version like expo-sharing already does. Fable 5.1 via Claude Code in T3 Code
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The change is limited to ignored dependency metadata, pinning the existing expo-audio version and synchronizing the lockfile without altering application logic or introducing user-facing behavior. Its impact is confined to deterministic fresh-install and release-smoke dependency resolution. Notes:
You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review. 📝 WalkthroughWalkthroughThe mobile app now specifies the exact ChangesMobile dependency update
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~3 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to The release smoke patch will remain selected during fresh dependency resolution, with no current merge-blocking risk identified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Independent validation of Independently reproduced the failing dependency-resolution step using isolated copies of the workspace manifests, local archive, and patches listed by Reproduction scripts and recorded results — Model: GPT-6. Harness: Codex. |
## What's Changed * feat(sidebar): fold the project scope into the search row by @maria-rcks in pingdotgg/t3code#11315 * fix(mobile): pin expo-audio so the release smoke patch stays in use by @ipanasenko in pingdotgg/t3code#11426 * fix(web): preserve snapshot preview size in sent messages by @Bil0000 in pingdotgg/t3code#11429 **Full Changelog**: pingdotgg/t3code@v0.0.41-nightly.20260912.1599...v0.0.41-nightly.20260912.1612 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.41-nightly.20260912.1612
apps/mobile declares expo-audio as ~57.0.4 while patchedDependencies carries expo-audio@57.0.4. The release smoke regenerates the lockfile in an isolated root, where ~57.0.4 resolves to the newer 57.0.5 and pnpm fails with ERR_PNPM_UNUSED_PATCH. Pin the dependency to 57.0.4, matching the upstream fix in pingdotgg#11426, so the still-needed patch (error reporting in AudioRecorder.didFinish, not present upstream in 57.0.5) stays applied and frozen installs stay reproducible. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
apps/mobile declares expo-audio as ~57.0.4 while patchedDependencies carries expo-audio@57.0.4. The release smoke regenerates the lockfile in an isolated root, where ~57.0.4 resolves to the newer 57.0.5 and pnpm fails with ERR_PNPM_UNUSED_PATCH. Pin the dependency to 57.0.4, matching the upstream fix in pingdotgg#11426, so the still-needed patch (error reporting in AudioRecorder.didFinish, not present upstream in 57.0.5) stays applied and frozen installs stay reproducible. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> (cherry picked from commit 8830185)
…ingdotgg#11426) (cherry picked from commit 18d8cbf)
Merges `upstream/main` at `0c5771d60` into the fork, from merge base `e81606494` — 32 upstream commits. The range is mostly client polish, plus two structural changes that mattered here: upstream extracted the sidebar header into a new component (`SidebarThreadHeader.tsx`, pingdotgg#11315), which is where two fork gates had to be re-homed, and upstream added a `context` field to orchestration messages at the exact anchor the fork's `origin` field sits on, which is four of the eight conflicts. ## Merge stats - Landed (`HEAD^1..HEAD`): 489 files, 36117+/5930− - Upstream range (base..`HEAD^2`): 484 files, 35784+/5824− - Fork delta (`HEAD^2..HEAD`): 767 files, 78724+/2528− The two file lists reconcile exactly. The 5 extra landed files are all fork-owned and none of them is upstream work: `apps/web/src/fork/SidebarThreadFilter.tsx` (one className, described below), `docs/fork/inventory.json`, `docs/fork/gaps.md`, `docs/fork/upstream-merge-log.md`, and `.agents/skills/fork-upstream-merge/scripts/unsupported-methods.mjs`. Nothing in the upstream range failed to land. ## Conflicts All 8 were resolved by the verdict `preflight.mjs` printed. No `decide` conflict was left unresolved. - `projector.ts`, `orchestration.ts`, `threadReducer.ts`, `MessagesTimeline.tsx` — `converged — message-origin-upstream-files`, and all the same conflict: upstream appended where the fork already appends. Both sides kept, twice per file for the first three. `duplicate-adds.mjs` confirms no line was taken twice. - `Sidebar.tsx` — `converged — thread-visibility-upstream-files`. Took upstream whole; its `SidebarThreadFilter` import was left unused by the extraction and was removed. - `SettingsSidebarNav.tsx` — unlisted. Kept the fork's `settingsPathEnabled` filter over the personal nav items and took upstream's new active-state rule (`/settings/general` stays active on `/settings/open-source-licenses`). - `ChatComposer.tsx` — unlisted, so `decide, then add an entry`. Both fork deltas survived and the entry is now written; see below. - `routeTree.gen.ts` — generated; regenerated with `regen-route-tree.mjs` after the install. `pnpm-lock.yaml` auto-merged rather than conflicting, so it was reset to `upstream/main` and the fork edges re-derived with `vp i`. The remaining diff against upstream is exactly the `@t3tools/moatless-api` workspace link, `mermaid ^11.17.2`, and one alchemy peer hash. Two findings worth naming here: - **A fork gate's host file was replaced by a file upstream had not written yet.** pingdotgg#11315 extracted the whole sidebar header into `apps/web/src/components/sidebar/SidebarThreadHeader.tsx`. Both fork deltas were re-applied there additively — the `FEATURES.projectManagement` gate on New project, and `<SidebarThreadFilter />` as a third child of upstream's new segmented icon well. No props threaded, no state added, no upstream JSX re-indented. The one edit outside that file is `SidebarThreadFilter.tsx`'s trigger className, now `size-7` so it matches upstream's own `SidebarHeaderIconButton` in the well it now sits in. - **The unsupported-method derivation could not read the backend, and that was the script's fault, not a finding.** `unsupported-methods` exited 2 with "could not read the backend dispatch". The Moatless backend moved its dispatch a second time: `crates/t3code/src/rpc/dispatch.rs` is now a module stub over an `rpc/dispatch/` directory whose `routing.rs` holds the arms and whose siblings hold the handler bodies. `BACKEND_APIS` now names the directory and the script concatenates every `.rs` file in it — pointing it at `routing.rs` alone would have read the arms and lost the handlers, and `refusesInside` only follows calls it can find in the same source, so every conditional refusal would have come back as a false DROP. ## Inventory - `moatless-admin-pages` was stale: it still listed the two Workspaces admin routes that the 2026-09-12 commit folded into the project settings page. Re-pointed to the five surfaces that remain, and the untracked delta that move left behind is now its own entry, `project-workspace-settings`. - `chat-surface-gates` gained `apps/web/src/components/chat/ChatComposer.tsx` with a guard on `FEATURES.accessMode`, plus a `chat-composer-gates` path policy so the next merge gets a cached verdict instead of the same decision. The two deltas there are the runtime-mode picker lifted into a `runtimeModePicker` const behind the flag, and `phase === "running"` left out of `collapsedComposerPrimaryActionDisabled`. - `inventory-check.mjs` is clean. ## Unsupported methods 0 ADD, 0 DROP, 2 KEEP (`git.preparePullRequestThread`, `vcs.switchRef`), 5 known exceptions still firing, no stale ones. `packages/contracts/src/rpc.ts` is unchanged: the range's one unsupported-surface change is upstream's Cursor `--classic` launcher fix, which lands on a method already refused. ## Feature classification ### Usable as-is Client-side work the fork can expose with no Moatless backend or deployment change. 28 of the 32 commits. - Open-source license notices page (pingdotgg#8962) — new `/settings/open-source-licenses` route; upstream also made `/settings/general` stay active while it is open. - Client perf: fewer repeated sorts and date formats (pingdotgg#11019). - Inline file previews and attachment chips across surfaces (pingdotgg#11265) — rides `attachments.createUploadUrl` and `assets.createUrl`, both dispatched. - Subagent spawns as an expandable work row (pingdotgg#11433) and those rows kept visible under folded turns (pingdotgg#11474) — derived from the orchestration event stream the backend already serves. - Opt-in thread notifications and sounds (pingdotgg#11481) — client settings, persisted through the `server.getSettings` read the backend serves. - Large pastes folded into text attachments (pingdotgg#11442); user input kept outside collapsed work (pingdotgg#11363); each chat message exposed as a heading for screen readers (pingdotgg#11199); the default diff file state (pingdotgg#11484). - Sidebar project scope folded into the search row (pingdotgg#11315); thread status icons completed and input threads kept prominent (pingdotgg#11461); sidebar search and footer spacing (pingdotgg#11466); draft row heights matched to thread rows (pingdotgg#11512). - Image chips tinted with their average colour (pingdotgg#11468); viewer controls moved outside the media with arrow navigation restored (pingdotgg#11470); snapshot preview size preserved in sent messages (pingdotgg#11429); preview focus preserved on window return (pingdotgg#11444). - Unavailable account limits made more visible (pingdotgg#10601) — web-only; the backend dispatches `server.getUsageSummary`. - Saved environments switched off instead of removed (pingdotgg#11478) — entirely client-side (connection catalog and registry). This build runs one environment and gates the Connections settings page, so nothing on screen changes; the catalog behaviour carries. - Desktop and mobile: long offscreen text in SnapShots (pingdotgg#11250), native preview User-Agent kept for Turnstile (pingdotgg#7110), bounded backend shutdown wait on quit (pingdotgg#7599), expo-audio pinned (pingdotgg#11426), photo library picks rendered to a bounded JPEG off the JS thread (pingdotgg#11440), launch crash with a PR stack (pingdotgg#11486), the shared-content alert after sending (pingdotgg#11487). - Repository hygiene: `.pnpm-store/v11` deleted. ### Unsupported in Moatless / needs implementation - **Cursor links open in classic IDE mode (pingdotgg#11498).** Upstream gave Cursor `baseArgs: ["--classic"]` in `packages/contracts/src/editor.ts` so a file open targets the IDE rather than its Agents Window, and tested it in `apps/server/src/process/externalLauncher.ts`. The method behind it, `shell.openInEditor`, is not dispatched — the browser is not on the machine the workspace is on — so this lands in the contract and in `apps/server` and changes nothing here. Recorded in `docs/fork/gaps.md` under _Opening in an external editor_, whose standing conclusion is that the surface is a candidate for deletion rather than for serving. ### Backend behavior to consider reproducing in Moatless All three are recorded in `docs/fork/gaps.md` under _Runtime fixes upstream made to its own server_. Nothing in this repository holds them open; they are Moatless-side work. - **Listing pull requests should read only the projects asked about (pingdotgg#11299).** `listWorkspaceProjects` fetched the whole shell snapshot and filtered it; it now asks the projection for the one project, or for the listed ids (`apps/server/src/pullRequest/PullRequestService.ts`, `persistence/Layers/ProjectionSnapshotQuery.ts`). Moatless dispatches `pullRequests.summary`, so the same cost lands on it as soon as a summary is derived from a list. - **Usage should read each provider account's own history directory (pingdotgg#11485).** Upstream resolves an account's home from its home setting or its `CODEX_HOME` / `CLAUDE_CONFIG_DIR` / `GROK_HOME` variable, counts disabled accounts, and de-duplicates accounts sharing a directory (`apps/server/src/usage/UsageService.ts`). Moatless serves `server.getUsageSummary` itself, so an account with a custom home reports zero there — or double — until it resolves homes the same way. - **Forgejo and Gitea remotes should be first-class source control (pingdotgg#11436).** Upstream recognises both hosts and drives them with the `fj` and `tea` CLIs across remote identity, PR creation and PR sync (`git/GitManager.ts`, `project/RepositoryIdentityResolver.ts`, `orchestration/PullRequestSyncReactor.ts`). Moatless owns git and pull requests, so a Forgejo or Gitea project is an unrecognised host there regardless of what the client can render. ## Verification `verify.mjs` is green on seven of eight checks: `duplicate-adds` (none across 34 files both sides changed), `tripwires` (3 deleted surfaces intact, exactly the 5 known re-deletions, 3 allowed workflows), `resolution-check` (16 fork-delta paths still differ from upstream, 17 carry upstream's change, 17 theirs-verbatim byte-identical, 18 unlisted), `unsupported-methods`, `fmt:check`, `lint`, `typecheck`. `test` is red on one file, and it is the standing environmental failure rather than a merge regression: - `@t3tools/desktop` → `scripts/browser-secret-native.test.mjs > bundled libsecret helper` fails with `Package 'libsecret-1' not found` from `pkg-config`. 1 file of 105; the rest of the package is 1341 tests passed. The test file is byte-identical to upstream, arrived on the fork before this merge, and the sandbox image ships neither `libsecret-1` nor its pkg-config file. There is no root in the sandbox, so it cannot be installed here. Recorded in `docs/fork/gaps.md` under _The desktop suite needs libsecret, which the sandbox does not have_. Four packages did not finish under `vp run -r test` and were each run alone again, all green: `@t3tools/mobile` (165 files, 1528 tests), `t3` (317 files, 4528 tests), `@t3tools/web` (412 files, 5205 tests), `t3code-relay` (30 files, 284 tests). The owned-concern sweep over newly added upstream files found no keyword hits, so no `concerns` entry was needed. **CI caught one thing no local check runs.** `Build & push moatless-t3` failed on the first push: upstream's new `t3code:third-party-licenses` plugin (pingdotgg#8962) runs in `generateBundle` and refuses any bundled package whose license it cannot resolve, and three packages reach the web bundle only through the fork's own `mermaid` edge — `khroma` via mermaid, `fastdom` and `strictdom` via cytoscape under it — so upstream's config has never carried overrides for them. Fixed with three `packageOverrides` entries: `khroma` needed a `license: "MIT"` declaration only, since it ships its own `license` file, and `fastdom` and `strictdom` needed a `generatedNotice` each, since both declare MIT and ship no notice file. Verified with the build itself — all three now appear in `apps/web/dist/third-party-licenses.json` with a license and a notice, and the workflow is green. The delta is held by the `mermaid-diagrams` inventory entry plus a `third-party-licenses-config` path policy, and the reason it escaped `verify.mjs` — which has no build step at all — is now `docs/fork/gaps.md`, _Nothing builds the web app before a merge is pushed_. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
…ingdotgg#11426) (cherry picked from commit 18d8cbf)
## What's Changed * fix(mobile): show the provider account badge on thread rows by @vitalyiegorov in pingdotgg/t3code#9899 * fix(codex): name the usage limit and its reset instead of relaying "out of credits" by @vitalyiegorov in pingdotgg/t3code#10473 * fix(web): copy selected pull request link from PR page by @maria-rcks in pingdotgg/t3code#10615 * fix(web): keep ref picker steady when opening by @Adamulek123 in pingdotgg/t3code#9472 * fix(web): play pull request videos inline by @maria-rcks in pingdotgg/t3code#10617 * fix(desktop): preserve browser editing shortcuts by @juliusmarminge in pingdotgg/t3code#10621 * fix(web): open pull request markdown links in the panel by @juliusmarminge in pingdotgg/t3code#10623 * fix(mobile): fit the Android splash icon to its circular mask by @juliusmarminge in pingdotgg/t3code#10620 * feat(desktop): add cross-platform window capture by @Bil0000 in pingdotgg/t3code#8103 * fix(web): open proactive panels when entering threads by @maria-rcks in pingdotgg/t3code#10610 * fix(native): wait for the KDE feedback test listener by @juliusmarminge in pingdotgg/t3code#10645 * fix(desktop): resolve local media linked from remote threads by @maria-rcks in pingdotgg/t3code#10619 * fix(web): add bottom padding to project actions header by @flamboh in pingdotgg/t3code#10634 * fix(web): update machines together in auto balance by @maria-rcks in pingdotgg/t3code#10596 * fix(preview): transfer recordings to the agent environment by @maria-rcks in pingdotgg/t3code#10572 * fix(web): navigate markdown images as galleries by @maria-rcks in pingdotgg/t3code#10625 * chore: upgrade to TypeScript 7.0.2 by @juliusmarminge in pingdotgg/t3code#10663 * fix: hide email-bearing account labels in usage limits by @juliusmarminge in pingdotgg/t3code#10668 * fix(web): keep scroll-to-end button close to composer by @Bil0000 in pingdotgg/t3code#10543 * chore(deps): upgrade Effect to rc.112 and Alchemy to beta.76 by @juliusmarminge in pingdotgg/t3code#10652 * chore(refs): sync Effect reference to rc.112 by @juliusmarminge in pingdotgg/t3code#10653 * chore(refs): sync Alchemy reference to beta.76 by @juliusmarminge in pingdotgg/t3code#10654 * fix: generate thread titles with the selected model across connections by @Bil0000 in pingdotgg/t3code#10526 * fix(desktop): enable context menus in the browser by @juliusmarminge in pingdotgg/t3code#10670 * fix(desktop): stop generating declarations during bundling by @juliusmarminge in pingdotgg/t3code#10679 * fix(desktop): restore layout control hit targets by @juliusmarminge in pingdotgg/t3code#10673 * feat(chat): attach files to question answers by @shivamhwp in pingdotgg/t3code#9871 * feat(desktop): refresh macOS installer with aurora artwork by @saphid in pingdotgg/t3code#10632 * fix(server): give completed turns a full session idle window by @StiensWout in pingdotgg/t3code#10689 * feat(web): add pull request merge defaults by @Bil0000 in pingdotgg/t3code#8088 * fix(usage): keep account columns aligned across limit rows by @juliusmarminge in pingdotgg/t3code#10690 * fix(web): chat text no longer shows through a 1px gap under composer banners by @vitalyiegorov in pingdotgg/t3code#10635 * refactor(server): classify runtime exports by @juliusmarminge in pingdotgg/t3code#10274 * refactor(server): classify orchestration exports by @juliusmarminge in pingdotgg/t3code#10275 * refactor(server): classify service exports by @juliusmarminge in pingdotgg/t3code#10276 * refactor(server): classify telemetry exports by @juliusmarminge in pingdotgg/t3code#10277 * refactor(server): classify provider exports by @juliusmarminge in pingdotgg/t3code#10278 * refactor(server): classify source control exports by @juliusmarminge in pingdotgg/t3code#10279 * refactor(server): classify source control registry API by @juliusmarminge in pingdotgg/t3code#10280 * refactor(server): classify preview toolkit exports by @juliusmarminge in pingdotgg/t3code#10281 * ci(knip): enforce server exports by @juliusmarminge in pingdotgg/t3code#10282 * feat(web): add previous/next turn navigation in minimap by @UtkarshUsername in pingdotgg/t3code#8531 * fix(web): stop the settings sidebar shifting when switching pages by @t3dotgg in pingdotgg/t3code#10705 * fix(web): copy terminal selection with Ctrl+Insert by @iamshadmantaqi in pingdotgg/t3code#8541 * fix(web): show the same project icon in the command palette as everywhere else by @t3dotgg in pingdotgg/t3code#10712 * fix(web): stop sidebar rows flashing and shifting on click by @t3dotgg in pingdotgg/t3code#10713 * refactor(web): pass the project record to ProjectFavicon so icons cannot drift by @t3dotgg in pingdotgg/t3code#10714 * feat(web): accept file drops into sidebar threads by @UtkarshUsername in pingdotgg/t3code#7892 * fix(mcp): keep preview snapshots usable by the agent and let it save them by @t3dotgg in pingdotgg/t3code#10501 * fix(server): stop Windows terminal processes when closing by @SunkenInTime in pingdotgg/t3code#10771 * feat(mobile): use Android wallpaper colors by @juliusmarminge in pingdotgg/t3code#10691 * feat(mobile): add optional Material You layout by @juliusmarminge in pingdotgg/t3code#10692 * feat(web): show project favicon in new-thread project picker by @gsimone in pingdotgg/t3code#10790 * fix(desktop): use official logo in macOS installer by @t3-code[bot] in pingdotgg/t3code#10819 * fix(web): honor terminal link browser overrides by @UtkarshUsername in pingdotgg/t3code#10060 * fix(desktop): neutral artwork for stable macOS installer by @t3-code[bot] in pingdotgg/t3code#10820 * fix(web): restore text-only draft project title by @juliusmarminge in pingdotgg/t3code#10821 * refactor(web): consolidate setup wizards into shared components by @juliusmarminge in pingdotgg/t3code#10832 * fix(web): stop the bar under the composer popping in after threads load by @t3dotgg in pingdotgg/t3code#10727 * fix(web): keep the composer footer still while thread data loads by @t3dotgg in pingdotgg/t3code#10768 * fix(desktop): defer keyring loading until macOS cookie import by @simplythatguy in pingdotgg/t3code#10667 * fix(relay): share notification policy and prioritize waiting agents by @juliusmarminge in pingdotgg/t3code#10848 * fix(relay): recheck queued iOS alerts and retain fast completions by @juliusmarminge in pingdotgg/t3code#10849 * fix(mobile): respect notification permission when tokens rotate by @juliusmarminge in pingdotgg/t3code#10850 * fix(mobile): tolerate native Headers without getSetCookie by @juliusmarminge in pingdotgg/t3code#10851 * fix(relay): use current APNs registration routing for queued jobs by @juliusmarminge in pingdotgg/t3code#10859 * fix(server): release consumed event replay pages by @Gigioxx in pingdotgg/t3code#10777 * feat(mobile): arrange threads with drag handles by @juliusmarminge in pingdotgg/t3code#10496 * feat(mobile): add Android agent notifications and ongoing activity by @ryanrhughes in pingdotgg/t3code#10416 * fix(mobile): blur glass fallbacks to prevent background text bleed by @juliusmarminge in pingdotgg/t3code#10964 * feat(web): add provider model bulk toggle by @UtkarshUsername in pingdotgg/t3code#10947 * fix(web): allow expanding duplicate tool call commands by @Yash-Singh1 in pingdotgg/t3code#10981 * fix(mobile): prevent Android chat rows overlapping during sync by @SunkenInTime in pingdotgg/t3code#10983 * fix(mobile): prevent text leaking through Android glass by @juliusmarminge in pingdotgg/t3code#10998 * feat(pull-requests): link multiple pull requests to threads by @juliusmarminge in pingdotgg/t3code#10839 * feat(search): find threads by linked pull request by @juliusmarminge in pingdotgg/t3code#10870 * feat(prs): navigate, merge and rebase GitHub stacks by @juliusmarminge in pingdotgg/t3code#10875 * fix(server): preserve recent PR reads across server restarts by @juliusmarminge in pingdotgg/t3code#11007 * feat(web): zoom and pan expanded images by @maria-rcks in pingdotgg/t3code#10869 * fix(ui): use available space for composer model names by @juliusmarminge in pingdotgg/t3code#11002 * fix(web): restore pr list diff counts to the top right by @maria-rcks in pingdotgg/t3code#10609 * fix(web): show message copy buttons on touch devices by @maria-rcks in pingdotgg/t3code#11020 * fix(web): middle-click pastes in the terminal on Linux by @maria-rcks in pingdotgg/t3code#11018 * fix(editors): open remote projects in Zed by @maria-rcks in pingdotgg/t3code#11022 * feat: add blue and orange diff color palette by @maria-rcks in pingdotgg/t3code#10671 * fix(server): resolve project identity before legacy pr relinks by @t3-code[bot] in pingdotgg/t3code#11045 * fix(mobile): keep Android markdown icons aligned with text by @SunkenInTime in pingdotgg/t3code#11079 * Revert "fix(mobile): keep Android markdown icons aligned with text" by @juliusmarminge in pingdotgg/t3code#11098 * fix(ui): simplify multiple linked pull request badges by @maria-rcks in pingdotgg/t3code#11104 * fix(preview): return to pip when closing the right panel by @maria-rcks in pingdotgg/t3code#11102 * fix: quiet settled threads and simplify PR badges by @juliusmarminge in pingdotgg/t3code#11101 * fix(web): emphasize primary pull request actions by @juliusmarminge in pingdotgg/t3code#11105 * fix(web): prevent seams in the topbar scroll fade by @caezium in pingdotgg/t3code#10914 * fix(web): fit provider update text inside sidebar notices by @MatthewFeroz in pingdotgg/t3code#11034 * fix(web): align floating browser preview corners by @caezium in pingdotgg/t3code#10915 * fix(web): save PR body edits with Cmd/Ctrl+Enter by @flamboh in pingdotgg/t3code#10660 * fix(web): collapse a tool call by clicking its expanded label by @maria-rcks in pingdotgg/t3code#11017 * feat(devices): add simulator and emulator support by @juliusmarminge in pingdotgg/t3code#10677 * feat(devices): scope targets and sessions to their hosts by @juliusmarminge in pingdotgg/t3code#10854 * feat(devices): target concurrent agent sessions across hosts by @juliusmarminge in pingdotgg/t3code#10855 * feat(devices): connect simulator hosts over SSH by @juliusmarminge in pingdotgg/t3code#10856 * feat(web): use a compact right-panel surface menu by @maria-rcks in pingdotgg/t3code#11111 * fix(mobile): keep Android markdown icons aligned by @none23 in pingdotgg/t3code#11118 * fix(mobile): add close controls to tablet files and terminal by @juliusmarminge in pingdotgg/t3code#11115 * fix(mobile): preserve the final composer animation frame by @juliusmarminge in pingdotgg/t3code#11114 * fix(mobile): keep composer transitions aligned by @juliusmarminge in pingdotgg/t3code#11127 * refactor(mobile): name shared markdown renderer without iOS suffixes by @SunkenInTime in pingdotgg/t3code#11128 * fix(media): preserve playback during fullscreen transitions by @maria-rcks in pingdotgg/t3code#11113 * fix(marketing): redirect /app to app.t3.codes by @t3-code[bot] in pingdotgg/t3code#11145 * chore(marketing): update to 300k users and 22k stars by @t3-code[bot] in pingdotgg/t3code#11146 * feat(command-palette): show environments in search results by @Cyberlane in pingdotgg/t3code#10722 * fix(pr): update labels and reviewers without redundant reloads by @maria-rcks in pingdotgg/t3code#11117 * fix(chat): fold question answers into tool activity by @maria-rcks in pingdotgg/t3code#11014 * fix(usage): flag unpriced model activity instead of showing $0.00 by @maria-rcks in pingdotgg/t3code#11021 * fix(server): let Claude launch args override the derived permission mode by @maria-rcks in pingdotgg/t3code#11026 * fix(editors): accept root paths and Windows servers in Zed remote links by @maria-rcks in pingdotgg/t3code#11044 * fix(web): center pull request unavailable states by @maria-rcks in pingdotgg/t3code#11110 * fix(web): remove sidebar pull request link icon by @maria-rcks in pingdotgg/t3code#11179 * fix(ui): color linked pr counts by aggregate status by @maria-rcks in pingdotgg/t3code#11180 * fix(preview): render website favicons for browser tool activity by @maria-rcks in pingdotgg/t3code#11032 * fix(web): simplify pull request summary sections by @maria-rcks in pingdotgg/t3code#10612 * fix(web): preserve drafts when compacting context by @maria-rcks in pingdotgg/t3code#11103 * fix(server): queue messages during context compaction by @maria-rcks in pingdotgg/t3code#11107 * perf(web): format minimap previews only when opened by @juliusmarminge in pingdotgg/t3code#11181 * perf(web): reuse completed Markdown prefixes while streaming by @juliusmarminge in pingdotgg/t3code#11193 * perf(web): resume syntax highlighting from completed lines by @juliusmarminge in pingdotgg/t3code#11196 * perf(web): preserve completed code-line DOM while streaming by @juliusmarminge in pingdotgg/t3code#11198 * perf(web): huge-thread switch no longer blanks the chat pane by @juliusmarminge in pingdotgg/t3code#11169 * fix(web): show platform file manager icons in Open menu by @Bil0000 in pingdotgg/t3code#11228 * fix(server): detect file renames in review diffs by @jakeleventhal in pingdotgg/t3code#8086 * fix(cli): pin shared Effect dependency for npm installs by @jakeleventhal in pingdotgg/t3code#11240 * fix(mobile): prevent Hermes crashes when opening threads by @jakeleventhal in pingdotgg/t3code#11233 * feat(web): open Usage on the Limits tab by default by @juliusmarminge in pingdotgg/t3code#11261 * perf(web): avoid scanning chat history for sidebar backgrounds by @juliusmarminge in pingdotgg/t3code#11206 * perf(mobile): reuse completed code lines while streaming by @juliusmarminge in pingdotgg/t3code#11211 * perf(client): reduce remote request and message sync overhead by @Bil0000 in pingdotgg/t3code#11029 * fix(web): refresh usage limit countdowns without switching tabs by @t3-code[bot] in pingdotgg/t3code#11187 * fix(client-runtime): typecheck device hub ticket request on main by @juliusmarminge in pingdotgg/t3code#11304 * feat(settings): add per-project overrides for scopable server settings by @juliusmarminge in pingdotgg/t3code#11176 * feat(web): pick settings environment and project as two selects by @juliusmarminge in pingdotgg/t3code#10636 * feat(settings): edit any scopable setting as a project override by @juliusmarminge in pingdotgg/t3code#10639 * feat(web): float device streams over chat by @juliusmarminge in pingdotgg/t3code#11285 * fix(web): floating preview can use the margins beside the composer by @juliusmarminge in pingdotgg/t3code#11290 * perf(client-runtime): speed up message sync on desktop and mobile by @Bil0000 in pingdotgg/t3code#11302 * fix(web): use the configured panel shortcut on the PR page by @Bil0000 in pingdotgg/t3code#11292 * feat(web): add PR page selections to new draft threads by @Bil0000 in pingdotgg/t3code#11296 * feat(web): show recording status on floating previews by @maria-rcks in pingdotgg/t3code#11312 * fix(desktop): hold-to-quit no longer strands the quit by @maria-rcks in pingdotgg/t3code#11016 * feat(web): mark projects on another machine in project pickers by @maria-rcks in pingdotgg/t3code#11323 * fix(web): show pointer cursors on pull request controls by @shivamhwp in pingdotgg/t3code#11283 * fix(web): themed panel toggles show their disabled state by @flamboh in pingdotgg/t3code#11188 * fix(web): use branch wording in commit dialogs by @shivamhwp in pingdotgg/t3code#11281 * fix(mobile): keep Android file icons on the line with wrapped filenames by @SunkenInTime in pingdotgg/t3code#11234 * fix(codex): preserve qualified model ids in selection and generation by @maria-rcks in pingdotgg/t3code#9921 * feat(desktop): share macOS permission onboarding by @juliusmarminge in pingdotgg/t3code#11289 * fix(test): drain worker broadcasts before restoring browser globals by @maria-rcks in pingdotgg/t3code#11349 * fix(web): disable linked pull requests when none are linked by @maria-rcks in pingdotgg/t3code#11348 * fix(models): default to astra medium and fable 5.1 medium by @maria-rcks in pingdotgg/t3code#11347 * fix(web): align provider settings with shared settings rows by @maria-rcks in pingdotgg/t3code#10571 * feat(settings): configure default permissions for new threads by @maria-rcks in pingdotgg/t3code#11346 * fix: restore provider history and prompts when rewinding by @maria-rcks in pingdotgg/t3code#11338 * fix(web): keep comment actions visible when pr comments are folded by @maria-rcks in pingdotgg/t3code#11357 * feat: rewind conversations while keeping file changes by @maria-rcks in pingdotgg/t3code#11358 * fix(web): keep sidebar scroll position when pinning threads by @saphid in pingdotgg/t3code#10757 * fix(web): remove pr description reactions by @maria-rcks in pingdotgg/t3code#11361 * fix(desktop): keep preview keystrokes out of the composer by @maria-rcks in pingdotgg/t3code#11354 * feat(settings): add open source license notices by @juliusmarminge in pingdotgg/t3code#8962 * perf(client): reduce repeated sorting and date formatting by @Bil0000 in pingdotgg/t3code#11019 * feat: add inline file previews and attachment chips across surfaces by @chrisdeeming in pingdotgg/t3code#11265 * fix(desktop): preserve long offscreen text in SnapShots by @Bil0000 in pingdotgg/t3code#11250 * perf(server): avoid workspace scans when loading pull requests by @Bil0000 in pingdotgg/t3code#11299 * feat(sidebar): fold the project scope into the search row by @maria-rcks in pingdotgg/t3code#11315 * fix(mobile): pin expo-audio so the release smoke patch stays in use by @ipanasenko in pingdotgg/t3code#11426 * fix(web): preserve snapshot preview size in sent messages by @Bil0000 in pingdotgg/t3code#11429 * fix(mobile): render photo library picks to a bounded JPEG off the JS thread by @Nelglor in pingdotgg/t3code#11440 * fix(desktop): keep the native preview User-Agent so Turnstile passes by @akriaueno in pingdotgg/t3code#7110 * fix(chat): keep user input outside collapsed work by @maria-rcks in pingdotgg/t3code#11363 * fix(web): preserve preview focus on window return by @Lucenx9 in pingdotgg/t3code#11444 * fix(web): complete thread status icons and keep input threads prominent by @maria-rcks in pingdotgg/t3code#11461 * feat(web): tint image chips with their average color by @maria-rcks in pingdotgg/t3code#11468 * fix(web): move viewer controls outside media and restore arrow navigation by @maria-rcks in pingdotgg/t3code#11470 * fix(web): tighten sidebar search and footer spacing by @maria-rcks in pingdotgg/t3code#11466 * feat(web): subagent spawns render as an expandable work row by @maria-rcks in pingdotgg/t3code#11433 * fix(web): keep subagent rows visible under folded turns by @maria-rcks in pingdotgg/t3code#11474 * fix(usage): make unavailable account limits more visible by @dominic-r in pingdotgg/t3code#10601 * fix(desktop): bound backend shutdown wait during quit by @ishaanko in pingdotgg/t3code#7599 * feat(web): choose the default diff file state by @maria-rcks in pingdotgg/t3code#11484 * feat(composer): fold large pastes into text attachments by @chrisdeeming in pingdotgg/t3code#11442 * feat(web): expose each chat message as a heading for screen readers by @Leos-Khai in pingdotgg/t3code#11199 * fix(usage): respect provider account homes by @maria-rcks in pingdotgg/t3code#11485 * feat(web): switch saved environments off instead of removing them by @t3dotgg in pingdotgg/t3code#11478 * fix(mobile): stop crashing on launch when a thread has a PR stack by @juliusmarminge in pingdotgg/t3code#11486 * fix(mobile): stop alerting that shared content vanished after sending it by @juliusmarminge in pingdotgg/t3code#11487 * feat(web): add opt-in thread notifications and sounds by @maria-rcks in pingdotgg/t3code#11481 * fix(server): open Cursor links in classic IDE mode by @Yash-Singh1 in pingdotgg/t3code#11498 * feat(source-control): support Forgejo and Gitea with fj and tea by @maria-rcks in pingdotgg/t3code#11436 * fix(web): match draft row heights to thread rows by @Yash-Singh1 in pingdotgg/t3code#11512 * fix(grok): emit task lifecycle for monitors and background shells by @Svyk in pingdotgg/t3code#9139 * fix(web): unify panel resizing and retain final drag width by @maria-rcks in pingdotgg/t3code#11529 * fix(web): hide back button for single linked pull requests by @maria-rcks in pingdotgg/t3code#11520 * fix(files): browse ignored files and load folders on demand by @maria-rcks in pingdotgg/t3code#11527 * feat(web): float the pull request comment composer by @maria-rcks in pingdotgg/t3code#11531 * fix(mobile): stop crashing on launch before the shell snapshot arrives by @juliusmarminge in pingdotgg/t3code#11537 * feat(github): route pull request operations across matching accounts by @maria-rcks in pingdotgg/t3code#11367 * chore(mobile): enable noUncheckedIndexedAccess and noImplicitOverride by @juliusmarminge in pingdotgg/t3code#11538 * feat(mobile): show startup crashes in Settings → Diagnostics by @juliusmarminge in pingdotgg/t3code#11540 * feat(mobile): add pooled subscription usage widgets by @MatthewFeroz in pingdotgg/t3code#11506 * feat(web): add provider selector to pull request toolbar by @maria-rcks in pingdotgg/t3code#11524 * fix(web): offer recovery from missing pages by @shivamhwp in pingdotgg/t3code#11314 * fix(web): retry startup after the server recovers by @shivamhwp in pingdotgg/t3code#11291 * feat(web): add optional compact sidebar rail by @maria-rcks in pingdotgg/t3code#11525 * feat(web): add opt-in in-app thread notifications by @Bil0000 in pingdotgg/t3code#11570 * feat(web): organize connections by environment by @maria-rcks in pingdotgg/t3code#11542 * fix(web): keep sparse sidebar shelves at the bottom by @maria-rcks in pingdotgg/t3code#11595 * fix(cursor): preserve internal agent errors without transport labels by @shivamhwp in pingdotgg/t3code#11365 * fix(server): fall back when new worktrees are unavailable by @tris203 in pingdotgg/t3code#6208 * feat: badge background thread notifications on desktop and web by @Bil0000 in pingdotgg/t3code#11569 * feat(web): add compact thread list mode by @saphid in pingdotgg/t3code#9417 * feat(web): refine compact thread row badges by @maria-rcks in pingdotgg/t3code#11644 * feat(web): show the linked pull request in the compact sidebar rail by @maria-rcks in pingdotgg/t3code#11652 * fix(mobile): adopt system glass for Live Activities by @juliusmarminge in pingdotgg/t3code#11604 * fix(web): separate expanded tool output from adjacent hover highlights by @dominic-r in pingdotgg/t3code#11658 * fix(web): apply device settings to selected environments by @juliusmarminge in pingdotgg/t3code#11541 * feat(server): show finished paragraphs and code blocks while the response streams by @t3dotgg in pingdotgg/t3code#11062 * fix(web): disconnect offline servers from threads by @t3dotgg in pingdotgg/t3code#11671 * feat(web): flatten the connections page into one environments list by @t3dotgg in pingdotgg/t3code#11672 * fix(mobile): keep usage widget rows consistently sized by @juliusmarminge in pingdotgg/t3code#11669 * feat(server): add reusable auth token for dev worktrees by @t3dotgg in pingdotgg/t3code#8606 * feat(settings): choose how responses stream, with a warning on legacy token mode by @t3dotgg in pingdotgg/t3code#11678 * revert(web): remove the compact sidebar by @maria-rcks in pingdotgg/t3code#11685 * build(desktop): bundle the main process and stage only its native externals by @juliusmarminge in pingdotgg/t3code#11410 * build(server): make the CLI bundle loadable as a Node single-executable by @juliusmarminge in pingdotgg/t3code#11316 * ci(release): build, sign, and publish self-contained CLI archives by @juliusmarminge in pingdotgg/t3code#11317 * feat(server): install preview runtimes from release archives by @juliusmarminge in pingdotgg/t3code#11318 * feat(ssh): run preview builds on remotes from the release archive by @juliusmarminge in pingdotgg/t3code#11319 * feat(cli): add t3 update for self-contained installs by @juliusmarminge in pingdotgg/t3code#11451 * feat(server): manage runtimes as release archives only, never from npm by @juliusmarminge in pingdotgg/t3code#11510 * feat(desktop): run the WSL backend from the Linux CLI archive by @juliusmarminge in pingdotgg/t3code#11511 * ci(release): build CLI archives for five targets, each on its own architecture by @juliusmarminge in pingdotgg/t3code#11605 * ci(release): build the JS bundle once and run every platform and architecture in parallel by @juliusmarminge in pingdotgg/t3code#11606 * feat(release): publish npx t3 as a launcher over per-platform executable packages by @juliusmarminge in pingdotgg/t3code#11607 * feat(cli): add t3 uninstall for self-contained installs by @juliusmarminge in pingdotgg/t3code#11659 * feat(web): show each worktree setup step and let users cancel it by @t3dotgg in pingdotgg/t3code#11372 * fix(server): skip device hosts that resolve to the local machine by @juliusmarminge in pingdotgg/t3code#11698 * fix(web): test device hosts across selected environments by @juliusmarminge in pingdotgg/t3code#11699 * feat(desktop): allow disabling the local environment by @juliusmarminge in pingdotgg/t3code#9194 * feat(cli): add t3 service restart and make t3 update repoint the service eagerly by @juliusmarminge in pingdotgg/t3code#11702 * docs(claude): clarify OpenRouter model selection by @shivamhwp in pingdotgg/t3code#11369 * fix(web): keep large image previews from stalling composer typing by @shivamhwp in pingdotgg/t3code#11324 * fix(server): avoid extra round trips for terminal output by @Bil0000 in pingdotgg/t3code#11407 * fix(web): remember panel width for each thread by @shivamhwp in pingdotgg/t3code#11310 * fix(release): preserve updates from npm-based services by @t3dotgg in pingdotgg/t3code#11732 * fix(desktop): restore Node discovery for WSL providers by @akj in pingdotgg/t3code#11741 * fix(release): stop npm from pruning the platform packages' shipped node_modules by @juliusmarminge in pingdotgg/t3code#11750 * fix(server): parse CLI versions with a "v" prefix by @NikodemNowak in pingdotgg/t3code#11738 * fix(desktop): keep preview releases out of the nightly update changelog by @juliusmarminge in pingdotgg/t3code#11753 * fix(web): open video attachment thumbnails in the viewer by @chrisdeeming in pingdotgg/t3code#11734 * Allow setting T3CODE_OTLP_HEADERS by @bahlo in pingdotgg/t3code#11218 * fix(web): use consistent PR section toggles by @Bil0000 in pingdotgg/t3code#11763 * Add T3CODE_OTLP_PROTOCOL to allow protobuf protocol by @bahlo in pingdotgg/t3code#11224 * feat(web): add composer and PR number shortcuts by @Bil0000 in pingdotgg/t3code#11615 * chore(server): keep the legacy service entry point to the npm package only by @juliusmarminge in pingdotgg/t3code#11770 * fix(web): use project monograms for automatic icon fallbacks by @ShpetimA in pingdotgg/t3code#11572 * feat(web): clone repositories in the background instead of holding the palette open by @juliusmarminge in pingdotgg/t3code#11762 * feat(mobile): clone repositories in the background and gate the draft on the clone by @juliusmarminge in pingdotgg/t3code#11774 * fix(mobile): scale inline pills with Dynamic Type by @juliusmarminge in pingdotgg/t3code#11792 * chore(deps): bump the Clerk stack to current releases by @juliusmarminge in pingdotgg/t3code#11764 * feat(mobile): add a T3 Connect page to the Clerk profile by @juliusmarminge in pingdotgg/t3code#11765 * feat(server): use Clerk's device authorization grant for headless connect login by @juliusmarminge in pingdotgg/t3code#11794 * fix(server): stop refreshing providers on every config subscription by @juliusmarminge in pingdotgg/t3code#11811 * fix(web): align monogram project icons in menus by @juliusmarminge in pingdotgg/t3code#11806 * ci(desktop): sign fork PR macOS previews without exposing signing secrets by @juliusmarminge in pingdotgg/t3code#11760 * fix(web): make copy PR link discoverable in keybindings by @Bil0000 in pingdotgg/t3code#11826 * feat: add custom snooze dates and durations by @juliusmarminge in pingdotgg/t3code#11800 * feat(mobile): redesign the Android agent activity card by @SunkenInTime in pingdotgg/t3code#11645 * feat(web): inline worktree setup rows and async setup scripts by @juliusmarminge in pingdotgg/t3code#11832 * fix(server): stream tight list items one at a time in paragraph mode by @juliusmarminge in pingdotgg/t3code#11833 * fix(server): keep thread titles tied to user intent by @t3dotgg in pingdotgg/t3code#10720 * refactor(server): resolve title links through source control providers by @juliusmarminge in pingdotgg/t3code#11844 * refactor(server): align title generation with Effect conventions by @juliusmarminge in pingdotgg/t3code#11847 * fix(server): disable color probes in worktree setup by @juliusmarminge in pingdotgg/t3code#11843 * fix: keep worktree setup visible after leaving and reopening the thread by @t3dotgg in pingdotgg/t3code#11836 * fix(desktop): prevent startup from running twice by @juliusmarminge in pingdotgg/t3code#11857 * feat(mobile): add iPad keyboard shortcuts and command palette by @bmdavis419 in pingdotgg/t3code#11679 * feat(server): persist the worktree setup send and progress on the thread by @juliusmarminge in pingdotgg/t3code#11852 * feat(web): queue messages sent client-side while the agent is working by @t3dotgg in pingdotgg/t3code#11673 * fix(server): bound Git process bursts to keep connections responsive by @Bil0000 in pingdotgg/t3code#11405 * perf(server): speed up worktree fetch and checkout by @Bil0000 in pingdotgg/t3code#11633 * fix(client): show thread state changes before remote replies by @Bil0000 in pingdotgg/t3code#11408 * fix(mobile): restrict row highlighting to pointer input by @juliusmarminge in pingdotgg/t3code#11863 * fix(mobile): ensure a compatible native client before verification by @juliusmarminge in pingdotgg/t3code#11862 * fix(web): restore composer focus after closing option menus by @Bil0000 in pingdotgg/t3code#11884 * fix(web): center refresh devices in the empty state by @shivamhwp in pingdotgg/t3code#11808 * fix(mobile): match command palette colors to sheets by @juliusmarminge in pingdotgg/t3code#11861 * fix(web): keep the composer ready during background worktree setup by @Bil0000 in pingdotgg/t3code#11883 * fix(desktop): keep the sidebar brand and window buttons aligned by @shivamhwp in pingdotgg/t3code#11906 * fix(web): drop the filled well behind the sidebar header buttons by @flamboh in pingdotgg/t3code#11660 * fix(server): explain how to configure a missing Codex executable by @shivamhwp in pingdotgg/t3code#11345 * fix(mobile): add missing thread rename action by @Michel-Liao in pingdotgg/t3code#11503 * fix(mobile): wait for thread deep link hydration by @Michel-Liao in pingdotgg/t3code#11502 * fix(mobile): keep iOS chat rows aligned after measurement by @dominic-r in pingdotgg/t3code#11813 * feat: add customizable soft-tint project monograms by @eimexdev in pingdotgg/t3code#11845 * fix: multiple UI and server bug fixes by @kridaydave in pingdotgg/t3code#11593 * fix(server): release preview hosts after unanswered requests by @yashranaway in pingdotgg/t3code#11381 * Preserve diff tree order and collapsed folders by @juliusmarminge in pingdotgg/t3code#11931 * fix(client-runtime): preserve cached turns and older-page loading by @lnieuwenhuis in pingdotgg/t3code#8309 * chore(deps): bump Clerk stack to latest stable versions by @juliusmarminge in pingdotgg/t3code#11956 * fix(mobile): update Reanimated and Worklets by @juliusmarminge in pingdotgg/t3code#11957 * fix(desktop): paste as text no longer doubles the pasted text by @TonybynMp4 in pingdotgg/t3code#11958 * feat(web): choose queue or steer for follow-up messages by @Bil0000 in pingdotgg/t3code#11964 ## New Contributors * @iamshadmantaqi made their first contribution in pingdotgg/t3code#8541 * @simplythatguy made their first contribution in pingdotgg/t3code#10667 * @Cyberlane made their first contribution in pingdotgg/t3code#10722 * @Nelglor made their first contribution in pingdotgg/t3code#11440 * @akriaueno made their first contribution in pingdotgg/t3code#7110 * @Leos-Khai made their first contribution in pingdotgg/t3code#11199 * @Svyk made their first contribution in pingdotgg/t3code#9139 * @NikodemNowak made their first contribution in pingdotgg/t3code#11738 * @bahlo made their first contribution in pingdotgg/t3code#11218 * @TonybynMp4 made their first contribution in pingdotgg/t3code#11958 **Full Changelog**: pingdotgg/t3code@v0.0.40...v0.0.42 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.42
Problem
The Release Smoke job fails on every PR (for example #8419):
scripts/release-smoke.tsdeletespnpm-lock.yamland re-resolves from scratch. expo-audio 57.0.5 was published on 2026-09-11, so the~57.0.4range now resolves to 57.0.5 and theexpo-audio@57.0.4patch inpnpm-workspace.yamlis unused. Main CI was green earlier the same day because the release was not out yet.Fix
Pin
expo-audioto the exact57.0.4inapps/mobile/package.json, matching howexpo-sharingis already pinned for its patch. The lockfile specifier is updated to match; the resolved version and patch hash are unchanged.Note:
@react-native-menu/menuis^2.0.0with a2.0.0patch and has the same latent risk, left as is to keep this PR to one concern.Fable 5.1 via Claude Code in T3 Code
Closes #11437
Summary by CodeRabbit