12ui Changelog

@12ui/design · every release

Every release of the @12ui/design CLI and its skill, newest first. The latest five are also on the CLI page.

0.2.122: Releases and fixes now reach you faster: the release pipeline publishes the CLI, bundles and plugin in parallel and no longer re-runs the whole test suite for a version bump; no CLI behaviour changes.

0.2.121: An edited brief now carries through to the websites, captions and the next gather; a page branch builds as one page with an accurate draw hand-off line; the Claude pane gains Retry, Keep, Simplify, group More and a Sketches tab; the screen's large view fits a portrait frame and sketch tiles load before their tab opens.

0.2.120: Drawing the options of a round no longer fails when the workspace is briefly busy; the push is sent again after a short wait

0.2.119: In the Claude app the Design workspace now opens as soon as Claude creates it and opens on your designs once they exist; its buttons respond on the first click; and Claude no longer says the workspace is too large to show.

0.2.118: The countdown in a Sketch + site round now ends once the websites are in, and it never jumps back to a later time; the searches for reference websites stay close to your business instead of naming famous brands from unrelated industries; a round with failed options says how many failed; and on phones the Build this button no longer covers the design.

0.2.117: The workspace now uses one loading effect, the aurora; in local workspaces the Sketch + site group waits for websites found for the current brief and picks them up after a brief edit; sketches keep the page's headline separate from its button; prototypes keep their dropdown menus; and the groundwork is laid for 12ui to find and screenshot reference websites itself.

0.2.116: Design rounds are faster: the sketches come from three gpt-6-luna calls running side by side, and the plain sketch group starts drawing as soon as its own sketches land; each option is drawn through gpt-6-luna, several seconds quicker per option; and the workspace no longer shows a group as drawing before it is.

0.2.115: The address check that keeps captures and image inputs away from private networks now covers every request a captured page makes and every IPv6 form, in the server, the capture service and the command line.

0.2.114: New design rounds give you 12 options in three groups — sketch, sketch with an Inspiration design, sketch with a live website — each from its own layout sketch, with a Sketches tab where you can add your own, Keep hearts and More per group.

0.2.113: A new round that you continue early now waits a few seconds after the first website so it draws from several, and the address check behind site capture also refuses private addresses written in IPv6 form.

0.2.112: Pressing Continue before any website has arrived now waits for the first websites, so a new round draws from live sites instead of library designs.

0.2.111: Inspiration designs are picked to differ in colour as well as fit the brief, and a brand's logo is sent to the image model without its card background, so its colour no longer sets every page.

0.2.110: Live websites are now the default style references for new design rounds, with strict no-copying wording. Simplify is an optional quick edit with Standard and High. A round's caption is written from its own designs, and an open workspace shows rounds started elsewhere without a reload. A brand keeps its typefaces only when you ask to keep its font.

0.2.109: Each design option is asked for exactly one screen in plainer words, and the local workspace's finished Build this bar reads Built.

0.2.108: The local Design workspace keeps a brand's own image in every later design, and Build this ends its progress bar when the build really finishes.

0.2.107: The Design workspace keeps a brand's own image, such as its logo or lettering, in every design it draws, and agents pass it to the workspace so it opens first. Briefs describe one screen, and each option draws one design, never a grid of several.

0.2.106: The Design workspace shows approximate progress bars while options are drawn, references are gathered, and pages are built or branched; 12ui next waits for a draft that is still starting.

0.2.105: Loading tiles in the Design workspace now play one of three colourful effects (ripple, colour wave or aurora), picked fresh each time the workspace opens.

0.2.104: A leaner 12ui skill: about 40% shorter, with outdated warnings and repeated instructions removed, and clearer guidance when an apply run is refused.

0.2.103: After a draft, your agent is pointed at the right Design workspace for its setup instead of a dead end, and the Codex plugin now picks up each release's instructions automatically.

0.2.102: When you are choosing between designs, your agent opens the Design workspace first, even when a project asks for a contact sheet.

0.2.101: Long design briefs no longer get stuck: the Design workspace takes briefs up to 20,000 characters, and an agent that goes over is told exactly how much to cut.

0.2.100: References you pick in the local workspace reach the drawn options, and on tablets and phones artwork now also moves into place when a section has a maximum width.

0.2.99: On tablets and phones, artwork stays where the design put it relative to its headline and button, instead of landing between them.

0.2.98: On phones, stacked table rows show their column labels as real, editable text instead of CSS-drawn labels.

0.2.97: Desktop headlines keep the source's line breaks on every machine: text fitting now uses 12ui's own browser and installs it once if needed.

0.2.96: Converted pages work properly on tablets and phones: a real tablet layout, no words broken mid-word, art that scales instead of being cropped, readable text, stacked tables and a sensible reading order on phones. Headlines keep the source's line breaks on desktop. Phone-screen designs from a portrait workspace convert at the phone's real size.

0.2.95: References fill faster: sites start as soon as any search answers while every search keeps its places, and first pictures wait for intro animations to finish.

0.2.94: References arrive sooner: the gather starts as soon as the workspace opens, pages are captured in parallel, each site shows a first picture straight away and swaps to the settled one in place, and the tab says it is finding sites. The loading dots no longer cut off mid-pass and rest dimmer.

0.2.93: Branch → Full page now continues the design below its first screen instead of ending with nothing, the two branch choices say what they do, and a branch that cannot draw says why.

