Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
iiRecord
Agentic AI Atlas · t3code upstream patch inventory (WP-T3-32 stage 1)
page:docs-specs-platform-gaps-phase0-t3code-patches-inventorya5c.ai
Search record views/
Record · tabs

Available views

II.Record viewspp. 1 - 1
overviewarticlejsongraph
II.
Page JSON

page:docs-specs-platform-gaps-phase0-t3code-patches-inventory

Structured · live

t3code upstream patch inventory (WP-T3-32 stage 1) json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/docs/specs/platform-gaps/phase0/t3code-patches-inventory.mdCluster · wiki
Record JSON
{
  "id": "page:docs-specs-platform-gaps-phase0-t3code-patches-inventory",
  "_kind": "Page",
  "_file": "wiki/docs/specs/platform-gaps/phase0/t3code-patches-inventory.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "sourcePath": "docs/specs/platform-gaps/phase0/t3code-patches-inventory.md",
    "sourceKind": "repo-docs",
    "title": "t3code upstream patch inventory (WP-T3-32 stage 1)",
    "displayName": "t3code upstream patch inventory (WP-T3-32 stage 1)",
    "slug": "docs/specs/platform-gaps/phase0/t3code-patches-inventory",
    "articlePath": "wiki/docs/specs/platform-gaps/phase0/t3code-patches-inventory.md",
    "article": "\n# t3code upstream patch inventory (WP-T3-32 stage 1)\n\nSource: the read-only t3code snapshot at commit `de251fc2971a884cb5b1305ba4daf309dc8cccb0` (MIT, T3 Tools Inc. — intent D15), `patches/` directory (23 files) as wired by `pnpm-workspace.yaml` `patchedDependencies` (lines 182–205 of the snapshot). Every patch was read hunk by hunk; the \"purpose\" column is derived from the hunks and the upstream comments they carry, not from commit messages. \"Consumers\" is the set of t3code workspaces whose `package.json` declares the package (transitive-only packages say so).\n\nDecision key:\n\n- **PORTED** — carried into fabric under `patches/` (patch-package format) and applied on `postinstall`.\n- **DROPPED-mobile-only** — every consumer is `t3:apps/mobile`, which intent D13 excludes from adoption; nothing in fabric will ever install the package.\n- **DROPPED-toolchain** — the patch exists only to serve the pnpm/vite-plus toolchain that spec 10 §2 (B5 exclusion list) and WP-T3-32 stage 2 replace; porting it would break the package under fabric's stock toolchain.\n- **DEFERRED-stage-2** — the package is consumed by a unit that lands in a later WP (server, web, desktop); the patch is re-evaluated when that unit lands, against whatever version of the package is current then.\n\n## Counts\n\n| Decision | Count |\n|---|---|\n| PORTED | 1 (`effect`) |\n| DROPPED-toolchain | 1 (`@effect/vitest`) |\n| DROPPED-mobile-only | **17** |\n| DEFERRED-stage-2 | 4 (`@ff-labs/fff-node`, `dbus-next`, `@legendapp/list`, `@pierre/diffs`) |\n| Total | 23 |\n\nThe WP-T3-32 brief says \"19 mobile-only\". Reading the consumers gives **17**: `@legendapp/list` and `@pierre/diffs` are declared by `t3:apps/web` as well as `t3:apps/mobile` (`apps/web/package.json`), and their hunks touch web-relevant entrypoints (`react.js`, `react-native.web.js`; `dist/components/VirtualizedFile.js`, `dist/react/utils/useFileInstance.js`), so they are not mobile-only and are deferred to the console-web landing (WP-T3-25) instead of dropped.\n\n## Inventory\n\n| # | Upstream patch file | Target | Consumers (t3code) | Purpose (from the hunks) | Decision |\n|---|---|---|---|---|---|\n| 1 | `@clerk__expo@4.6.8.patch` | `@clerk/expo@4.6.8` | apps/mobile | iOS Swift: Clerk auth/profile native views take the theme page background, pre-glass solid nav bar, and pop the enclosing React Navigation route natively on back | DROPPED-mobile-only (Clerk is also excluded outright, spec 10 §2 row 10) |\n| 2 | `@effect__vitest@4.0.0-rc.115.patch` | `@effect/vitest@4.0.0-rc.115` | every workspace (13) | Rewrites every `import … from \"vitest\"` / `export * from \"vitest\"` in `dist/` and `src/` to `vite-plus/test` so the package runs under Voidzero's vite-plus test runner; no behavioural change | DROPPED-toolchain — fabric runs stock vitest, where the unpatched package's `vitest` imports are exactly right; `scripts/ci/effect-baseline.test.mjs` pins that the installed package imports `vitest` and never `vite-plus` (see `docs/EFFECT-BASELINE.md` §3) |\n| 3 | `@expo__metro-config@57.0.12.patch` | `@expo/metro-config@57.0.12` | transitive of `expo` (apps/mobile only) | Metro source-map serializer: strip Hermes segments that reference generated lines Metro never emitted so `@jridgewell/remapping` does not throw | DROPPED-mobile-only |\n| 4 | `@ff-labs__fff-node@0.9.4.patch` | `@ff-labs/fff-node@0.9.4` | apps/server | Resolve the native binary through `app.asar.unpacked` when packaged in Electron; add `require` and reorder `types` in the `exports` map | DEFERRED-stage-2 (rides WP-T3-19 `apps/environment`; re-check against the then-current fff-node) |\n| 5 | `@legendapp__list@3.3.5.patch` | `@legendapp/list@3.3.5` | apps/mobile, apps/web | Large keyboard/inset rework of the virtualized list (`useKeyboardChatComposerInset`, `contentInsetStartAdjustment`, safe-area-net anchored blank, reanimated timing), 12 files incl. `react.js` and `react-native.web.*` | DEFERRED-stage-2 (web consumer; evaluate at WP-T3-25) |\n| 6 | `@pierre%2Fdiffs@1.3.0-beta.10.patch` | `@pierre/diffs@1.3.0-beta.10` | apps/mobile, apps/web | Diff renderer: `applyDocumentChange(..., startLine)` keeps unchanged wrapped-row heights, code-width change invalidates the layout cache, `ResizeManager.onResize` hook, token transformer on by default, worker cache eviction on file change, extra `exports` subpaths (`./types`, `./utils/*`) | DEFERRED-stage-2 (web consumer; evaluate at WP-T3-25) |\n| 7 | `@react-native-ai__apple@0.12.0.patch` | `@react-native-ai/apple@0.12.0` | apps/mobile | iOS Swift transcription: locale support/asset-installation errors, invalid-audio rejection, temp-file cleanup, collected timed segments | DROPPED-mobile-only |\n| 8 | `@react-native-menu__menu@2.0.0.patch` | `@react-native-menu/menu@2.0.0` | apps/mobile | iOS menu: `onMenuInteractionStart` event on old and new architecture, nested sub-sub-actions, presented-guard flush | DROPPED-mobile-only |\n| 9 | `@react-navigation%2Fnative-stack@7.17.6.patch` | `@react-navigation/native-stack@7.17.6` | apps/mobile | Emit `finishTransitioning` to every route (modal dismiss), `unstable_header{Center,Right,Toolbar}Items`, `mailSearchToolbar` item type, header subtitle/navigation-item style | DROPPED-mobile-only |\n| 10 | `dbus-next@0.10.2.patch` | `dbus-next@0.10.2` | apps/desktop | Drop the optional `usocket` dependency: connect to Unix path and abstract sockets with `net.createConnection` (no FD passing needed); deletes `CHANGELOG.md` | DEFERRED-stage-2 (rides WP-T3-26 console-desktop) |\n| 11 | `effect@4.0.0-rc.115.patch` | `effect@4.0.0-rc.115` | every workspace | (a) `unstable/rpc/RpcClient`: new `RequestHooks` service (`onRequestStart/Chunk/Exit/Interrupt`), `ConnectionHooks.onPing/onPong/onPingTimeout`, pinger tolerates 3 missed pongs before timeout, `onPong` becomes an Effect; (b) `unstable/http/HttpClientResponse`: `cookies` tolerates a `headers` object without `getSetCookie` (`getSetCookie?.() ?? []`, `dist` + `src`); (c) `unstable/ai/McpServer`: HTTP `DELETE <path>` ends the MCP session (400 no header / 404 unknown / 204) instead of 405 | **PORTED** → `patches/effect+4.0.0-rc.115.patch` (5 files, 23 hunks, bodies byte-identical to upstream; only the `a/`/`b/` prefixes gained `node_modules/effect/`) |\n| 12 | `expo-audio@57.0.4.patch` | `expo-audio@57.0.4` | apps/mobile | iOS: `didFinish(successfully:)` reports `.error` / `hasError` when the recorder fails instead of always \"stopped\" | DROPPED-mobile-only |\n| 13 | `expo-modules-core@57.0.14.patch` | `expo-modules-core@57.0.14` | transitive of `expo` (apps/mobile only) | iOS: `@synchronized` around the permissions-requester maps | DROPPED-mobile-only |\n| 14 | `expo-notifications@57.0.15.patch` | `expo-notifications@57.0.15` | apps/mobile (t3code) | iOS: lock-protected delegate list and pending-response buffer so overlapping React runtimes do not lose notification responses | DROPPED-mobile-only. Note: fabric's root `dependencies` carries `expo-notifications ^55.0.23` for its own `packages/genty/mobile-*` shells (spec 15 §3.2 retirement list); the t3code patch targets 57.0.15 and is not applicable to that line |\n| 15 | `expo-sharing@57.0.17.patch` | `expo-sharing@57.0.17` | apps/mobile | Android share-intent parser: text + stream payloads together, `originalName` from `DISPLAY_NAME` (blank stays null); types updated | DROPPED-mobile-only |\n| 16 | `expo-widgets@57.0.15.patch` | `expo-widgets@57.0.15` | apps/mobile | iOS WidgetKit: `widgetRenderingMode` and `isLiquidGlassAvailable` (iOS 26) in the environment, live-activity sections read the environment inside the rendered view | DROPPED-mobile-only |\n| 17 | `react-native-gesture-handler@2.32.0.patch` | `react-native-gesture-handler@2.32.0` | apps/mobile | Swipeable: `failOffsetY`, `onSwipeableRelease` (UI-thread full-swipe commit); iOS hover handler removes the pointer interaction before Fabric recycles the view | DROPPED-mobile-only |\n| 18 | `react-native-keyboard-controller@1.21.13.patch` | `react-native-keyboard-controller@1.21.13` | apps/mobile | KeyboardChatScrollView: report presentation height / effective bottom padding (`onContentInsetChange`, `adjustedInsetCompensation`, `adjustedStartInsetCompensation`) for virtualized-list scroll math on iOS | DROPPED-mobile-only |\n| 19 | `react-native-nitro-markdown@0.5.8.patch` | `react-native-nitro-markdown@0.5.8` | apps/mobile | md4c autolinks: single-label hosts (`localhost`), ports, wider path/query charset, trailing punctuation left outside the link (upstream comment in `pnpm-workspace.yaml`) | DROPPED-mobile-only |\n| 20 | `react-native-nitro-modules@0.35.9.patch` | `react-native-nitro-modules@0.35.9` | apps/mobile | `package.json` codegen config: iOS `modulesProvider` entry | DROPPED-mobile-only |\n| 21 | `react-native-reanimated@4.5.5.patch` | `react-native-reanimated@4.5.5` | apps/mobile | Layout animations: `isExitingWhenSettled` so a settled animation keeps its final frame unless the view is being removed (backport of software-mansion/react-native-reanimated#10171, per the upstream comment) | DROPPED-mobile-only |\n| 22 | `react-native-screens@4.26.2.patch` | `react-native-screens@4.26.2` | apps/mobile | iOS 26 glass-chrome header props (bar-button items, menus, subtitle, navigation-item style) with Android no-op setters so codegen compiles; 12 files, 78 hunks | DROPPED-mobile-only |\n| 23 | `uniwind@1.11.0.patch` | `uniwind@1.11.0` | apps/mobile | Tailwind-for-RN CSS processor: Tailwind ≥4.3.3 flat variant selectors, media queries surviving sibling-rule resets, `data-*` attribute variants; metro transformer | DROPPED-mobile-only |\n\n## Cross-checks\n\n- Names in this table are exactly the 23 keys of the snapshot's `patchedDependencies` block; `scripts/ci/effect-baseline.test.mjs` asserts every one of them appears here (test 4), so the inventory cannot drift from the upstream list without a reviewed edit.\n- `t3:apps/web` does not declare `react-native`, `expo` or any `react-native-*` package (`grep -n react-native apps/web/package.json` → none), which is what makes rows 3, 7–9, 12–13, 15–23 mobile-only.\n- Row 14 is the only upstream patch whose target package also exists in fabric today, on a different major (`expo-notifications ^55` at the fabric root); it is not applied because the patch is written against 57.0.15 and the consumer is the retired mobile shell line.\n",
    "documents": []
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "page:docs",
      "to": "page:docs-specs-platform-gaps-phase0-t3code-patches-inventory",
      "kind": "contains_page"
    }
  ]
}

Shortcuts

Back to overview
Open graph tab