Repository navigation
Conversation
This was referenced Sep 26, 2026
saphid
force-pushed
the
pr/t0-ghostty
branch
4 times, most recently
from
October 1, 2026 21:26
2711c05 to
a5b72d7
Compare
Add @t3tools/extension-sdk (authoring API, versioned API catalogue, React surface adapter, t3-extension build|check CLI) and @t3tools/extension-runtime (install, discovery, worker host, capability-scoped API and stream broker), plus the wire contracts in @t3tools/contracts. No app loads extensions yet. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The server installs extension packages under T3 home, runs their server entry in the extension worker, and serves them over the authenticated environment HTTP API with the same session and pairing checks as native RPC. Host implementations cover the public workspace, terminal, VCS, PR, browser, resource-lease, composer, orchestration, provider-status and UI client APIs. The extensions HTTP group and the new WebSocket methods join @t3tools/contracts here, next to their handlers. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Web and desktop load trusted extension packages through the authenticated extensions API. Settings > Integrations > Environment extensions manages them, and the thread header Extensions menu opens their views in the side panel or bottom dock. The six built-in panels mount through the same surface contract via native bridges with unchanged behavior. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ty-terminal The libghostty-vt renderer lives in apps/web, so any other host that renders a terminal has to vendor its TypeScript and its WASM and font bytes. packages/ghostty-terminal now owns core, keyCodes, renderer, runtime and surface (moved with their tests), the WASM and font under assets/, and the leaf helpers the surface needs. The package never fetches its assets: loadGhosttyRuntime takes the bytes and memoizes per sources object, and the surface takes the runtime and the symbols-font URL as options. Web keeps one small loader that fetches each WASM once per page, and its helpers re-export from the package instead of keeping a second copy. The surface also gains a replay bracket and an in-place clearScreen for hosts that remount a session or clear its history. No visible change in web. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Member
|
Thanks for working on this. We merged the orchestrator V2 rewrite in #2829, and we are closing this PR as part of that transition. This extension layer includes the pre-V2 extension host dependency. EnvironmentExtensions and agentSessionsApi depend on deleted ProjectionSnapshotQuery, OrchestrationEngineService and ProviderSessionDirectory; provider credential wiring modifies deleted ProviderService. Rebuild the host on V2 and recreate this dependent layer. Sorry for the extra work this creates. If the change is still needed on V2, please rebuild it on current main, verify it there, and open a new PR linking back here. We're closing the current implementation without assuming the underlying request is resolved. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The terminal renderer was owned by web, forcing other hosts to copy its implementation and assets. This moves the renderer, runtime, WASM/font assets and terminal link/key helpers into the Ghostty workspace package.
Web loads bytes once and supplies them to the shared runtime. Replay, history clears, keyboard releases and native link behavior remain covered by the renderer suites; the Terminal extension builds on this package.
Review
Depends on #13822. Review this layer’s last commit; the comparison against main includes its dependencies.
Verification
The only failing results are server HTTP tests on the author's machine: an unrelated local service occupies the same port number on IPv4, causing bootstrap requests to receive that service's 403 or 404 responses. The same failures occur on unmodified main, and the same suite passes in full on layers containing all server changes, including Terminal. CI on Linux is the authority for the server suite.
The final integrated extension rebuild and bundle-freshness check passed. Generated bundles are excluded from the review layers and built from source there.
Earlier integration testing used real web and Electron desktop clients and real GitHub workflows. Desktop testing verified Browser menus, picture-in-picture and pressed-state styling; web testing verified Diff gap expansion, folding/reveal and Open/Copy actions for all four path cases, the Version Control workflow and Files remote editor routing. Agents testing verified launch, script viewing and opening a seeded session. This evidence covers the integrated implementation; these individual PR branches have not had a fresh real-client pass.
Testing against local Forgejo verified both native and extension reviewer pickers in the web client: candidates appeared once without repeated listing, user and team assignment/removal succeeded through the picker, and disabled-state reasons appeared on hover and keyboard focus. GitLab workflows remain unverified in a real client, and mobile extension support remains follow-up work.
Current parity assessment: 182 PARITY / 0 SHIPPED-UNVERIFIED / 0 GAP / 2 DEFERRED of 184 scored rows, plus one N/A.
GPT-6.1 Sol via T3 Code