0.2.92: Branch runs on your own Codex with the web build process — the same planner, headers, footers and pages — and needs no 12ui account. 12ui now uses gpt-6.1-sol for planning, conversion and edits.

0.2.91: 12ui skill install never leaves a Codex settings file it cannot read, repairs the one 0.2.90 left unreadable, and reads Codex settings written with quoted names; the plugin repository ships only what the plugins need.

0.2.90: 12ui skill install finishes every other home when one home has a problem, replaces a broken skill link, and recognises Codex settings written with quoted names.

0.2.89: References and captions never use your own API keys, a missing Codex sign-in points you to 12ui draft, skill install keeps a symlinked Claude settings file, the Claude Code Design pane stops refreshing when you close it, and the Claude Code plugin now installs from the root of just-every/12ui-plugin.

0.2.88: Build this converts with your own Codex again, so drawing, editing and Build this need no 12ui account, even in a folder an earlier Build this left when it stopped at sign-in; branching a design into more screens asks you to sign in, and a branch on a computer with no sign-in now says so on its tile. Running the same 12ui convert again in a folder that already bought it resumes that conversion instead of buying a second one. 12ui cli install no longer asks you to sign in, and Build this in the local and browser workspaces converts the chosen design instead of branching it. The Codex plugin listing describes references, editing, branching and Build this.

0.2.87: 12ui skill install and skill remove only mention files that exist, and a branch screen that fails to draw explains why in your language.

0.2.86: 12ui skill install now adds the 12ui Design workspace plugin to every Claude Code and Codex home it finds, and 12ui update keeps it current. A design option that failed can be retried from its tile.

0.2.85: the Claude Code plugin now installs from the same public repo as the Codex plugin, with a reviewed pane.

0.2.84 is a small fix release. A design the image service refuses is drawn again once instead of left empty. The skill says your OpenAI key is only used when you choose external images.

0.2.83 brings the web's Branch and Convert into the Design workspace, and adds a Claude Code plugin. Branch now runs the same branch pipeline as the web /branch page, with the same brief and up to four page names, and shows the result as a board like the web's: one board per design, each page in its own column with its continuations below it and app states framed. Each screen appears as soon as it is drawn, and closing the large view returns you to where you were in the tab. Build this now converts through the web Convert page's pipeline (12ui convert --engine api), so your agent builds from the same structured layers and responsive HTML. The References tab's live website screenshots load more reliably: the browser that takes them installs itself the first time it is needed, the search starts as soon as a round begins, the site suggestions answer sooner, and a screenshot sent while the workspace is busy is sent again. The countdown waits for the first live site (never past two minutes), and runs as usual once a search finds none. Sites still being captured show as named placeholders. Thumbnails are bigger, hovering one shows a larger preview, and loading shows a new dot ripple. Each tab and each round has a one-line caption saying what it does for your brief, written by your own Codex. Drawing is faster: draws use your own Codex settings, including its service tier, and skip a redundant step. The new 12ui plugin for Claude Code shows the Design workspace in a Claude Code pane, with the same tabs, Edit, Branch and Build this. Local conversion no longer uses your own OPENAI_API_KEY just because it is set: new runs draw images on your Codex sign-in, and your key is used, and passed to the conversion helper, only when you choose --image-backend external (or resume a run that did).

0.2.82 makes releases faster, hardens the local review server and removes the last spend prompt. 12ui review now answers only its own page: every request must name its loopback address, a request from another website is refused, and saving feedback or an edit needs the page's own session token. A run's files are served from a separate loopback port that holds no token, so React and module exports open normally. 12ui workflow execute and the design.workflow.execute tool no longer ask before using 12ui credits: the 12ui API runs on your 12ui sign-in. The OpenAI API, which spends on your own OpenAI key, still runs only when you opt in with --allow-paid openai.

0.2.81 redesigns the Design workspace: one prompt above three tabs, Inspiration, References and Designs. References shows live screenshots of real websites to design from, each design has one Build this button that hands it to your agent (the large view adds Edit and Branch), and pictures load faster, straight from 12ui's image server. An upload token the workspace is still using is no longer revoked when your agent checks on it, and a refused token is explained once. Claude and other agents can now read the workspace's selection, its options and each request's command from design.slate.data.

0.2.80 fixes drafts run at the same time: when two drafts share a reference search, the second now waits for the first one's results instead of failing. 12ui workspace open now shows the Design workspace in browser panes that block nested pages, such as Claude's built-in browser. In the 12ui-design skill, the hosted Design workspace steps say plainly that drawing needs network access to design.12ui.com, and the 3D scene guide starts convert as an ordinary background job and no longer downloads web fonts. The hosted Design workspace tools now have distinct names, Create design workspace and Show design workspace, and design search without an account allows 1,000 queries per UTC day.

0.2.79 stops the Design workspace's full-screen view from cutting off design options: Generate more now sits at the top of the selection. The Inspiration tab's search lines read more plainly in every language, and Generate more no longer breaks a word in a narrow workspace panel.

0.2.78 keeps Design workspace options in their frame's shape (fitted or padded, never stretched), and the workspace helper recovers cleanly from a closed screen, a redirect or a sleeping Mac.

