Skip to content

Rebuild the Lazurio overlay on upstream T3 Code v0.1.9 - #192

Merged
immakermatty merged 0 commit into
mainfrom
lazurio/rebuild-v0.1.9
Nov 13, 2026
Merged

immakermatty merged 0 commit into
mainfrom
lazurio/rebuild-v0.1.9

Conversation

@immakermatty

@immakermatty immakermatty commented Nov 12, 2026 •

Copy link
Copy Markdown

Status: ready for review on the exact head 59dab4e0a0. Lazurio Fork CI is green on it (https://github.com/Lazurio/t3code/actions/runs/43178346199, all four required checks). This is the rebuild of the Lazurio overlay on upstream T3 Code v0.1.9 (stages 2–8 of docs/operations/lazurio-fork-release.md). It is never merged by its button: its head becomes main through the swap in stage 6, after an approval on this exact head.

It replaces #187 (v0.1.8, APPROVED on 9a4a521cdd), which never reached main: upstream released v0.1.9 during the rebuild, and the rebuild moved straight to it (decision N, #185 (comment)). The approved stack was cherry-picked onto v0.1.9 row by row, so review can be limited to the range-diff against 9a4a521cdd and the gates v0.1.8 → v0.1.9 touches.

Rebuild issue: #185. The v0.1.9 inventory, decisions B1–B8, the stage 5 gates and every check with its result: #185 (comment)

Inputs

Old base v0.1.7 = 322f6544dfad0a3c8a0c8cbecf2c7f7874b14268 (main's base)
New base v0.1.9 = 24e77473ecf41bc1f7142529c7911c1c1aae1d76
Source stack #187's approved head 9a4a521cdd2969f2382838f7803de92a6326cb42 (rows of main rebuilt on v0.1.8)
expected_old_main cab18ad99be7d16dfd32a1cb1552f8ab0e9e3dc5 (v0.1.7-lazurio.1)
candidate_head 59dab4e0a029c05336d63cd9f307ac0dcfb2201f

What changed against the approved v0.1.8 stack

git range-diff bf469bb196..9a4a521cdd 24e77473ec..59dab4e0a0 reports 26 of 32 commits as equal. The six that differ:

Gates v0.1.8 → v0.1.9

  • SERVICE_LAUNCHER_PROTOCOL stays 3 (apps/server/src/cloud/serviceProtocol.ts:4) and ORCHESTRATION_PROTOCOL_VERSION stays 2.
  • packages/contracts/src/auth.ts, cli/update.ts, launcherLink.ts, holders.ts, both browserView.ts and cli.test.ts are unchanged.
  • The only new setting is screenReaderAnnouncements (B1), the only new capability is mcpHostedApproval (B8), and the only new migration is 081_ProjectionMessageSearchText (B2: back up the database before every update to 0.1.9; rolling back leaves the new column empty by code reading, not verified by running it).
  • Project actions now auto-open Preview in web clients (fix(web): project actions auto-open Preview in web clients pingdotgg/t3code#34048) only where serverBrowser is advertised (previewRuntime.ts:35-37); a Lazurio Environment does not advertise it (ServerEnvironment.ts:297), so nothing opens, as on v0.1.8 (B7).

Checks on 59dab4e0a0 (local)

  • vp fmt --check, pnpm run lint, typecheck of t3 and @t3tools/web, knip: all exit 0.
  • Contract test: 51 tests, exit 0.
  • Overlay tests by the CI gate: OVERALL 0 (server 1630 passed, 15 skipped; web 2399 including browser tests in Playwright's Chromium; client-runtime, contracts, effect-acp, shared, scripts all passed).
  • Mutations: removing the row 4 twin, passing repositoryRoot to guardScratch, removing B1's cap from the function and from the selector each turn a test red.
  • Release version check from a clean git archive without node_modules, as the dispatch runs it: 0.1.9-preview.20261112.1 and 0.1.9-lazurio.1 pass; 0.1.7-lazurio.1 fails with "already exists". Since that run, release scripts and workflows are unchanged apart from the contract test's new pin.
  • Name scan of the diff and the commit messages: counts equal to Rebuild the Lazurio overlay on upstream T3 Code v0.1.8 #187.
  • An independent read-only audit in three groups of rows found no lost behaviour, bug or weakened test; each of its findings is fixed or recorded as a decision in Přestavba na upstream T3 Code v0.1.9 #185.

Not verified here: what people see in the browser on a hosted Environment (screen reader levels on Buddy's surface, T3 Connect's /connect-agent, row 17's look with upstream's new list and diff-search styles). These are checked on canary in stage 7.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

🤖 Generated with Claude Code

Note

Rebuild the Lazurio overlay on upstream T3 Code v0.1.9

  • Rebases the Lazurio overlay onto upstream v0.1.9, re-applying Lazurio-specific layers: the Lazurio overlay layer, Buddy surface routes, managed-folder startup project bootstrap, provider-refresh route, and Lazurio branding/badge in web and mobile.
  • Brings in large upstream feature areas carried by the rebuild: voice input with environment/cloud transcription and a mobile voice-transcription native module, provider model catalogs with on-demand refresh, stopOnSettle for project scripts and terminals, scheduled-task thread modes, model mentions in the composer, and pull-request action summaries.
  • Replaces instanceof error checks and Data-tagged errors with Schema-tagged errors throughout (providers, source control, relay, desktop, mobile), and switches all package typecheck scripts from tsc to effect-tsgo tsrs.
  • Adds a Cursor Origin source-control driver, per-source-control repository URL extraction from pasted page URLs, and 192×192/512×512 web icons per brand.
  • Risk: the rebuild touches most packages at once; notable behavior changes include session cookies using __Host- names with an external origin (utils.ts), GitHub rate-limit classification requiring body/error-text evidence (GitHubRequestPolicy.ts), and Cursor keychain access removed in favor of API-key-only usage reads (driver.ts).

Macroscope summarized 59dab4e.

@immakermatty

Copy link
Copy Markdown
Author

Review request: head 59dab4e0a029c05336d63cd9f307ac0dcfb2201f, the rebuild of the Lazurio overlay on upstream T3 Code v0.1.9. Lazurio Fork CI is green on this exact head (https://github.com/Lazurio/t3code/actions/runs/43178346199). The inventory, decisions B1–B8, the gates and every check with its result are in #185 (comment).

This head is #187's approved head 9a4a521cdd (APPROVED in #187 (review)) replayed onto v0.1.9 (decision N, #185 (comment)). The review scope on this head is therefore:

1. Row changes against the approved stack. git range-diff -s bf469bb196..9a4a521cdd 24e77473ec..59dab4e0a0: 32 commits, 26 equal (=), 6 changed (!): rows 4 (4c4c0e1952), 9 (6c83822f37), 15 (04c8ca9cfb), 28 (4d481d0d55), 30 (64f118e86a) and 5 (59dab4e0a0). bf469bb196 is upstream v0.1.8 and 24e77473ec is upstream v0.1.9 (git ls-remote upstream refs/tags/v0.1.8 refs/tags/v0.1.9).

2. Overlay content that differs. overlay-delta (overlay lines of bf469bb196..9a4a521cdd against 24e77473ec..59dab4e0a0) differs in 12 of the 298 overlay files: the issue form and lazurio-fork-ci.yml (pins), selfUpdate.ts (row 4), managedFolderGuards.ts and its test (row 15), SteeringCompletion.integration.test.ts (row 30, a dropped duplicate import), MessagesTimeline.tsx, buddySurfaceTimeline.ts, its new buddySurfaceTimeline.test.ts and buddySurfaceTimeline.browser.test.tsx (row 28), the runbook and the contract test (row 5).

3. Stage 5 gates, the base diff bf469bb196..24e77473ec in the files the gates name: 10 files, +145/−25: RpcAuthorization.ts, pinnedRuntime.ts, selfUpdate.ts, Migrations.ts with the new 081_ProjectionMessageSearchText.ts, packages/contracts/src/environment.ts (mcpHostedApproval; the orchestration protocol version stays 2), packages/contracts/src/settings.ts (screenReaderAnnouncements), packages/shared/src/cliRelease.ts (a comment only), scripts/install.sh and scripts/install.ps1. packages/contracts/src/auth.ts, apps/server/src/cli/update.ts and serviceProtocol.ts do not change between the bases. Upstream's own v0.1.8 → v0.1.9 change outside these files (765 files) is not part of this review.

Please check first:

  1. Row 28, B1: the screen reader on Buddy's surface. buddyAnnouncementLevel (end of apps/web/src/lazurio/buddySurfaceTimeline.ts) caps everything at messages on Buddy's surface and leaves every level alone elsewhere; MessagesTimeline.tsx:574-577 reads the setting through it. Outside the settings panel, MessagesTimeline.tsx is the only reader (git grep -n screenReaderAnnouncements -- apps/web/src). Does anything else announce T3's steps on Buddy's surface? The contract test pins the selector and that the timeline reads the setting only through it.
  2. Row 15, B3: a new thread on a managed Environment. Upstream picks the last-used project before the new-thread handler; managedNewThread still sends any project to the Folder's. guardScratch passes baseDir to ScratchUnavailableError (fix(server): say why threads without a project are unavailable pingdotgg/t3code#32342).
  3. Row 4, B4: the order in selfUpdate.ts's mapError after upstream's download diagnostics (fix(server): failed updates report download diagnostics pingdotgg/t3code#33239).
  4. Row 30: SteeringCompletion.integration.test.ts keeps the row's 5 tests next to upstream's 7 new restart tests.
  5. B2: migration 081 and the backup before each update to 0.1.9.

Known open items, not blockers for this review: #191 (/goal in a turn waiting on a question, B5), #190 (the upstream watch's schedule), A12 on the darwin-arm64 archive from the v0.1.9 preview, and the browser checks for canary (B1 levels on Buddy's surface, B8 /connect-agent, row 17's look).

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

@immakermatty, PR zatím nemá assignee. Prosím určete a přiřaďte odpovědného za jeho dotažení do main podle postupu přestavby.

— Pablo

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

Review zatím nemohu uzavřít: celý diff proti main (2 674 souborů) jsem neprošel, a proto je potřeba jeho úplná kontrola; při dílčí kontrole jsem navíc ověřil, že čtečka na ploše Buddyho při nastavení messages nebo everything může přečíst průběžnou zprávu skrytou v chatu, protože MessagesTimeline předává announceru nefiltrované timelineEntries a turnDetail čte dokončené mezizprávy, takže @immakermatty prosím o opravu a test tohoto scénáře.

— Pablo

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

Review nemohu uzavřít, protože zbývá úplně zkontrolovat podstatnou část diffu proti main (2 674 souborů) včetně klientů a serveru; @immakermatty, pro souhrnný verdikt je potřeba rozdělit zbývající čtení a ověřit výsledky na tomto headu.

— Pablo

@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

The review run for head 59dab4e ended without a verdict after 1 attempt, so no review of this head is on its way.

  • Attempt 1: blocked

What blocks it: #192 (comment)

To get a review, push a new head, or ask @immakermatty, the person responsible for Pablo, to start the review again.

— Pablo

@immakermatty

Copy link
Copy Markdown
Author

Reply to the blocked review run on head 59dab4e0a029c05336d63cd9f307ac0dcfb2201f (#192 (comment) and the two comments before it). The head is unchanged; please give a verdict on it.

1. Review scope: the overlay, not the 2,674-file diff against main. main is still the v0.1.7 stable (cab18ad99b), so the PR diff carries all of upstream v0.1.7 → v0.1.9. The runbook (docs/operations/lazurio-fork-release.md on main, section 4, the paragraph "Review přestavby posuzuje overlay a jeho styk s upstreamem, ne celý upstream") sets the scope of a rebuild review: the files of git diff --stat "$NEW_SHA" HEAD, the row changes from git range-diff, the contract-test seams and the stage 5 gates; every other file is byte-for-byte upstream v0.1.9 and is not read one by one. On this head:

  • git diff --shortstat 24e77473ec 59dab4e0a0 → 298 files changed, 47887 insertions(+), 331 deletions(-) (the overlay on v0.1.9);
  • git diff --shortstat origin/main 59dab4e0a0 → 2674 files changed (overlay plus upstream v0.1.7 → v0.1.9, outside the scope).

The 298 overlay files were reviewed and APPROVED on v0.1.8 in #187 (#187 (review)); this head replays that stack onto v0.1.9, and the three parts of the scope with exact commands are in the review request (#192 (comment)): the 6 changed rows of the range-diff, the 12 of 298 overlay files whose content differs, and the 10 gate files between the bases. A large overlay can be split by row groups with one verdict on the exact head, as the same paragraph says.

2. The screen reader on Buddy's surface: no hidden message is read. I checked the scenario against the code and in the browser:

  • What the announcer receives is upstream's own wiring: MessagesTimeline.tsx:1126 passes the unfiltered timelineEntries exactly as upstream v0.1.9 does (git diff 24e77473ec 59dab4e0a0 -- apps/web/src/components/chat/turnDetailAnnouncement.ts apps/web/src/components/chat/ThreadActivityAnnouncer.tsx is empty; in MessagesTimeline.tsx the overlay only wraps the setting in buddyAnnouncementLevel, lines 575-577). Upstream documents the choice at turnDetailAnnouncement.ts:74.
  • A message is spoken only once it is finished, i.e. the agent wrote it and went on working in the same run (turnDetailAnnouncement.ts:120-126), and only while the thread is working: nextTurnDetailAnnouncement returns no messages once the status is idle (turnDetailAnnouncement.ts:179-182).
  • While that run is working it is unfolded (deriveActiveVisualResponseRunIds, MessagesTimeline.logic.ts:946-973, used at 1594), so the intermediate message is a message row, and Buddy's surface keeps message rows (buddySurfaceTimeline.ts:37-40). It leaves Buddy's chat only when the turn ends and folds, and by then the announcer treats the turn as history.
  • Browser check on this head (headless Chromium, vp test run): a probe added to a copy of buddySurfaceTimeline.browser.test.tsx, with Buddy's surface, a running turn, a completed thought, the intermediate message "Let me look at your calendar." and a command still in progress, asserts that the message is on screen next to the quiet row: Tests 1 passed. The probe was not committed.

So at messages (and at everything, which Buddy's surface caps at messages, decision B1) a screen reader hears an intermediate message while Buddy's chat shows it, the same as a sighted person. Not verified by a test: a steer that supersedes an attempt in the same render in which that attempt's message becomes finished; the code there is upstream's, unchanged, and folds the same on every surface. If you see a concrete path where a message is spoken that Buddy's chat never showed, please name it and I will fix it in row 28 with a test that fails without the fix.

3. Assignee. A rebuild PR is never merged with the button: its head becomes main by the swap in stage 6 of the runbook (section 4, "PR slouží jen CI a review a tlačítkem se nikdy nemerguje"), so it has no assignee by design.

Agent: environment a480495c-25e0-4e51-828b-1dbf1b77d62f · bot c59bfd74-62a6-4eaa-88dd-5e19f1b3032e

@immakermatty
immakermatty requested review from agentrozjedemeai and removed request for agentrozjedemeai November 12, 2026 08:22
@agentrozjedemeai

Copy link
Copy Markdown
Collaborator

Review nemohu uzavřít: týmové pokyny vyžadují celý diff proti main (2 674 souborů), který jsem neprošel, zatímco runbook vymezuje užší kontrolu přestavby; @immakermatty, prosím o zajištění úplné kontroly podle týmových pokynů a lokálního prostředí se závislostmi pro ověření kontraktního testu.

— Pablo

@agentrozjedemeai agentrozjedemeai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVED. No blocking findings.

Matěj specified this review's scope in #192 (comment), following section 4 of the runbook on main. I compared the overlay's 298 files with the approved #187 stack, checked the six changed range-diff rows, contract seams and stage 5 gates. The local contract test passed 51/51; the focused Buddy announcement and managed-new-thread tests passed 15/15. Lazurio Fork CI's four jobs succeeded on this head.

Non-blocking: Canary still needs the documented browser checks for Buddy's announcement levels, T3 Connect and the appearance changes; rollback after migration 081 has been assessed by reading, not by running it.

Order and migrations: Back up each persistent database before updating to 0.1.9, as recorded in #185 (comment); complete the canary checks and A12 before stable.

Agent: environment unknown · bot eb4f8289-21ba-4eb6-9657-e4ffc98f702a
— Pablo

@immakermatty
immakermatty merged commit 59dab4e into main Nov 13, 2026
8 checks passed
@immakermatty
immakermatty deployed to lazurio-t3code-release November 13, 2026 07:00 — with GitHub Actions Active

This branch was successfully deployed

1 active deployment
lazurio-t3code-release — 59dab4e0 Deployed Nov 13, 2026 by immakermatty via Publish release and image #81
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants