Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for Compose Preview Catalogs

Pod holds 18 of 41 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to Compose Preview Catalogs.

Most discussed

ui_builder_render_native returns no frame for a CMP catalog on preview.coo.ee

Status (2026-09-07). Retitled: the first of the two findings below is fixed, the second is not.

  • verticalScroll blocks the whole export — fixed. ScreenDocumentProjection now emits .verticalScroll(rememberScrollState()) with the state constructed inline, and its KDoc records that the old refusal "mislocated the state … a wrong diagnosis". Covered by OrdinaryScreenExportTest, which asserts both the call and its import with `assertEquals(emptyList(),…

Read the thread · 2026-09-06 · closed · 7 comments

Tracking: OpenAI MCP Extensions (ChatGPT/Codex desktop entrypoints, file viewers, mentions, model context)

OpenAI published MCP Extensions (docs). They are openai/* additions to MCP and MCP Apps, declared in tool and resource _meta, and hosts that don't understand them ignore them. They let a plugin appear on ChatGPT and Codex desktop surfaces the user opens directly, instead of only when the model decides to call a tool. This issue tracks what we build on them. Each…

Read the thread · 2026-09-30 · open · 4 comments

test: live verification of chat surfaces (Claude in Slack) — smoke script + manual script

Tracks live verification of the chat-surface work from #1254, which shipped in #1258. Server tests cover the contract. This issue covers what only a real deployment and a real Slack workspace can show. It has enough context to pick up cold.

Background (read first)

Read the thread · 2026-10-01 · open · 3 comments

ui-builder: remote-m3 declares asset/image but the widget generator refuses every one, so no widget with artwork exports

What happens

remote-m3 lists asset/image among its components, so the builder lets you place artwork in a widget's content slot and the canvas draws it. The Remote Compose generator then refuses the whole document:

// `asset/image` has no Remote Compose counterpart this generator can write

with one diagnostic:

{"severity":"error","code":"UNEXPRESSIBLE_DOCUMENT",
 "message":"`asset/image` has no Remote Compose counterpart this generator can write"}

Reproduce

A…

Read the thread · 2026-09-06 · closed · 2 comments

feat: chat surfaces (Slack first) — text+image fallbacks, pick-from-chat, thread links, notifications, unfurls

Part of #1235. Written so another session can pick it up from scratch.

Why

The work under #1235 targets ChatGPT/Codex desktop, which offers file viewers, thread tabs, MCP Apps, pickers and sidebar apps. Teams also discuss and decide in chat tools: Slack first, then Teams, Discord and Google Chat. There, agents run as Claude in Slack or the ChatGPT Slack app, connected to our hosted /mcp (ServeCatalogMcp, ServeUiBuilderMcp), with no MCP Apps, no file viewer and no editor.…

Read the thread · 2026-10-01 · open · 1 comment

Stale render after notify_file_changed (Antigravity, 3.78.0)

Seen in Antigravity 1.2.12 with server 3.78.0, on the ComposeStarter Wear sample.

That Gradle step means the renders after the notification were still stale (the old "Header"). The turn took 44 s and was…

Read the thread · 2026-09-27 · closed · 1 comment

Local MCP (mcp/): send short initialize instructions

Problem

The local compose-preview mcp serve server (mcp/) sends no instructions in its initialize result. The hosted /mcp does (ServeCatalogMcp.kt). Antigravity saves each server's instructions to ~/.gemini/antigravity/mcp/<server>/instructions.md and agents read that file. For this server the file holds only an internal ID.

In an observed Antigravity 1.2.12 session, the agent was asked to "Render ListScreenPreview and show it to me". It worked out the workflow by itself:…

Read the thread · 2026-09-27 · closed · 1 comment

fix(mcp): undeclared or wrong-typed knob overrides are accepted and reported as applied

Found by a live knob test against https://preview.coo.ee (3.91.0, 2026-10-02) with a live grant.

What works

Declared knobs reach the renderer through catalog_render_preview and catalog_render_matrix as knob.<key> overrides. I verified each one by looking at the PNG, not only by its hash:

Preview Override Result
compose-m3 button-filled__ideal__default__light knob.label: "Hello MCP" button reads "Hello MCP"
same knob.enabled: false grey…

Read the thread · 2026-10-02 · closed · 0 comments

Most recent

feat(mcp): structured settings on the plugin page (openai/settings)

Part of #1235. Works on every platform.

What

Today's preview defaults are flags and environment variables. They become native controls on the plugin's page in ChatGPT/Codex.

Design

Read the thread · 2026-09-30 · closed · 0 comments

feat(mcp): sidebar apps + deep links for the preview catalog and UI Builder (global entrypoints)

Part of #1235.

What

The preview catalog and the UI Builder open full screen from the ChatGPT/Codex sidebar, on every platform, without asking the model first. Deep links then point straight at one preview or one design, from a PR comment, the diff bot or the CLI.

Design

Read the thread · 2026-09-30 · closed · 0 comments

feat(mcp): visual choices as thumbnail pickers (OpenAI form elicitation)

Part of #1235. Builds on #1120 (elicitation for rule-driven decisions): this issue is only the OpenAI form extensions layered on top of it, and should start after #1120 has settled on its elicitation plumbing.

What

When a choice is visual, the user picks from rendered thumbnails rather than from names. Examples:

##…

Read the thread · 2026-09-30 · closed · 0 comments

feat(mcp): composer @-mentions for previews

Part of #1235. Desktop only (per the spec).

What

The user types @ProfileScr… in the composer and picks a preview. The message then carries its exact compose-preview:// URI, so the agent renders it directly. It never has to search source files, which is the #1163 failure mode (6.7 minutes spent to do a 3-second render).

Design

Read the thread · 2026-09-30 · closed · 0 comments

feat(mcp): thread "Previews" tab — point at a node, it becomes context for the next prompt

Part of #1235.

What

A Previews tab inside each conversation shows the previews for the source files this thread has touched, and re-renders them as the agent edits. The user clicks a node in a render, and it is attached to the next prompt: the crop, its semantics and its source location. "Make this bigger" then refers to exactly that node, where today the user has to describe it.

Design

Read the thread · 2026-09-30 · closed · 0 comments

Local daemon doesn't provide compose/semantics (ComposeStarter, CLI 2.28.0)

Seen in Antigravity 1.2.12 with the compose-preview plugin, CLI 2.28.0 (mcp serve), on the Wear ComposeStarter sample. The agent reported:

Programmatic semantic tree inspection (compose/semantics) was unavailable on the local daemon, so layout validation was performed directly against the rendered bitmaps

Why it matters:

Read the thread · 2026-09-27 · closed · 0 comments

Hosted /mcp list_previews with no catalog runs for more than 3 minutes (client timeout)

Observed

In Antigravity 1.2.12 (clientInfo.name antigravity-client), an agent called the hosted catalog server's list_previews with empty arguments ({}):

call_mcp_tool(ServerName="compose-catalogs_compose-preview-catalog", ToolName="list_previews", Arguments={})
→ MCP tool call … timed out after 3m0s: context deadline exceeded

The same session then rendered a local preview in about 3 s. So this single call took up about 3 of the 6.7 minutes the turn lasted. The agent…

Read the thread · 2026-09-27 · closed · 0 comments

Remote render results: add a fetchable signed https PNG URL

Problem (observed in Antigravity 1.2.12 today)

The hosted /mcp render_preview returns the PNG as inline base64 plus a resource_link with a compose-preview://… URI. Hosts without an MCP Apps bridge can't use either to show the image:

Read the thread · 2026-09-27 · closed · 0 comments

ui-builder: server-rendered read-only fallback when the browser has no WebGL

Problem

The Wasm editor (compose-ui-builder ui-builder/src/wasmJsMain/.../Main.kt) needs WebGL for Skiko. When the browser refuses a context, the editor now shows a "WebGL required" message and stops (showWebGlRequiredMessage). The person gets nothing to look at, even for a design they only wanted to view or share.

Ask

Serve a read-only fallback page for a design: the revision-pinned PNG (already produced by the render port), plus title, revision and comments. The editor's no-WebGL…

Read the thread · 2026-09-23 · closed · 0 comments

serve --module: a failed render build is reported as "matched no discovered preview module" (exit 3, not 2)

What is wrong

#956 made --module select the requested module before the build result is checked, so a failed build and a misspelled module are now reported the same way — and the wrong way for the build failure.

ServeRunner.kt (main, ~line 980):

val discovered = discoverAndBuild(silenceStdout = false)
val outcome =
  explicitModule?.let { requested ->
    selectRequestedModule(discovered, requested)
      ?: run {
        System.err.println(
          "serve: --module…

[Read the thread](https://github.com/yschimke/compose-preview-server/issues/957) · 2026-09-19 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/yschimke/compose-preview-server/issues).