0.2.77 makes the Design workspace easier to steer. Option thumbnails now wrap at each design's own shape, are larger, and shimmer while they are drawn, and a round gives six options by default. The Inspiration tab shows a collage of up to 24 references, the search that found them, and which references each round used, and you can generate new options from a selection of them. In the hosted Design workspace, while it is open, a new round waits 60 seconds so you can pick its references, then starts on its own; touch it and it waits for you to press Continue. Edit and Generate more are drawn by a small background helper on your machine, without posting into the chat; it stops after 30 idle minutes, 12ui workspace runner stop ends it, and TWELVE_UI_NO_RUNNER=1 turns it off. The workspace screen is now translated into 11 languages. 12ui workspace open --latest now finds your newest run.

0.2.76 brings back the command-line-first 12ui-design skill. Your agent runs 12ui commands for every draft, branch, conversion and improvement. Conversion picks the engine (your local Codex when it is ready, the 12ui API otherwise), and drafts and branch images are generated by the 12ui API. The skill now installs the latest command line, so command-line updates reach you without a skill update, and the same skill ships in every plugin. A new Design workspace section shows the agent how to open your draft's options on a screen where you select, edit and hand them off; the 12ui command line draws and converts everything in it, never the chat thread, and a Branch or Convert hand-off from either workspace, local or hosted, now names the filled-in 12ui command that does the work. 12ui workflow and the local design workflow tools no longer hand image, image edit or conversion work to the agent's own session: a session takes only text or code, and the workflow's convert recipe always runs a 12ui conversion. The 3D scene guide is rebuilt around a split: 12ui convert builds the page's text, buttons and logo in the background while the agent models the 3D scene with the 12ui scene tools, and the new 12ui scene merge then puts the converted page into the scene, whichever engine built it. In timed tests this was about a fifth faster than an agent working without the guide, at the same quality. The scene tools improve too: 12ui scene serve --detach keeps the preview running after the agent's session ends, 12ui scene capture --timeout stops a stuck render with a clear message, 12ui scene solve warns when a camera fit is degenerate, and every command accepts --flag=value. The Design workspace plugin's listing is now translated into 12 languages.

0.2.75 makes the remote Design workspace draw its options with the 12ui command line instead of in the chat thread. The new 12ui workspace draw command, which the Design workspace plugin's skill runs once per request, draws every option at the same time on your own Codex sign-in and adds each one to the workspace as it finishes. Each option's prompt and reference images come from 12ui's design prompt builder and reference search, so the options start from different directions. It needs no 12ui account. When Codex cannot draw on your machine, nothing is spent and the command explains how to continue: drawing on 12ui needs a 12ui sign-in. 12ui also finds Codex wherever it is installed (TWELVE_UI_CODEX_BIN, CODEX_CLI_PATH, your PATH, or the ChatGPT app), and the Codex readiness check now confirms that image generation is turned on.

0.2.74 polishes the Design workspace. Thumbnails are bigger and show the whole design at its own aspect ratio, the Generate more panel replaces the Design button and the hover controls (it is based on the design you are looking at, and makes 1, 2, 4, 8 or 12 options), the actions sit at the right, Edit takes a drawing or words, Branch takes an optional note, Convert no longer asks about Crop or Enhance, and Inspiration shows a loading state while it searches. It also fixes the hosted workspace for hosts that send no MCP-Protocol-Version header, and the release pipeline's recovery after a release goes live.

0.2.73 runs design workflows inside your own Codex or Claude session and makes design search free without an account (Balanced by default; 100 queries per UTC day anonymously, 2,000 with a key). It also adds a Design workspace to the local 12ui mcp server: the options of a draft appear as a screen in your Codex thread, where you select one, generate more, edit with a scribble, search inspiration, and hand one off to be built. Where the workspace tools are not available, 12ui workspace open <run-dir> --wait shows the same Design workspace as a page in your browser and prints your decision. No workspace step shows a price.

0.2.72 adds 12ui scene and a 3D scene guide in the 12ui-design skill: local tools for rebuilding a design image as a live Three.js scene. No account, no network.

0.2.71 gives terminal conversion failures accurate next-step advice, retains diagnostics for rejected provider requests, and prevents rejected or terminal image-provider calls from leaving stranded work. Calls with uncertain cost remain explicitly marked unknown and are not dispatched again.

0.2.70 rejects incompatible local conversion flags and missing or non-file source images before dispatch, and clarifies that the local conversion owner must remain running until completion. Hosted plans preserve qualified retain constraints and complete notes, with bounded diagnostics for invalid provider retain output. PDF export uses the updated browser runtime to preserve transparent gradients; missing-browser errors and export help provide the exact install command for that runtime.

0.2.69 creates missing parent directories before saving local conversion receipts, so a new nested output path no longer fails with ENOENT.

0.2.68 includes the complete local Codex conversion and export runtime in published packages and platform downloads. Release validation now verifies that every runtime file survives build-artifact staging and restoration. This supersedes the incomplete 0.2.67 npm package; upgrade with npx -y @12ui/design@0.2.68 cli install.

0.2.67 uses Balanced retrieval automatically when a Hedge query exceeds 400 normalized characters, preserving the complete query and recording the reason. Draft accepts an optional separate --corpus-query caption while keeping the full concept for image generation. Corpus failures now preserve the service error and diagnostic evidence so a rejected request is distinguishable from an uncertain response. Its published npm package omitted the local native runtime and is superseded by 0.2.68.

0.2.65 makes Standard the $0.03 per-candidate Draft profile and adds Pro at $0.10 per candidate. Use 12ui draft --profile pro for Pro, or omit the flag for Standard. New runs retain their selected profile, while historical Draft runs continue from their recorded receipts.

