Skip to content

chore(upstream): advance to T3 Code v0.1.3 - #705

Open
Jacksondr5 wants to merge 2084 commits into
j5/mainfrom
j5code/upstream-sync-20261024
Open

Jacksondr5 wants to merge 2084 commits into
j5/mainfrom
j5code/upstream-sync-20261024

Conversation

@Jacksondr5

@Jacksondr5 Jacksondr5 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Problem

J5 was pinned to an upstream T3 Code nightly from 2026-10-17. Upstream has since shipped v0.1.1, v0.1.2 and v0.1.3: about 2,070 commits, a large web refactor, new migrations, Node 26 and pnpm 12, and an MCP tool consolidation. v0.1.2 also broke Stop's cascade to delegated children, which J5's agent and Crew stops rely on; v0.1.3 fixes it.

Tracking: milestone "Upstream advance: T3 Code v0.1.3". Closes #299 and closes #703. Analysis and decisions are in the project artifacts upstream-merge-2026-10-24/analysis.md and decisions.md.

What changed

This advances J5 to upstream's stable v0.1.3 (d2c440312e). It took three merges on this branch:

Merge this with a merge commit, not a squash, so j5/main keeps upstream's history.

  • Toolchain:
    • Node 26.12.1 (.nvmrc, J5 workflows, TestFlight profile);
    • pnpm 12.14.0;
    • Vite+ 1.3 and the tsc-rs typecheck;
    • J5 release builds now stamp their real telemetry channel.
  • Jackson's decisions (2026-10-24 to 2026-10-27):
    1. Agent messages adopt upstream's fold, "keep the person's own messages in view". J5 adds an identity line and its Exchange badge. Groups 1–3 of the design are built; groups 4–5 are A2A timeline: notices and platform prompts on web (design groups 4 and 5) #698, and mobile is A2A timeline on mobile: the five groups through the shared classifier #699. D16 is retired into D38.
    2. J5 deliveries to a thread with a held queue keep J5's in-order rule. D4's text is corrected.
    3. Upstream's t3 thread CLI isn't registered in j5, because it calls tools J5 hides (Reconcile J5's thread tools with upstream's once linked environments settle #695).
    4. Upstream's new telemetry is adopted. The PostHog host stays pinned to J5's project; upstream's default moved to ingest.t3.codes. The privacy page lists the new data. Dev servers follow upstream: telemetry is opt-in.
    5. Upstream's first-start dev seed is off in J5, and reads J5's home only when asked.
    6. Cmd+K's per-thread opens record is stripped for people a thread is shared with: sidebar, thread view and thread loads. Message search stays refused for them (Cmd+K message search and open ranking for people a thread is shared with #696).
    7. J5's agent instructions are rebuilt as sections for Codex. They follow upstream's v0.1.3 text, which is 60% shorter and has a relaxed model-options rule, and add orchestrator_capabilities search.
    8. Retired, because upstream now does the job:
      • D21, worktree pair isolation;
      • D37, Reconnect while reconnecting;
      • case 66, dev --watch-path;
      • the command-palette ids patch;
      • J5's own Claude plugin-skill discovery. A small step keeps "Plugin:" in Settings → Skills.
    9. Highlights: "A new look" (upstream's new design, on by default), "Your messages stay in view", and "Also new: search inside your messages", which links to j5.codes/whats-new/0-1-3.
    10. J5's edits to the docs/user pages stay until docs/user: J5 has edited upstream's user docs, and our rules disagree on whether it may #494 settles.
    11. Guest links (upstream feat: share a thread with a guest who watches live and sends messages you approve pingdotgg/t3code#24104) are hidden, because they need T3 Connect, which J5 doesn't ship. This is D40, with the exit in Should J5 run its own T3 Connect? #725.
  • Upstream's MCP tool merge (feat(server): cut T3's MCP tool schemas by a third and merge 18 tools into action tools pingdotgg/t3code#25423), which folded 18 tools into a few action tools:
    • J5's re-declared tools follow it (t3_thread_transfer, t3_queue);
    • the inventory is now 82 names;
    • t3_background_wait is admitted (Jackson, 2026-10-27). It's a Claude-only status mark for awaited background work, which upstream's Claude system prompt tells agents to call.
  • Silent breakages fixed (they merged without conflict):
    • telemetry would have gone through T3's ingest;
    • Codex would have got upstream's instructions instead of J5's;
    • the Linux agent-scope cleanup looked for t3code- units;
    • the boot-service guard compared against 0.1.0, and its tests used T3's unit names;
    • runtime pruning didn't know j5 launchers;
    • service.env could set J5CODE_HOME;
    • J5's gate tests lived in files upstream deleted, so they moved to J5-owned files.
  • J5 code brought in line with upstream:
    • Stop relies on upstream's cascade, and agent stops say "Stopped by an agent";
    • J5's run-pinned peer steer (to GPT 6 or a busy Claude turn) falls back to the queue when upstream refuses a steer to a stopping run (fix(server): a message promoted into a stopping run stays queued pingdotgg/t3code#16926);
    • orchestrator_capabilities returns upstream's new fields;
    • J5's skill refresh follows upstream's fixes;
    • the new server calls and commands are classified in the sharing scopes;
    • Effect diagnostics and upstream's comment, memo and em-dash lint rules now apply to J5 code.
  • Migrations 063–069.
    • The checker has a third reviewed manifest, reviewed-v0.1.3.v1.json, and audits each ref against the reviewed record that matches it.
    • Rehearsed on a copy of real data:
      • a raw VACUUM INTO copy migrated cleanly, and a second run changed nothing;
      • integrity, foreign keys and every j5_* row count held;
      • a stood-down copy booted twice through the production startup path, with no errors.
  • J5 relative ages freeze: adopt upstream's RelativeTime after the next advance #299: J5's relative ages use upstream's ticking hook, so they no longer freeze.

UI changes

Settings (upstream v0.1.3) and the new design

Before After
Settings: a page before, a modal over the thread after, with J5's Personas, Skills and People beside upstream's pages before after
Appearance: the new design switch under Interface before after
Connections, renamed Environments before after
People (J5's page) inside the new settings before after
Labs (upstream's Beta, renamed): no guest-links row in J5 new after
Sharing and access (new upstream page) new after
The same thread with the new design off (classic) and on (the new default) classic new design

Base's Beta page has nothing to compare with: base shows no Beta entry, so Labs is shown as new.

The "Raw A2A delivery" card in the first table below is a deliberately unknown seeded envelope (template-v999). In real use J5 draws that card only for platform notices no parser reads ("not delivered", "peer dropped the exchange", "ask withdrawn"), as j5/main does today; #698 replaces it with the design's grey notice lines.

Before After
A thread receiving agent messages (seeded): cards before, folded rows with identity line and badge after before after
An agent's ask, folded, with the sender and "Expects reply" new after
The same ask expanded, with upstream's footer new after
The asking thread: the reply folded with "Replied" new after
A spawn brief, expanded, in the new agent's thread new after
Cmd+K as the owner: a match inside a message new after
Cmd+K as a Viewer the thread is shared with: no message results new after

The "before" for live agent exchanges is the card in the first row; the live peer exchange ran on head only. Mobile is not shown: its timeline is #699.

Folding and expanding an agent's ask:

j5-agent-message-fold-and-expand.mp4

Folding and expanding a spawn brief:

j5-spawn-brief-fold-and-expand.mp4

An idle Fleet age moving from 1m to 2m (#299):

j5-idle-fleet-age-advances.mp4

Thread status at the end of the timeline (upstream pingdotgg#25401)

Before After
Thread status, running turn with a queued follow-up: stacked above the composer before, under Up next at the end of the timeline after before after
Thread status after Stop: the held message waits for Resume, above the composer before, at the end of the timeline after before after

Not captured: the PR stats split (upstream pingdotgg#22189). The PR panel needs a GitHub sign-in, and the test servers run without one.

What's new

Before After
What's new: the three new highlights at the top before after
The Learn more page, j5.codes/whats-new/0-1-3: the top new after
The Learn more page, full length new after

Live testing

Round 1, at the nightly merge (60c7d590e6). Three GPT-6-Luna testers; live turns on Claude Haiku and GPT Luna. Each needed a second pass after stopping its first one early. Reports are under test-reports/j5code-upstream-sync-20261024/.

  • Timeline and UI: pass on head. The before shots use seeded data only.
    • A live Peer Agent spawn, its brief, and an ask with its reply.
    • Viewer and Collaborator guests, and Cmd+K.
    • What's new.
    • An idle Fleet age ticking over.
  • Agent paths: partial.
    • Codex and Claude both see J5's instructions.
    • A Luna and a Haiku turn.
    • A spawn, and an ask with a reply that survived a restart.
    • Model search.
    • The Stop labels.
    • A two-seat Crew.
    • The "Plugin:" line, and no thread command.
    • One lapse: during model search the tester spawned Claude Sonnet 4.6, which is outside the authorized live-test models, after Haiku 4.5 was refused (j5_spawn_agent can't spawn a model that has no reasoning option #704).
  • Upgrade, first run and peering: partial.
    • Upgrade from origin/j5/main: threads, a message found by search, and a scheduled task survived. The Inbox ask and the helper's reply weren't re-checked after the upgrade.
    • A --fresh first run.
    • A cross-server ask and reply over --peer.

Round 2, at stable v0.1.3 (738ceea3d6). These are the policy items the live-testing coordinator flagged.

  • The telemetry host pin: pass. Analytics go to us.i.posthog.com, and never to ingest.t3.codes.
  • Held queue: pass. A J5 delivery after a Stop kept send order: B wrote all three messages to a file as 1, 2, 3. The first two joined B's running Claude turn (fix(server): agent messages join a busy Claude agent's turn instead of queueing #690).
  • Stop cascade with a child mid-command: pass. The child stopped while hold.sh was running.
  • Full-access approval on a Haiku Crew seat: partial. A .git/config write raised no prompt, so where a Full-access ask lands is still not observed.
  • Steer by default: a follow-up you send to a running turn now steers (upstream feat(settings): follow-ups steer the running turn by default pingdotgg/t3code#24718). This was seen, but the held part is partial.
  • Rig mistake: the tester first set things up with its own J5 tools, which reach the live server. That left an open Crew proposal in the tester's own thread on the live server and a stray thread, now archived. The live-testing coordinator has been told.

Review panel's interaction pass: GPT-6-Astra on Haiku drove:

  • folded asks and briefs;
  • the @ persona and /playbook pickers;
  • the Skills source picker and its "Plugin:" line;
  • What's new;
  • a Viewer's read-only view and Cmd+K;
  • the Artifacts panel.

Not exercised live:

  • the GPT 6 steer fallback (a narrow window; covered by a test);
  • Electron, the packaged app, a mobile native build, relay and tunnel connections;
  • a Full-access ask actually raised on a Crew seat.

Review

The panel was Claude Opus 5.5 (server, packages, records) and GPT-6-Astra (clients, with live interaction). Neither found anything blocking. Reports: reviews/705/opus.md and reviews/705/astra.md.

Fixed from the review:

  • the server's test setup now also clears J5CODE_HOME;
  • J5's text again says "Settings go in target.options";
  • an expanded spawn brief or peer message now offers "Open thread".

Left as a nit: AccessGate's wrappers add a second tracing span per request.

Bugs found: none in the merge. Related issues: #704, j5_spawn_agent refusing models with no reasoning option, which predates this. #703 is fixed by upstream's new test setup, and closes with this PR.

Upstream impact

Upstream-owned files that were edited, moved or retired are recorded in FORK.md:

  • cases updated across the inventory;
  • new cases 82–92;
  • retired: case 66, and the D21, D37, command-palette and test-fixture patches;
  • the 2026-10-24 pin-log row, with stable v0.1.3 as the pin.

Product changes to upstream behavior are register entries:

  • new: D38 (replacing D16), D39, D40;
  • retired: D21, D37;
  • updated: D1, D2, D4, D6, D19, D27, D31.

Each carries Jackson's decisions.

Checklist

  • One concern: an upstream advance and the adaptations it forces, which is one PR by J5's rule. The timeline groups 1–3, highlights, J5 relative ages freeze: adopt upstream's RelativeTime after the next advance #299, and the guest-links hiding ride along as decided; nothing unrelated.
  • Tests cover the changed behavior. New and relocated tests are listed in FORK.md. The full suites pass except environment-only failures: a desktop libsecret test needing pkg-config, and the web "renders" project, which CI doesn't run and which passes when run as scripts/render-metrics.ts runs it.
  • UI changes: before/after screenshots and videos above
  • Live testing: the section above says what ran live and what did not
  • Upstream-owned files: recorded in FORK.md
  • Upstream product: each change has a decision and a register entry.
  • Surfaces:
  • Docs: register, convergence watchlist, A2A rendering definition, J5 tool docs, FORK.md, BRANDING.md, privacy page, AGENTS.md and the docs/user pages updated in place

Claude Opus 5.5 in Claude Code, running in J5 Code, with:

  • Claude Fable 5.1 (timeline design);
  • Claude Opus 5.5 subagents (resolution, fixes, records, rehearsal, review);
  • GPT-6-Astra (review);
  • GPT-6-Luna (live testers).

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
j5-code Ready Ready Preview Oct 28, 2026 3:02am UTC

Request Review

juliusmarminge and others added 17 commits October 25, 2026 16:27
… every render (pingdotgg#25134)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…he Duo fold composer (pingdotgg#25141)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…cing it (pingdotgg#25068)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
PixPMusic and others added 4 commits October 26, 2026 21:48
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflict resolution, the v0.1.3 migration review, decision 12 (guest
links hidden), and J5's instructions ported onto upstream's shorter text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jacksondr5 and others added 3 commits October 27, 2026 10:37
… lint, records

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gration rehearsal

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jacksondr5 and others added 2 commits October 27, 2026 11:38
…, port target.options sentence

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jacksondr5 and others added 2 commits October 27, 2026 22:07
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Jacksondr5
Jacksondr5 marked this pull request as ready for review October 28, 2026 02:09
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pects J5 branding

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

1 active deployment
Preview — 6cb5c515 Deployed Oct 28, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet