v0.7.0 — Generative UI Protocol
What's new in 0.7.0
Public release of @ggui-ai/*@0.7.0 — install via npm install @ggui-ai/cli@0.7.0.
A MINOR wave: the headline is re-mintable renders — a ui://ggui/render/… locator now
survives eviction. On any server that keeps durable records, re-reading an evicted locator
re-mints it into a live mount; every failure that is not a live mount is a typed JSON-RPC
error.
Re-mintable render snapshots (#430, all three slices)
- Durable render-identity records — one per render commit, so a render can be
re-created after its row ages out. - Durable blueprint registry — write-through at registration (rows + content-addressed
code bodies), with a purge contract (takedown by hash, retire by app, orphan collection). - The read path — evicted locators re-mint from the durable record: blueprint resolved,
component body restored, props restored exactly, event ledger resumed via an explicit
seqFloor. Refused and missing reads are byte-identical (deny ≡ miss). - Typed resource-read failures: closed
ResourceReadErrorCodeenum —NOT_FOUND
(-32002) and the new canonical-32006 MOUNT_UNAVAILABLE
(BLUEPRINT_UNRESOLVABLE/NOT_SUPPORTED/NOT_MOUNTABLE).-32004is retired. - Conformance: the kit's first MCP-binding driver, with 12
resources/readcases —
vendor-neutral, caller-supplied reader, no SDK dependency. Conformance-kit verdict for
the wave: MINOR (hence 0.6.3 → 0.7.0).
Gadgets
- Catalog foundations with a strict posture: write-boundary gates, per-element salvage,
provenance-split storage, and the web write path (install / remove / pin). - Gadget CLI hardening: identity-token forwarding,
gadget uninstall, truthful 403s, one
registry-resolution chain.
Accessibility
- Toasts and the relay cue now have an assistive-technology surface (
role="alert"
live regions that persist while hidden, so announcements are never dropped) — in both
the design system and the iframe runtime.
Retention & identity (post-draft additions on the same tag)
- Declared durability (#457): the three durable-substrate store ports carry a required
durability: 'durable' | 'ephemeral', and the substrate gate grades the declaration —
a server whose stores would forget everything on restart now answersNOT_SUPPORTED
instead of promising restorability. SPEC §7.10.4 defines "durable" as declared; the
conformance kit gains theall-ephemeralfusion arm, and the render-identity store
port gets its first conformance suite. - Bounded resurrection (#457): opt-in
maxRenderLifetimeMscaps how long an
evicted-but-in-grace render can be kept alive by polling; defaults unchanged. - Blueprint id at commit (#460): cold generation resolves the blueprint id BEFORE its
success commit — identity records are written complete once, the backfill (and its two
round trips, and a seq-regression race) is gone.nullblueprintId is now a terminal
state, never a pending one.
Honesty & hardening
ggui_ops_delete_appno longer claims a cascade it doesn't perform: it names the row
classes it orphans in a structured event, and gained the same default-app delete lock
as the console path.- Lost-codeUrl failures are named instead of swallowed.
- Registry: visibility ↔ signature-algorithm pairing enforced server-side.
- Conformance suites can grade a store's declared-out-of-scope
delete(loud refusal)
instead of skipping it.
Host support
Re-mintable renders change what works in MCP-Apps hosts, including Claude: an evicted
ggui card no longer dies with its session — a host that re-reads the render resource gets
a live mount again (on deployments that keep durable records; servers that keep none now
say so with a typed -32006).
Install
npm install @ggui-ai/cli@0.7.0Verify provenance: every tarball is signed via npm Trusted Publishing (OIDC); see
https://www.npmjs.com/package/@ggui-ai/cli for the public attestation.