0.2.64 adds Standard and Pro Draft profiles. Use 12ui draft --profile pro for Pro, or keep the default Standard profile. Both profiles use the existing $0.06 Draft candidate SKU; profile selection does not add a customer surcharge. The hosted request, durable receipt, cost accounting, and MCP result retain their canonical provider model identity. The legacy --image-model flag remains a CLI compatibility alias.

0.2.63 lets 12ui branch execute preserve an interrupted branch run after a lost response: it observes the durable run instead of submitting a second paid request, keeps an unresolved handle when the observation deadline or cancellation arrives, and resumes only when the server confirms that a slot was not admitted. Recovered dependencies still wait for their recorded parent, and late replies cannot update a completed local invocation.

0.2.62 makes the reference search behind 12ui draft run hedge with no flag: each candidate slot gets its own reference, spread across distinct directions while holding the concept. The mode comes from the same definition as 12ui corpus inspire, so the command line has one reference-search default and the Worker no longer decides it; the browser corpus picker is unchanged. --corpus-mode direct|balanced|adventurer chooses another and retrieves the wider twelve-reference slate instead. A search conditioned on your own image - 12ui draft --reference, and every 12ui improve draft stage, which always carries its own capture - keeps that wider slate, because the corpus refuses a hedge query that carries an image; improve therefore searches balanced, and --corpus-mode hedge is refused at the flag rather than after a capture or mid-run. Improve records the mode you name in improve.json, and a resume must repeat it or drop the flag: naming a different one is refused before anything is bought, because the references were bought under the recorded mode. 12ui corpus inspire --reference-image follows the same rule and no longer sends a hedge query the corpus rejects. Because the references genuinely differ, drafting the same concept again buys a new draft rather than replaying the old one - a draft already claimed in the same working directory still resumes instead of re-buying. 12ui corpus inspire also reads the rest of your flags before it quotes a price, so a --count outside its bounds or an unreadable --query-file is refused without a paid-work line. The same release makes an improve run's own report say what it bought and how each plan scored. The kit README now reads purchases from the run record, written as each stage settles, instead of the journal's terminal line, which is appended too late for the buying invocation to read - four of five kits in the last sanity run printed "nothing purchased against this kit" over ids their own improve.json was recording. A purchase names a buyer only when the journal left that invocation the only open one and the stage settled at or after it started; otherwise the row reads not recorded, and a replay reads the receipt rather than writing one. Each id is noted once in the record, so a kit with sixteen purchases no longer loses one to the end line's entry cap, and the cap marker itself is never counted as a purchase. The DOM coverage gate records three verdicts where it recorded two: passed means the threshold was met, emitted-low-overlap means the plan is anchored and under it, blocked is unchanged. The kit README, the recheck summary, and the /improve brief all read that verdict, so a page emitted under the threshold is no longer reported as having passed the gate.

0.2.61 makes hedge the default reference-search mode for the CLI and its MCP surface, so 12ui corpus inspire with no --mode spreads its first references across distinct directions while holding the query; --mode direct|balanced|adventurer still selects the others, and the browser corpus picker is unchanged.

0.2.60 makes improve caller-expiry copy say that the conversion was last observed running server-side, rather than asserting current server state. That observation-qualified result carries through the CLI, conversion client, and conversion-stage error surface while retaining the caller's deadline, stalled/terminal record semantics, and same idempotency key: the wait still does not buy another conversion.

0.2.59 ends an improve conversion wait on the bound the caller declared instead of falling back to fixed-layout HTML early, and reports a server-side wait that shows no progress as stalled at that bound; classifies hosted-draft settlement failures into the five concrete journal classes and rejects arbitrary declared classes; requires explicit negative carrier proof before a clean-output ground is accepted, so a duplicated responsive carrier can no longer pass as clean; and gives each captured page its own redesign candidate instead of reusing one winner image across every page of a multi-page improve.

0.2.58 hardens improve fallback reporting, capture-identity gating, durable records, raster handling, and artifact downloads.

0.2.57 makes the improve pick mandatory and hardens the improve kit: the CLI never converts a candidate nobody chose (exit 0 with an INCOMPLETE kit means nothing was picked yet) and a drafts-only README leads with the exact --from pick --pick <slot> command; the bootstrap session token is never stored in the kit (redacted triple + digest, honest refusal on resume without it); every added-icon SVG ships an img-safe file with its declared colour plus an inline sibling; stages[].outcome carries the truthful per-stage result; improve refuses to spend when capture landed on a different page; the wait never buys a second conversion; the kit stays out of the repository it improves; the responsive stall the fixed-layout fallback hides is surfaced; the token patch no longer imports a hosted font; the stall file is replaced when the stage settles; the --direction limit and the length written are named. Corpus hedge in this release: balanced drafts download 12 references with bounded retry, so a single failed download no longer aborts the draft.

0.2.56 makes the 12ui improve kit self-explanatory: the kit README opens with honest per-stage status and, on a stall, the recovery commands; an assets table names each extracted file's role (clean plate, cutout, upscaled copy) and what never to discard; the plan leads with the raster layers to carry before tokens and ends with a commit checklist; stalled or stopped runs write plan/STALL.md; the run ends with a summary that says INCOMPLETE first when a stage did not settle; 12ui next reports in progress with the hosted run's age instead of a success sentence; several candidates without --pick now stop after the draw and print the continue command; a stalled conversion is retried once and a stopped one is resumed, never orphaned; and the skill's improve companion documents asset roles, the raster-first rule and the stall playbook.

