Skip to content

feat: sync upstream 580b526758 keeping Ada configuration - #246

Draft
jayleaton wants to merge 1038 commits into
mainfrom
sync/upstream-580b526758-20261114
Draft

jayleaton wants to merge 1038 commits into
mainfrom
sync/upstream-580b526758-20261114

Conversation

@jayleaton

Copy link
Copy Markdown
Owner

Brings Ada up to upstream pingdotgg/t3code 580b526758 (last sync was d2c25950b4) and merges current main (#241, #244, #245). Ada's own configuration stays as it was. The upstream merge is a real merge commit (3e39d765fe). Every conflict was resolved by intent, never by blanket ours/theirs.

What stays Ada

  • Brand. APP_NAME is "Ada", the iPhone home-screen name is "Ada Agents", and the Pip logo, README and slogan are unchanged. App and bundle IDs are unchanged. 27 new upstream "T3 Code" strings that merged cleanly were caught by the brand guard and changed to APP_NAME/Ada. They were in desktop, server, web and Muse status text, the vite bootstrap title, and the user docs. An orphan "T3 Account" translation key was also removed.
  • Repo and releases. CLI_RELEASE_REPOSITORY is jayleaton/ada, and install.sh/install.ps1 are unchanged. The fork nightly and Windows-installer workflows, windows-package-names.ts and the artifact naming are untouched. Upstream's new npx t3@latest hints were replaced, so the SSH tunnel fallback points at Ada's install.sh and the desktop home-owner dialog shows Ada's runnable command.
  • Privacy. Telemetry is still off by default, mobile Observe still points at observe.invalid, and the hosted-app default stays opt-in (fix: Ada no longer reports to upstream T3 services #245).
  • Product behavior. Notifications are top-level only (fix(web): only top-level chats notify #243). Mobile push goes direct to Expo. Scheduled tasks stay unified. The headless/gateway fixes and Tailscale-only remote are kept. Agent presets are kept, including fix(agents): Captain listeners always run on Haiku #244's Haiku-only Captain listeners. Mobile EAS config and eas.json are unchanged.
  • Migrations. Upstream migrations keep upstream ids (through 91). The 24 fork migrations stay on their own ledger. The runner merge keeps the fork's two-ledger schedule and adopts upstream's "started" log line plus one transaction per migration with progress. scripts/upstream-migrations.json is re-synced. A copy of a real fork database (485 MB) migrated cleanly through upstream 82–91.

Conflicts and how they were resolved

Upstream mechanisms adopted because they are better

These are the SQLite writer worker, beforePosition paging, restoreMissingWorktree, listActiveThreads, historical PR handling, PullRequestWatchService, and the live home-owner dialog. Also adopted: useOpenLocalWorkspace, the chunk reload guard, canResumeThread, isServerNetworkAccessible, the channel label helper, the shell's early HTTP load, routeKeepsItsHost, the peer probe, resolveLauncherPath, the tagged-source build version, and the preview listening handshake.

New upstream outbound, telemetry and Connect code removed

None of it is stubbed. scripts/check-removed-connect is green.

  • Connect device approval (a2edd28) and everything that depended on it: auth contracts and endpoints, the CLI, the web/mobile approval coordinators and settings, the revoke dialog, clerkLoadFailure, the banners, and migrations 90/91. The migrations stay registered so upstream ids line up, but nothing reads or writes their tables.
  • Hosted pieces: Clerk sign-in and auth shell, cloud/relay/managed tunnels and their relay test, hosted MCP apps (Poke, Claude, ChatGPT and others), the desktop relay-tunnel restart marker, the relay tracing defines, the credentials-changed account relist wakeup, and the T3 Account row.
  • Analytics call sites that remained after fix: Ada no longer reports to upstream T3 services #245: the MCP tool analytics wrapper and handoff block in McpHttpServer, client analytics props and owners in ws.ts, the DelegatedTaskAnalytics and ProviderTurnAnalytics layers, turn analytics in RunExecutionService, and two analytics tests in core.test.
  • Dead code: apps/mobile/src/state/auth.ts, which chore: delete dead code, unused deps, and duplicate helpers pingdotgg/t3code#9129 had deleted and the merge brought back.

gt-react/gt-react-native i18n uses bundled translations with no project id, so it makes no runtime network calls.

Custom UI (pingdotgg#35247)

Captures are in a secret gist. They come from the web client of vp run dev on seeded dev state, driven by a real Claude Haiku 5.5 turn calling t3_theme_set. Replay can't call MCP tools, so it couldn't drive this.

Before (default) After the agent's theme After the agent's revert
before after revert

The prompt was "change the accent colour to teal (#0d9488) and add a small CSS tweak that gives the chat header a 2px solid bottom border in that teal". The agent published ada-teal (canvas #ffffff, accent #0d9488, CSS on [data-chat-header]) and switched to it. Asked to go back to the default, it set t3-code, which restored the default palette and the sidebar art.

  • Surfaces. Web and desktop are supported. Mobile isn't, because upstream doesn't support it: mobile keeps its own themes and ignores environment themes.
  • Ada naming. The tool descriptions, the agent theme guide, the theme eval cases and docs/user/appearance.md say Ada and ada theme set.
  • Ada default and Pip. Publishing a theme never changes the default. The Pip logo shows under every theme. The sidebar art shows only under built-in themes, which is upstream design.
  • Persistence. Agent themes are saved as files in the server's themes directory, and the default lives in server settings. Clients apply it once per generation, including after a reload or reconnect.

Conflicts with fork changes, and gaps fixed:

  • The feature's own files merged cleanly. The fork-specific work was the rebrand of the model-facing text and docs/user/appearance.md.
  • Revert to default was impossible. The standard look t3-code was not a selectable id, so agents could only switch to a built-in theme such as T3 Chat. t3-code can now be selected through the tool and ada theme set, but never published. The web client maps it back to the standard look and keeps the user's light/dark mode. Tests are in environmentTheme.test.ts.
  • "Change the accent" turned Ada pink. On the first run (capture), Haiku put the accent only in colors. A colors-only theme starts from the stock pink palette, so Ada turned pink with a teal border. The guide now says to seed canvas and accent together, and that t3-code returns to the default look. On a rerun with the same prompt, Haiku seeded both and the whole palette followed. The new accent-change-seeds-canvas-and-accent eval case builds (--dry-run), but I didn't run it: this checkout has no Anthropic API key for evals.

Checks

  • check:changed, run against origin/main with TMPDIR=/tmp and vite-plus Node 26. Format, lint, knip and typecheck failed on the first run. All of those failures came from the merge, and they're fixed in c330c3384e. On the rerun, format, lint (warnings only), knip and typecheck pass in every package touched, including evals. The test stage (876 files) hit the 900-second local timeout, so CI owns the full suite. Focused runs were green: about 1,700 server and 2,400 client tests during conflict work, plus the files touched afterwards.
  • Fork guards: 31/31. Upstream migrations: 91 upstream plus 24 fork. check-removed-connect: green. Brand guard: 2/2. CI node:test scripts: green.
  • Real client: one integrated test-t3-app pass on isolated, seeded dev state, covering the theme flow above.

Model: Claude Opus 5.5 with Claude Code subagents for the conflict slices.

🤖 Generated with Claude Code

juliusmarminge and others added 30 commits November 12, 2026 19:38
…ex at the window edges (pingdotgg#35877)

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
… slow (pingdotgg#26127)

Co-authored-by: Elliot Drel <elliotdrel@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Kieren-Foenander and others added 24 commits November 13, 2026 17:28
…stead of two per file (pingdotgg#35295)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…etect (pingdotgg#31170)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ingdotgg#31146)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ged revalidation (pingdotgg#23775)

Signed-off-by: Shaswat Raj <shaswat340@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
…ell (pingdotgg#33064)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: lyn1dev <lyn1dev@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
… local port (pingdotgg#24247)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
…pingdotgg#23743)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: only21mil <only21mil@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Real merge of 1034 upstream commits since d2c2595, resolved by intent so
Ada's brand, release repo, privacy defaults, push, scheduled tasks, agent
presets and fork migration ledger survive. Upstream T3 Connect device
approval, relay, cloud and hosted-app wiring stay removed; agents can now
revert an environment theme to the default look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream changes to the analytics, Observe and hosted-app code that #245
deleted stay deleted: the MCP tool-analytics wrapper, ws client analytics
props, delegated-task and turn analytics layers and their tests are removed,
and hosted thread-link parsing stays out while upstream's sturdier
t3-thread link parsing is kept. The desktop home-owner dialog keeps
upstream's live owner details with #241's runnable CLI command hints.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The theme guide never said that a colors-only theme starts from the stock
pink palette, so Haiku put a teal accent in `colors` and Ada turned pink.
The guide now says to seed `canvas` and `accent` together, and to use
`t3-code` to return to the default look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Format the files the merge left unformatted.
- Drop unused imports and the relay-only account relist helper, un-export
  isPullRequestWatchTask, and delete mobile state/auth.ts, which pingdotgg#9129 had
  already removed.
- Restore upstream's lost-launch-reply outbox tests that were dropped along
  with the compaction block.
- The background-wait eval mocks the fork's TailnetDevices and
  ProjectionStoreV2 handler services.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Nov 14, 2026
@jayleaton jayleaton added the agent-context-increase Approves a measured increase to the agent context budget label Nov 14, 2026
@jayleaton

Copy link
Copy Markdown
Owner Author

Captain: accepting the agent-context growth (+386 B Claude system append, +50 B Codex context, +1.7 KB MCP tool list). It all comes from upstream 580b526's new tools and instructions, mainly the agent theme/CSS tool (pingdotgg#35247), which JJ asked for. The fork's tail-compat change must not add description text.

@github-actions github-actions Bot added the 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. label Nov 14, 2026
@github-actions

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 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.5 KiB 21.5 KiB 0 B (0.0%) 24.4 KiB ✅
Codex Live turn messages 1 1 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB +1 B (+0.0%) 24.4 KiB ✅
Claude Live turn messages 1 1 0 (0.0%) 8 ✅

Baseline: bfad67d · PR result: c330c33 · Source CI: failure

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: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

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

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-context-increase Approves a measured increase to the agent context budget 📱 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.