Repository navigation
0.1.0-lazurio.4: terminal pages in the panel, Lazurio release default, Czech lines, no dead prompt links, view for app users - #89
Conversation
A thread's agents carry AGENT_BROWSER_SESSION=t3-<thread id>, so a page an agent opens through BROWSER or xdg-open (on a Remote Environment the Environment browser's `lazurio browser open`) joins the thread's strip and shows in its right panel. A thread's terminal did not carry it, so a page opened there (`gh auth login --web`, a CLI's sign-in, a dev server's auto-open) sat in the Environment browser where nobody held it (#73). The terminal manager now puts the same session, from overlay row 8's naming helper, into the environment it starts a thread's shell with: one call to setTerminalSession in terminal/Manager.ts, right where it builds that environment, on open and on restart. Windows keeps upstream's environment, as for the thread's agents. The terminal still reaches upstream's agent scope without its thread, because upstream keys its bookkeeping of a thread's agents (oomKilled, clear) by thread. A terminal that is already running gets the session once it restarts. terminal/Manager.ts joins the allowlist with the Environment browser's files, the contract test pins the call and the thread-less agent scope of a terminal, and the runbook's row 8, the overlay spec and the README say which processes carry the session now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ode by default Only the service's drop-in sets T3CODE_RELEASE_REPOSITORY, so a shell on an Environment (SSH, Codex Desktop over SSH) lacks it. There `t3 update` listed the releases of pingdotgg/t3code, where upstream's 0.1.0 ranks above 0.1.0-lazurio.N, and installed upstream T3 Code over the distribution: the Folder guards, sign-in through Lazurio, the Environment browser in the panel, self-pairing and the update notice were gone, and a Machines pin did not bring them back (the channel part of #22). The default release repository in cliRelease.ts, where overlay row 4's variable lives, is now Lazurio/t3code. Every consumer derives the index and the downloads from it: the update notice (releaseIndex.ts), the Update button and `t3 service install` (selfUpdate.ts, bootService.ts and pinnedRuntime.ts), `t3 update`, and their "not published" errors. The install scripts carry their own copy of the default and follow it. An explicit T3CODE_RELEASE_REPOSITORY still names another repository. Outside the distribution's server, two consumers share the default and are never built from this repository: the mobile app's release check and the desktop app's SSH runner, whose upstream test now expects the new base URL and joins the allowlist. Machines keeps setting the variable: `t3` and the server of 0.1.0-lazurio.3 and older still need it, and an Update by the button downloads with the old server. The runbook says where the export is still needed, the contract test pins the default for the index, the downloads and both install scripts, and the README no longer ties the update channel to the variable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…zech browser The overlay speaks Czech where the person's browser does (prefersCzech), except in two rare states that stayed English for everyone (#75): the right panel when the Environment stops offering its browser, and the toast when a prepared prompt from the Launchpad cannot open. The panel now says "Prohlížeč není k dispozici" / "Toto Prostředí teď prohlížeč nenabízí. Jeho záložky se vrátí, až ho zase nabídne." in Czech, and in English "This Environment does not offer its browser now." with a capital Environment. The toast says "Připravené zadání se nepodařilo otevřít" / "Do pole zprávy se nic nepřidalo." in Czech and keeps its English. Its words come from failedPromptDraftText in promptDraft.ts, beside the logic that decides the prompt failed, as the strip's close toast takes its words from closeToastText. Both files are the overlay's own (rows 9 and 6); no upstream file changes. The panel's test reads both languages, promptDraft.test.ts the toast's words, and the contract test pins that the toast asks for the person's language. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream v0.1.0 shares a prompt as a link (pingdotgg#18454): "Copy prompt link" on every sent message and in the command palette (there also "Copy prompt link with repo and model") copies a link to upstream's hosted app with the prompt's text in its address. On a managed Lazurio Environment such a link opens no thread: new threads start only in the Lazurio project, and its server offers no Scratch (#77). The Organization Admin chose to hide these entries. They now leave where "Add project" does, through the same everyEnvironmentManaged: when the web knows at least one Environment and every one of them is managed. In the palette one condition on promptLinkInput, which feeds both entries, keeps them out. A sent message reads one derived value for the whole chat (lazurio/managedPromptLinks.ts), so it renders again only when that answer changes, not with each change of a server's config. The overlay's own prepared-prompt link (row 6) is unchanged, and so is upstream's /new link page: an incoming link still ends as before (the overlay spec says how). MessagesTimeline.tsx joins the allowlist with the managed Folder's hooks. The contract test pins both seams, the derived value, and that these are the only places where the web builds a prompt link to share. The overlay spec, row 15 and the runbook's managed Folder section describe it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The official desktop and mobile apps show no Environment browser on a Lazurio Environment, by design, and the host cannot see the person's screen, so preview_open answers visible: true for them too. Its result carried a view address only for another Environment's tab, so an agent in a thread opened from the desktop or mobile app could point the person at a panel that is not there and had no address to give instead (#88). The Environment browser host now answers every preview_open of this Environment's own browser with view, `<view origin>/t/<tab id>`, the address the right panel frames. The origin is the one the Environment's declaration names (`lazurio browser link --json`), which the host already keeps and shares with the thread strips; a declaration without a link gives no view. The tool's description says that a person without the inline preview, in the desktop or mobile app, opens that address; in web Chat a link to it opens in the right panel already. Another Environment's tab keeps its view and its advice. The sentence is appended to upstream's description in tools.ts, which already carries the overlay's result schema. The host's tests cover the thread's window, a handed-over tab, another window, background work and a declaration without a link, and the contract test pins the answer and the description. The overlay spec, row 10 and the allowlist's reason say so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two things the people on Environments need to hear, which the runbook did not say. An Update by the button leaves the open page running the old client until it is loaded again: upstream reloads a page only for a stale chunk or from its error page (#32). The update channel's section now says to reload it after an Update and to tell people so in the release announcement. The official mobile app connects to an Environment on 0.1.0 only in version 2.0; 1.x speaks the older orchestration protocol and cannot. Version 2.0 is in the App Store and Google Play since 2026-10-15. Stage 8 says so beside the desktop and mobile step, for the announcement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A link with a repository that matches a history project still opens an unsent draft in the Lazurio project, so "opens no thread" was too broad. The overlay spec's "Odkaz, který přijde" keeps the exact behaviour. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
agentrozjedemeai
left a comment
There was a problem hiding this comment.
@immakermatty APPROVED on exact head 31d920049323ce6f4a0dbc5cb342d2a8d0d96d4a. Reviewed all seven follow-ups and the overlay allowlist: terminal session is applied to the spawn environment without changing AgentScope's thread bookkeeping; release repository defaults and explicit override agree across the CLI/install scripts; managed prompt-link controls, Czech text, and preview_open's per-tab view match the stated scope. Local detached checkout: release contract 36/36; focused tests 121/121 and adjacent terminal/install/managed-folder tests 104/104 (Node 24.13.1); web, server, shared and ssh typechecks passed; scoped formatting and git diff --check clean. Lazurio Fork CI completed green on this SHA, four successful jobs; no unresolved review threads. Review only; no merge or deployment performed.
Why
A triage of every open issue against
0.1.0-lazurio.3found five small gaps that people meet in Chat or that can silently strip the overlay from an Environment. The Organization Admin approved all five for0.1.0-lazurio.4.What changes
AGENT_BROWSER_SESSION, the same name row 8 gives its agents, soBROWSER/xdg-open(on a Remote Environmentlazurio browser open) adds the page to the thread's tabs. Sign-ins of developer CLIs started in a thread's terminal can be finished in Chat. The session travels in the environment the terminal manager starts the shell with;AgentScope.wrapstill gets no thread, because upstream keys its per-thread agent bookkeeping by thread. Terminals already running get it after their restart.t3 updatein a shell no longer installs vanilla upstream (Canary: t3 update přes SSH obchází launcherův trial a snapshot DB a nevidí kanál služby #22, channel part). The distribution's default release repository isLazurio/t3code; an explicitT3CODE_RELEASE_REPOSITORYstill wins. Index, downloads,t3 update,t3 service installand the install scripts all follow the same default. Machines keep setting the variable, which Environments on.3and older still need.everyEnvironmentManaged). Those links point to upstream's hosted app with the prompt text in the address and mostly fail there.preview_openhands the agent the tab's view address (Agents cannot hand desktop and mobile app users the page they opened in the Environment browser #88),<view origin>/t/<id>from the Environment's browser declaration, for every tab it opens or adopts, and the tool description tells the agent that a person without the inline preview (desktop or mobile app) opens it.Upstream files
Newly allowlisted in
lazurio-fork-ci.yml:apps/server/src/terminal/Manager.ts: one import and one call to the overlay helper.apps/web/src/components/chat/MessagesTimeline.tsx: one import, one hook call and the button's condition.packages/ssh/src/tunnel.test.ts: the expected default download URL.Already allowlisted, changed further:
CommandPalette.tsx(one condition),packages/shared/src/cliRelease.tsand its test (the default),scripts/install.shandinstall.ps1(the default),apps/server/src/mcp/toolkits/preview/tools.ts(one sentence appended; upstream's text stays byte-identical).What does not change
NewThreadLinkViewis unchanged; the overlay spec describes what an incoming upstream link still does.T3CODE_RELEASE_REPOSITORY=Lazurio/t3code.Verification
threadIdtowrap, restoring the upstream default, dropping allowlist entries, each string and each hide condition): each fails as expected.TerminalManagerconfirmed the PTY getst3-thread-1on open and on restart, and nothing on Windows.printenv AGENT_BROWSER_SESSIONandxdg-open, the Czech lines, no "Copy prompt link", andt3 updatewithout the variable offering only Lazurio stables.Rollout and risks
Preview from
main, Ring 0 check in the browser, then stable0.1.0-lazurio.4. Moving the fleet to.4is a separate wave with the Admin's go. Until an Environment runs.4, an SSHt3 updatethere still needs the exported variable. Someone who also has an unmanaged Environment still sees the prompt-link entries, the same as "Add project".Closes #73, closes #75, closes #77, closes #88. Refs #22 (the trial and snapshot part stays upstream design and is in the runbook), #32.
🤖 Generated with Claude Code