0.2.55 keeps 12ui improve moving when responsive HTML fails, is absent, or cannot finish: root and site-page conversions retain their successful LayerDocs, derive fixed-layout HTML free when possible, warn in the durable kit, and continue to their plans. It also adds --responsive-quality standard|pro, one spaced retry for temporary unavailability, and --fresh replacement with the abandoned conversion id recorded.

0.2.54 adds the 12ui improve verb for URL or image input, --direction steering, --target alignment mode, and kit output.

0.2.53 keeps internal provider, model, stage, and runtime diagnostics out of customer conversion problems, including failed viewport detail in accepted-partial package receipts. Release preflight now also pins the Open Design plugin manifest, its MCP command, and its root-skill fallback to the published CLI version.

Draft now bounds corpus-reference fetches, autonomously reclaims receipt-free stranded candidate dispatches, and aborts bounded CLI dispatch requests for safe re-dispatch. Unsupported 12ui draft --dry-run refuses before buying anything.

Browser verification measures the delivered anchor canvas, selects responsive bands at that width before capture, and records the 4096 px guard instead of silently clamping away right-edge evidence.

0.2.52 repairs five always-broken conversion mechanisms: s04 icon containment, s05 upscale perimeters and typographic lockups, and s07 repeated rules and surface patterns.

Paid validation also closes the lockup instruction boundary: only multi-part text logos may declare row geometry, while one-line wordmarks, headings, and other text stay on their ordinary typography contract instead of parking a conversion with an invalid one-row lockup.

Page-rhythm spacing now admits section breathing only from measured section boundaries, real available air, page scale, and bounded paint probes, with explicit refusals for diagrams and unsafe growth.

Branch content slots now travel from create planning through conversion-package manifests into HTML binding and static site exports, including paragraph reflow and a typed content-slots.json artifact for downstream editorial filling.

Prototype verification now proves trigger reachability across every retained action, respects nested inert and disabled boundaries, and keeps rejected prototype candidates as explicit review evidence.

0.2.51 prevents partially covered clean raster regions from suppressing whole panels during ground-ink publication. The shared publication contract now carries ground ink only when the selected raster covers the target's complete canvas-clipped paint box, preserving legitimate fully covered cases while keeping partially covered Lantern Fund panels live.

0.2.50 preserves quoted CSS values at the inline-style boundary and aligns raster validation with each provider's declared pixel plane while keeping Standard alpha on Pixelcut unless FeynoBG is explicitly enabled. Materialization now records classified per-lane cutout failures and uses only ownership-proved source recovery; responsive exports retain live child work across lost heartbeats and reuse completed work without weakening completeness. The redesign path removes its separate logo-pinning machinery while keeping logos through the declared semantic retain policy without carrying unrelated brand style.

0.2.49 adds the resumable 12ui redesign command with hosted direction planning, capture-time brand-asset inventory, exact-byte logo pinning through conversion, and local bench and acceptance evidence. CLI help and wait-state reporting are now honest, and proven responsive entity links can be persisted on explicit opt-in. Responsive conversion can re-emit a single missing text leaf when its owner, order, template, paint ownership, fit, and structural safety are all proved; the shared owner-growth path no longer double-moves flow siblings. Prototype polish aligns measured insets while guarding containment and hit-testing, and verification now preserves unique nested action ownership while comparing canonical shell runtime geometry without false failures.

0.2.48 restores hosted prototype labeling by replacing D1's overlong wildcard match with an exact bounded prefix comparison. Prototype runs now resume from validated per-screen manifests, replayed labels count as zero current-run spend, and branch conversion receipts live in the resumable workspace and fail loudly when their evidence is corrupt or unwritable. The new read-only 12ui spend command reports account-scoped settled charges, sponsorship, wallet, quota, and operator-visible provider cost from GET /api/v1/spend.

0.2.47 makes sponsored corpus searches complete in the same request cycle by validating the directly updated attempt's returned identity and completed state instead of interpreting trigger-inclusive D1 change telemetry as direct-row cardinality. Genuine no-op and contradictory completions remain rejected; the CLI client is otherwise unchanged.

0.2.46 supersedes the stopped 0.2.45 deployment with an explicit acknowledgement for the sponsorship-ledger trigger replacements and a local-wall regression that applies the deploy guard's exact rules to every migration that was unapplied when 0.2.45 stopped. The triggers are recreated in the same migration transaction without deleting table rows or user data.

0.2.45 adds opt-in prototype polish: run 12ui prototype <run-dir> --polish, or add --polish to 12ui branch execute ... --prototype. After the prototype build, the stage runs 11 retained deterministic, harm-guarded rules; runtime verification consumes the polished output, and the manifest and journal record each rule as fired, silent, or reverted.

0.2.44 keeps conversion pipeline v204 and resume contract v39 while responsive HTML advances to v39. Responsive packaging now reads the effective anchor-canvas geometry across the full CSS cascade, and source-proven adjacent text roles prevent unsupported mobile input-size raises. Prototype-v5 isolates transplanted shell identities, publishes recoverable dropdown and static-page degradations with durable receipts, and refuses to reuse pre-v5 prototype artifacts.

