chore(v2): merge main into the V2 branch - #14668
Conversation
…14573) Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
#12046) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…tale (#12047) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…12048) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…URL (#12049) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…UIScreen.main (#12050) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…bers (#12051) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…12052) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ard (#13487) Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Conflicts resolved: - server.test.ts (#14635): V2 deleted the V1 router seam suite in 59ceaa9; it stays deleted. The favicon change itself (ws.ts, AssetAccess.ts) merged textually onto V2's ws.ts; its clone lookup reads `project.value.projectId`, V2's project record field (main's has `id`). - Sidebar.logic.test.ts (#14558): keep V2's test file and apply main's dedupe (drop the sortThreadsForSidebar and planPinnedReorder blocks, which client-runtime's threadSort.test.ts already covers). Main's drag-and-drop tests stay out; V2 removed them with the drop helpers' old tests in c4bcd1e. - FcmDeliveries.test.ts (#12048): take main's grouped-alert routing test with V2's namespace imports; namespace the auto-merged slash-identifier test too. - pnpm-workspace.yaml / pnpm-lock.yaml (#12045): take main's SDK 58 overrides, keep V2's OpenCode effect pins; the merged @react-native-menu patch gets a fresh hash. - third-party-licenses.config.json: keep V2's OpenCode entry and main's noxcturnal entries. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: unavailable · PR result: Scenario and decoded snapshot size10 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.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This merge includes a major Expo/React Native platform upgrade, new Android widget and alarm functionality, notification and desktop runtime behavior changes, and product-default changes across mobile. It also modifies Macroscope configuration, so the scope and review-control impact require human review. Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
6f042ef
into
t3code/codex-turn-mapping
Merges origin/main (6c8fed3) into t3code/codex-turn-mapping (3eaae44). The previous sync (pingdotgg#14668) was squash-merged, so V2 already holds main's content up to a3abb52 without the merge parent. This merge was built with `git merge-tree --merge-base=a3abb52660`, so only the 15 commits in a3abb52..6c8fed3 apply and nothing already synced re-conflicts. No new migrations on main. Brings in pingdotgg#14673 (batched GitHub GraphQL polling), pingdotgg#13926 (beta Working section), pingdotgg#14678 (update providers on every machine), pingdotgg#14674, pingdotgg#13426, pingdotgg#14700, pingdotgg#14675, pingdotgg#14601, pingdotgg#14532, pingdotgg#14756, pingdotgg#14734 (Expo 58 update), the 1.4.0 mobile version bump, pingdotgg#12615, pingdotgg#14367 and pingdotgg#14710. V1 files V2 deleted (kept deleted): - orchestration/PullRequestSyncReactor(.test).ts and orchestration/ThreadPullRequestReactor.ts: pingdotgg#14673's reactor batching. Git matched them to V2's orchestration-v2/PullRequestSyncReactor(.test).ts and ThreadPullRequestService.ts, so the change landed there: one queued "requested" sweep reads a burst of requestSync keys together, a summary that places a PR in no stack skips the stack read, and a stack-number change in the summary triggers a stack refresh. Main's two new reactor tests merged into V2's test file and use V2's harness as-is. - web ChatMarkdown.workspace-images.test.tsx: V2 removed it in 894f6c4. pingdotgg#12615 added Windows-path cases there; the link case is ported into V2's ChatMarkdown.test.tsx "Windows file links" block. The image-resource cases depend on that file's asset mocks and are not ported. Content conflicts: - orchestration-v2/PullRequestSyncReactor.ts: main's sweep(scope) signature over V2's projections.getThreadsWithPullRequests() read. - orchestration-v2/ThreadPullRequestService.ts: main's concurrency 32 (was V2's 25), so a sweep's branch lookups reach GitHubCli's 50-wide GraphQL document together. - chat/ChatHeader.tsx: kept V2's slim header (f71e6a2); main's header-actions block is not in V2. pingdotgg#13426's ChatView half (the maximize control leaves the flex flow when closed) is applied to V2's panel controls in ChatView.tsx. - Sidebar.logic(.test).ts, Sidebar.tsx: pingdotgg#13926 on V2's sidebar model. isSidebarThreadWorking folds V2's "working" and "waiting" (idle with open background tasks, main's "monitoring") statuses, minus a ready plan. sortInboxThreadsByReturn reads latestRun instead of latestTurn. V2's subagent filter, section resolver and CollapsibleSectionHeader stay; the Working header uses the muted tone. Main's status tests are rewritten on V2's runtime fixture. - settings/SettingsPanels.tsx, settingsSearch.ts, docs/user/thread-sidebar.md: both sides (V2's limited-thread rows and title docs, main's Working section row and docs). pingdotgg#14678 uses the existing server.updateProvider RPC, which V2's ws.ts serves through providerMaintenanceRunner, so no server change is needed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
V2 (
t3code/codex-turn-mapping) was 16 commits behindmain. This mergesorigin/main(a3abb52) into V2 (a2ca40a), V2 as first parent. The merge commit only resolves conflicts.What came in
ws.ts,AssetAccess.ts, client-runtimeassets.ts, web/mobile clone state.docs/internals/effect-services.md, macroscope check. Taken as-is.Conflicts and how they were resolved
apps/server/src/server.test.ts(fix: cloned projects show their favicon instead of a monogram #14635 added a case): V2 deleted this V1 router-seam suite in 59ceaa9, so it stays deleted.apps/server/src/ws.ts(textually clean, but it didn't typecheck): main's favicon hunk readsproject.value.id. V2's project record hasprojectId, so the merge usesproject.value.projectId. Otherwise V2'sws.tsis unchanged.apps/web/src/components/Sidebar.logic.test.ts(test(web): remove duplicate sidebar ordering tests #14558): kept V2's file and applied main's dedupe. That drops thesortThreadsForSidebarandplanPinnedReorderblocks, which were byte-identical to the merge base and are covered by client-runtime'sthreadSort.test.ts. Main's drag-and-drop describe blocks stay out because V2 removed them earlier (c4bcd1e).infra/relay/src/agentActivity/FcmDeliveries.test.ts(feat(notifications): stack agent alerts by thread on both platforms #12048): took main's new expectation (grouped alerts route to/) with V2's namespace import (FcmDeliveries.FcmDeliveries). Also namespaced the slash-identifier test that came in during the merge.pnpm-workspace.yaml/pnpm-lock.yaml(chore(mobile): upgrade to Expo SDK 58 and React Native 0.88 RC #12045): took main's SDK 58 overrides and kept V2's@opencode/{protocol,schema}>effectpins. Both sides edited the@react-native-menu/menupatch in separate hunks, so the merged patch gets a fresh hash fromvp i.third-party-licenses.config.json: kept V2's OpenCode entry and main's noxcturnal entries.No V2-only mobile code broke against SDK 58 types, so there is no fix commit on top.
Verification
vp i: clean install.tsc --noEmit -p ., all exit 0:apps/server(after theprojectIdfix above),apps/web,apps/mobile,apps/desktop,packages/contracts,packages/client-runtime,packages/shared.packages/client-runtimesrc/state/assets.test.ts: 21/21 passed.apps/serverAssetAccess.test.ts,ws.test.ts,ProjectCloneTracker.test.ts, run insideunshare -U --map-current-user -p -f --mount-proc: 45/45 passed.infra/relayFcmDeliveries.test.ts+ApnsClient.test.ts: 56/56 passed.apps/webSidebar.logic.test.ts: 134/134 passed.vp linton the conflicted/touched files: exit 0. The only warnings (unused imports inws.ts, react refs inSidebar.logic.ts) were already on V2.vp run knip:check: exit 0, no findings (both passes).sk-or-andcrsr_: no hits.Left over
server.test.ts, which V2 doesn't have. V2 also has no WS-level harness that drivesassets.createUrlwith a clone in flight, so that case is not ported. The code path compiles and theAssetAccesstests pass, but nothing on V2 exercises "a lookup during a clone doesn't cache a miss".Model: Claude Opus 5.5 (Claude Code)
🤖 Generated with Claude Code