0.2.43 completes the six-tool MCP review contract with annotation titles, standard permission hints, and explicit parameter types. Prototype-v4 accepts semantic action arrays, deterministically recovers safe current-screen and incomplete-dropdown decisions, and gives each paid label attempt a versioned input-digest identity while replaying prior usable labels. Conversion pipeline v204, resume contract v39, and responsive HTML v38 are unchanged.

0.2.42 advances conversion pipeline v204 and responsive HTML v38. Responsive pages retain declared menu content and repair exact scalar-value conflicts behind durable coverage facts, while page-derived CSS adds checked, focus-visible, and hover states without scripts or geometry changes. Declared-layer ownership now rejects contaminated shadow probes, and explicit model shadows remain authoritative.

0.2.41 advances conversion pipeline v203 with truthful cross-band semantic diagnostics and audited prepared-source icon paint ownership, while guarded mobile box growth improves 130 proven text shortfalls without introducing overflow. Branch packages can roll only revision-incompatible pages onto the current contract while reusing exact successful constituents; large local PNG work now streams before the Worker memory ceiling, and prototype actions clear fixed review framing before hit-testing. The release also adds the append-only branch rollover ledger and keeps shipped v202 work on its original v37 resume contract.

0.2.40 advances conversion pipeline v202 so detached LayerDoc responsive exports, including Branch and packaged page children, finalize an explicit empty icon paint plan during prepare and idempotently at resumed anchor entry instead of parking. Source-backed icon plans remain strict, and v201 work parked at this producer seam can resume under the unchanged v37 contract.

0.2.39 moves the hosted MCP surface to the dedicated https://mcp.12ui.com/ resource identity. The Worker now serves Streamable HTTP and canonical OAuth protected-resource metadata only on that exact custom domain, retires the old 12ui.com/mcp surface, and updates the public connection instructions while keeping conversion pipeline v201 unchanged.

0.2.38 advances conversion pipeline v201 with terminal icon-match records that remain joinable after merged extraction, behind resume contract v37 so v200 records are never reinterpreted. Responsive terminal detail now derives buyer-safe progress copy from durable paid-stage evidence, and the responsive owner-clearance policy moves only whole later owners when exact or strong cross-band links prove that two declared owners collide, preserving geometry whenever that proof is absent. The website removes the retired homepage design grid and places Install plugin first on /versus and at the top of the Skill and CLI install sections.

0.2.37 advances conversion pipeline v200 with exact icon paint ownership and source-bound responsive icon lineage, while ra3 child identity now carries both that lineage and each anchor's declared purpose behind a fresh resume fence. Converted controls emit native checkbox, radio, and switch semantics; source-declared list peers share an exact left rail; and proven mobile anchor text can rise to a readable size without moving its box. Branch creation inherits the winning canvas, and prototype-v3 preserves per-band holding, honest partial-review receipts, poststep resume, canonical shell consistency, and active navigation across the assembled site. Static export v19 carries the new checkable-control representation without reusing v18 bytes.

0.2.36 opens the MCP endpoint to standards-compliant clients with path-aware protected-resource discovery and surface-scoped CORS. Conversion pipeline v199 removes the retired dense-document cap in favor of the live provider-schema boundary, prepares generative clean inputs before candidate retention, refuses responsive success when required bands are missing, publishes exact ground-ink carriage facts, centers control text only from accepted source-ink evidence, and normalizes repeated icon families only when every local member has a no-loss candidate. Branch packaging now exports the longest successful page prefix with an explicit accepted-partial receipt while keeping a failed required winner page terminal.

0.2.35 adds reference-led Draft generation without silently preserving the old page. Pass a local PNG, JPEG, or WebP, or an HTTP(S) image, with 12ui draft --reference; the original bytes reach every candidate, retain style by default, and explicitly exclude layout, content, and assets. --retain accepts comma-separated semantics when another policy is deliberate, while --retain layout is the explicit structure-preserving opt-in and --mode reskin remains its shorthand. Create claims normalize and persist that retain policy, reject contradictory or unsupported reference requests before dispatch, and tell the image model what to preserve without restating excluded semantics. This release also keeps Create run identities byte-for-byte compatible while making their NUL separator reviewable in source, and derives the CLI page's hero version from this changelog so the two cannot drift again.

0.2.34 gives converted interfaces more faithful structure. Conversion pipeline v196 cleans measured text ink out of independently extracted underline decorations, anchors labels beside proven single-side control icons, emits repeated proportional-font label and trailing-count rows as real columns, and clips flush child photos to their parent card corners. Each conversion rule is fact-gated with paired silent cases.

0.2.33 hardens installation, account reuse, and prototype browser lookup in managed environments. An ENOENT while preparing an automatic CLI candidate now advances through XDG and HOME to the existing private TMPDIR fallback, while explicit credential paths still fail loudly. Credential storage follows the same XDG, HOME, then session ladder: the final fallback is a mode-0600 $TMPDIR/12ui-<uid>/config/credentials.json file that the launcher preserves and later commands rediscover for the environment lifetime, never a workspace path. Prototype inventory and runtime verification now resolve Chromium at cache/ms-playwright inside that selected CLI data root; a missing browser stops before labeling with an exact version-matched install command and no raw Playwright stack, with no automatic download. The npm-free macOS/Linux installer remains the bootstrap path when npm's own cache is unusable before 12ui code starts.

0.2.32 keeps managed-sandbox network ownership honest. Draft candidate dispatch requests and branch execute or resume now stay in the foreground; draft returns only after no slot remains pending, while 12ui next <run-dir> --wait repairs exactly the recorded slots that never started, polls, and downloads without buying settled effects again. A bare next reports a pending draft with zero running slots as an exited dispatcher and prints that recovery command instead of claiming generation is progressing. CLI installation now write-probes XDG, HOME, and a TMPDIR session fallback in order, uses an installer-owned writable npm cache, and labels temporary files and PATH exports as session-only. Conversion pipeline v194 expands sparse companion text only when declared extraction facts prove it is missing, accounts and reclaims the exact retained raster working set under isolate pressure, and retries failed R2 persistence from already-settled provider bytes without buying the provider output again.

0.2.31 makes CLI authentication work honestly across restricted shells and sandboxes. Device-code minting and one-time link exchange now use same-origin 12ui.com proxy routes, while every identity request has a 15-second deadline and one timeout-only retry. A coded link can be completed in the browser or pasted back with 12ui auth connect CODE; /connect-cli also explains that paste-code path when opened without a code. The macOS/Linux installer now honors XDG data locations for both the pinned bundle and launcher, and an unwritable private credential location degrades to session-only use instead of writing into the project. When neither 12ui.com nor the login service can mint a code, the CLI names the failure and the connect-code recovery command instead of presenting a bare link as completable.

0.2.30 turns a completed HTML branch into an honest clickable prototype. Add --prototype to 12ui branch execute, or run 12ui prototype <run-dir> later, to derive state pages, shared shells, plan-backed navigation, content, and holding pages; one cheap four-way label call per exported screen resolves ambiguous controls while deterministic facts retain precedence. The staged pipeline imports the population-tested shell and dropdown fixes, hard-gates missing or legacy input, runtime failures, zero-action real pages, invalid dropdowns, and majority holdings, and records every lesser holding ratio, shell skip/residual, and untested script direction for review. 12ui review exposes Prototype per branch and an explicit $0.51+ Fill this gap action on holding pages, with no automatic spend and no mutation of original branch evidence. Responsive HTML also joins the pinned page ground to the source edge pixels, eliminating wide-screen background seams in emitter v32.

0.2.29 adds 12ui review for local draft, branch, and conversion comparison and edits; reclaims orphaned 12ui next --wait locks; and keeps decorated controls clickable while the CLI connection page stays out of search indexes.

0.2.28 renames the bundled skill from design to 12ui-design, including its directory, frontmatter, agent metadata, installer copy, and Open Design wiring. A normal 12ui skill install recognizes every frozen historical design bundle, removes that old directory, removes its exact stale Codex config registration, and installs only 12ui-design; a locally modified old copy is preserved. The public plugin publisher now emits the same identity and install path.

0.2.27 stops two ways a run could lose work you had already paid for. A poll blip no longer abandons a running conversion: when a status check comes back 5xx, times out, is rate-limited, or never answers at all, the CLI keeps polling on one bounded policy — up to 12 consecutive failures or five minutes, backing off from the poll interval to 30 seconds and honouring Retry-After — instead of throwing on the first one. Until now any poll error the service did not explicitly mark retryable ended the wait, so 12ui convert, 12ui convert package, and branch execute --convert could each walk away from a paid conversion that went on to succeed. A missing or unauthorized operation still stops immediately, and your own cancellation is still honoured. And a site run no longer silently loses the approved design: the plan always carries the page your winning screen starts, so that page is staged and converted rather than dropped; --max-screens now names exactly which screens and which whole pages it left out, in the plan, the run summary, and the progress narration; and a run that skips a planned page reports partial rather than succeeded, so 12ui next tells you a page is missing instead of calling the run done. One behaviour change to know about: a page-scope run whose plan ends at the approved screen now buys one conversion of that screen, where it previously delivered nothing at all.

0.2.26 makes responsive exports work again for API clients; the plan's revision is now opaque per the contract. Every release before this one validated the anchor plan a conversion carries against a closed list of revision names and re-derived the anchor topology the service had chosen, so when the service changed how it prices anchors on 2026-08-15 — buying a direction only when its band can actually be placed — your CLI refused the whole operation with "invalid responsive plan", including responsive exports it had already paid for and that had already finished. --output html, --export html, and resume on a completed export all work again, and the revision is now read as the opaque string the published contract always said it was, so the next pricing change costs you nothing. If you are still on an older release the service withholds the plan from you rather than handing you one you refuse; nothing you read is missing.

0.2.25 brings two things you will notice immediately. Briefs are no longer cut short: --concept and --query accept 1200 characters rather than 600, a raise a blind A/B settled — long briefs cost nothing in screen quality, and trimming one cost you tokens — and when a brief really is too long the refusal now names the counted length, how much to trim, where the cut detail belongs, and that nothing was sent and nothing was bought, with no claim that a shorter brief designs better. And the five bundled design skills become one: design now covers exploring, selecting, converting, branching, and searching in a single body smaller than the old convert skill alone, because a measured trial found the four specialist skills bought no routing precision (27/27 against 26/27) while every task paid for their descriptions. 12ui skill install migrates the old copies out of every agent home automatically, and a copy you edited yourself is preserved rather than removed.

0.2.24 brings three things. The MCP server grows from one tool to seven: alongside design.convert there are now design.convert.status, design.corpus.status, design.corpus.inspire, design.corpus.resume, design.draft.status, and design.branch.status, and the package ships an Open Design plugin bundle that wires them up. 12ui next <conversion-id> now answers for real production conversions (previously it recognised only rehearsal ids and refused yours), a blocking convert writes progress into its run journal so next from a second shell gets a live answer, and converting the same image bytes twice while the first run is still working tells you so before it spends. And the CLI declares its own version on every request in an X-12UI-Client-Version header: the service reads it to decide what your installed LayerDoc parser can be handed, removing a field added after your version was built instead of making the whole document unreadable — while the bundled parsers now accept and preserve fields they do not recognise, so the next such field costs nothing at all.

0.2.23 makes each bundled skill's setup condition explicit: run the one-time installer only when the 12ui CLI is not present. The installer still installs the CLI and verifies the account scopes required by the selected skill.

0.2.22 standardizes the product name as lowercase 12ui across the npm package, public plugin, generated documentation, marketplace copy, and future public release records. Existing X-12UI-Public-* HTTP header names remain unchanged because they are protocol identifiers rather than branding.

0.2.21 is a simplification pass: the CLI got smaller, and what is left tells you the truth. 12ui next <run-dir | run-id | batch-manifest> replaces draft status, branch status, image batch-status, and create status - one command, one argument, whatever kind of run you point it at. It reports what is moving, how long it has been going against what is typical (re-quoted once the typical is passed, instead of leaving you holding a stale promise), and one next command that exists; --wait blocks with a heartbeat for any run, so you never have to invent a sleep loop. --json is honoured, which it was not on any of the four commands that advertised it.

The help stops making promises the code does not keep. Seven documented-but-ignored flags are gone, --origin/--api-key/--quiet moved to a footer because they apply everywhere, and a refusal now quotes the same usage line --help prints instead of a second copy written from memory - the two disagreed in five places. 12ui <command> --help prints one command in full, including the forms the summary no longer lists. 12ui select drops three flags nobody used, one of which could never do what its own documentation showed, and reads the run's recommendation from the run instead of asking you to type it back.

Two things now say something useful at the moment they can still save you money: 12ui convert takes a directory for --out and writes both the document and the page inside it, and a document written with no page names the command that renders it. 12ui export tells you when the conversion already carries an export rather than quietly selling you a second one, and 12ui draft --redesign-source points at building a finished design before it starts redrawing it. Conversions bought through 12ui mcp are now recorded in the run journal like every other paid call. The skills lost about a fifth of their text - curl choreography, flag spellings, and quoted durations that the commands themselves now report. 0.2.20 publishes the five design skills and canonical API contracts through the public 12ui Design plugin. Directory-only skill installs now carry a scope-aware one-time setup command, and design-draft uses the credential-aware 12ui create commands instead of requiring an exported bearer token. Package metadata and documentation links now resolve to public sources.

0.2.19 removes an SDK surface that should never have shipped. 0.2.18 added two package-recovery methods built for one specific conversion, with that customer's identifiers compiled into the published bundle; both methods, their response type, and the API routes behind them are gone. Nothing else in the CLI changes - the methods refused every input but the one they were written for, so no working call can break. Release checks now bind this page to the published version, so a release that forgets its changelog entry fails before it ships.

0.2.18 added those two internal package-recovery methods. Use 0.2.19 instead.

0.2.17 gave every workspace-bearing command a run journal, so 12ui draft, 12ui branch, and 12ui export record what they did and where they put it, and a later command can read that instead of guessing. Refusals became typed rather than prose, so a caller can tell a disproven attachment from an expired run without matching on message text, and a usage error now prints without a credential check first - a missing flag says so instead of demanding an API key it never needed.

0.2.16 took 12ui skill install to all six supported agents. Claude Code, Codex, Grok, Cursor, Antigravity, and Copilot each receive the same skill bundle from one run - one user-scoped home per agent, byte-identical text everywhere - and an agent that is not on the machine is reported as a skip, never an error; 12ui skill status --json names the skipped clients. The skill frontmatter now parses under strict YAML readers, conversion receipts live in your 12ui home instead of beside your images, and a draft retry continues the dead run's directory rather than starting a sibling.

0.2.15 made 12ui branch fast and legible. Pages convert in parallel (bounded, --page-concurrency), each page starts converting as soon as its own screens land, and an approved winner's conversion is reused instead of re-bought when a receipt proves those exact bytes already converted - a refused reuse costs one silent retry, never the page. Progress reads honestly while you poll: viewport counts, running children, and time-in-stage keep advancing even while a percent holds, and 12ui branch status reports per-package progress. 12ui convert package --template prints the manifest template.

0.2.14 moved the design pipeline's mechanics out of prose and into commands: 12ui draft runs the whole explore step (its own run directory, corpus search, four steered candidates), 12ui select records the choice, 12ui branch execute <run-dir> grows the chosen screen into a page or site, 12ui create claims and dispatches hosted generation, and 12ui export derives its idempotency key.

0.2.13 made image generate-batch crash-safe: candidates are materialized atomically, a generation.complete.json sentinel publishes the terminal result, and --resume recovers an interrupted batch without buying any candidate twice.

0.2.12 added convert --export html - one command that converts and exports responsive HTML together - along with streamed stage progress and duration hints on the long conversion commands.

0.2.11 added the 12ui cli command family and renamed the drafting skill design-create to design-draft.

Earlier releases lack only those changes; every other command, flag, and default on this page is identical back to 0.2.9.