Spec changelog
This page is generated from the
## Changelog
section of each file in
/specs
. Every substantive spec edit is a release: the version advances, the
**Updated:**
date is restamped, and an entry lands here. Record one with
bun run spec:bump <spec.md> <major|minor|patch> -m "<what changed>"
.
Versions are
MAJOR.MINOR.PATCH
—
major
for a breaking change to a documented contract,
minor
for additive behavior,
patch
for editorial changes. A
-draft
suffix marks a spec whose status is not yet
Implemented
.
ai.md
0.1.11-draft (2026-08-30) — 2.1: a lapsed grant is not a completed connect; cf_account_required; probe invalidation; per-model toolSupport and contextWindow.
0.1.10-draft (2026-08-26) — import_site adopts the project when it exists, not when the run ends; the run's log outlives it (§3.5).
0.1.9-draft (2026-08-26) — ask_user suspends a turn on the author (§3.4); import_site bootstraps a project from a live site (§3.5).
0.1.8-draft (2026-08-23) — 2.1 Managed providers: a platform may broker credentials, Studio offers that path before the key form, and the models endpoint is specified as a capability probe that must answer 200 for every credential state — with cf_not_connected, cf_reconnect_required and cf_upstream_error distinguished.
0.1.7-draft (2026-08-20) — The Anthropic client yields an error event with code NOT_IMPLEMENTED; it does not throw (§2).
0.1.6-draft (2026-08-16) — §2 failures are problem documents and the mid-stream frame carries one; gap
closed. 0.1.5-draft (2026-08-15) — Add §5 Standards Alignment: SSE, the IANA special-purpose address registries the SSRF guard uses, and the problem+json gap.
0.1.4-draft (2026-08-12) — The assistant's six capabilities are command records, gated on ai.configured and ai.streaming.
0.1.3-draft (2026-08-04) — §3.2 the turn is accountable (per-write disk marking, Restore to here, chip outcomes, partial success) and §3.3 the batch follows the document, not the tab.
0.1.2-draft (2026-07-25) — Schema gate (§3.1): tool-level validation against the active project's entry documents, before-write for disk writes and after-apply on canvas, project.json included.
0.1.1-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.0-draft (2026-07-22) — Reconcile spec with shipped behavior; document the eval surface (
c8d1d580).
collab.md
0.2.5-draft (2026-08-20) — Presence that has ended must stop being published: a client leaving the code view clears its in-buffer text cursor, so peers stop drawing a caret for someone who is no longer there.
0.2.4-draft (2026-08-16) — §2.1 subprotocol negotiation: jx.collab.v1 offered from the capability probe and echoed on the handshake; §5 wire-envelope skew closed; RFC 7692 non-adoption stated in §2.
0.2.3-draft (2026-08-15) — Add §6 Standards Alignment; §5 separates wire-envelope skew from document-format skew and is marked Pending.
0.2.2-draft (2026-08-05) — §4 project.json is excluded from replication, and why.
0.2.1-draft (2026-08-04) — §4 the four session states, with failed distinguished from detached; freeze and read-only made visible; undo scoping stated in the UI.
0.2.0-draft (2026-07-28) — Store prose as Y.Text and style/attributes/$props as nested Y.Maps so concurrent edits merge per character and per property; the op bridge diffs whole-value ops onto that structure.
0.1.1-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.0-draft (2026-07-22) — Reconcile spec with shipped behavior; document the eval surface (
c8d1d580).
compiler.md
0.4.1-draft (2026-08-27) — §12: the client-runtime asset set is derived from the emitted HTML, so every import map a build ships names files it wrote.
0.4.0-draft (2026-08-26) — Browser bundles are minified (§12); component CSS is inlined rather than linked (§8.2); image sizes derives from the container and variants stop at the configured ceiling (§7.2, §7.2.1).
0.3.3-draft (2026-08-26) — §8: the boolean-attribute rule is shared with the runtime rather than restated, and covers the enumerated family.
0.3.2-draft (2026-08-26) — Static output omits a false boolean attribute and emits a true one bare.
0.3.1-draft (2026-08-18) — §4.3: separate the emitted-JavaScript accessor form from the pointer grammar it lowers.
0.3.0-draft (2026-08-17) — §4.3: ref lowering goes through the shared tokenizer — identifier segments dot, all others bracket, so every emitted ref parses.
0.2.1-draft (2026-08-15) — §3 Implemented — the tiers' inline blocks are hash-nameable and the site build emits the policy.
0.2.0-draft (2026-08-15) — Client runtime is served from /assets/ instead of esm.sh; browser bundles resolve production export conditions under both backends (§3, §12).
0.1.28-draft (2026-08-15) — §3: node_modules URLs resolved — bare $head/$elements specifiers land in /assets/.
0.1.27-draft (2026-08-15) — Add §13 Standards Alignment; §3 marked Partial — inline scripts block a strict CSP and node_modules URLs 404 in production.
0.1.26-draft (2026-08-14) — $switch compiles on dynamic pages (§9.2); branch subtrees hoisted out of $switch and chosen-tagName constructs (§4.8); prerender treats handler-written entries and computeds reading them as runtime-only, and keeps an array any surviving reader still references (§8.1).
0.1.25-draft (2026-07-30) — Element modules: props.* attribute intake and $props template bindings, one effect registry stopped on disconnect, state.$map published for map handlers; prerender keeps a repeater whose build-time expansion is empty (§4.1, §4.2, §4.4, §4.7, §8.1).
0.1.24-draft (2026-07-30) — Element modules: $export aliasing, Request auto-fetch on connect with effect teardown, $map bound in map callbacks, tagName-based output naming; prerender leaves runtime-only reads unresolved (§4.1, §4.7, §8.1).
0.1.23-draft (2026-07-24) — §1 Overview: condition the generated Hono worker on build.adapter (per-page _server.js without one) and scope the static-build failure to active data/auth mounts; §6.3 document compileSiteServer's mounts/connectors parameters and extension mount emission.
0.1.22-draft (2026-07-23) — Image src resolution consults extension asset mounts before public/ (§7.3).
0.1.21-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.20-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.19-draft (2026-07-17) — Forced color-scheme contract — dual emission, color-scheme triplet, pre-paint script (
e629684d).0.1.18-draft (2026-07-17) — Bundle the site worker self-contained per adapter (
4096ba12).0.1.17-draft (2026-07-17) — Sidecar bundling, extension emit capability, heading anchors (
07e28bc3).0.1.16-draft (2026-07-17) — Image pruning for persistent site build cache + github ci cache (
b45096ed).0.1.15-draft (2026-06-10) — Update site architecture to reflect new changes (
c0bdba08).0.1.14-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.13-draft (2026-06-03) — Use
.cacheisntead of.jx-cacheto support cloudflare build cache (1103d2d6).0.1.12-draft (2026-06-01) — Stronger typing (
fcbb5b5d).0.1.11-draft (2026-06-01) — Convert to typescript (
e352e265).0.1.10-draft (2026-05-20) — Run formatter (
8ba47930).0.1.9-draft (2026-05-18) — Always emit worker.js for cloudflare (
3dd37c2d).0.1.8-draft (2026-05-15) — Image optimization specs (
7d2ee67f).0.1.7-draft (2026-05-15) — Provider-sepcific Site-Wide Bundling (
51cb5cf6).0.1.6-draft (2026-04-23) — Rebrand to jxsuite (
2897a4e8).0.1.5-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.4-draft (2026-04-20) — Text nodes support (
4d45eeb7).0.1.3-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.2-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.1-draft (2026-04-10) — Finalize vision for site architecture (
da594993).0.1.0-draft (2026-04-10) — Consolidate specs (
80ca313f).
desktop.md
0.4.8-draft (2026-08-28) — Distinguish the window's own icon (favicon-driven, studio.md 11.2) from the taskbar/dock icon (StartupWMClass) in section 9.3.
0.4.7-draft (2026-08-27) — The files route answers in stable path order, in every backend.
0.4.6-draft (2026-08-27) — The PAL is project-relative in both directions; an adapter translates a request space or a reply space, never both.
0.4.5-draft (2026-08-27) — Both launchers preview the working tree live at real routes; Build Site keeps the compiler, and leaving the webview is stated to be one-way.
0.4.4-draft (2026-08-26) — the Import tab chooses how many breakpoints the project keeps, and what an import emits is normative (§4.5).
0.4.3-draft (2026-08-26) — Typechecking resolves the ElectroBun SDK from the pinned vendor/electrobun submodule; .hutch/devkit stays the build sysroot.
0.4.2-draft (2026-08-26) — Packages capability row: the registry seam is
packageVersions?(each dependency's own latest), notoutdatedPackages?.0.4.1-draft (2026-08-26) — the Import source hands its brief to the assistant, which runs the import; the git-init obligation moves to whatever creates the project (§4.5).
0.4.0-draft (2026-08-25) — StudioPlatform writes user settings as patches (set/remove) rather than replacing the whole map, so one window cannot clear another's; and §3.6 states which store a credential belongs in.
0.3.24-draft (2026-08-25) — §3.1: a platform declares assetSpace beside documentBaseUrl; §10.2 (Pending → Partial): what a storage backend must declare, including that stored bytes come back losslessly.
0.3.23-draft (2026-08-25) — 10.1 removes discoverComponents from the cloud adapter's omissions: deriving component metadata from a JSON document executes nothing, and returning an empty registry left the canvas unable to register or fetch any component at all.
0.3.22-draft (2026-08-24) — §7 records the ElectroBun 2 toolchain boundary: the electrobun npm devDependency selects Hutch, Cottontail and ElectroBun together (no machine-wide install and no release pin in hutch.config.ts), the SDK is projected into .hutch/devkit, the main process is pinned to bun explicitly, and stable installers drop the channel prefix that the updater feed keeps.
0.3.21-draft (2026-08-24) — 3.1 states that documentBaseUrl may be absolute or root-relative, and that a root-relative value is resolved against the canvas origin because the canvas composes it as new URL(path, base) — a relative base throws and fails the whole canvas mount.
0.3.20-draft (2026-08-23) — 3.1 adds the Canvas member family and states that the canvas needs project files at a URL rather than behind readFile: documentBaseUrl defaults to the canvas origin plus projectRoot and must be set by a platform whose root is an identifier rather than a served path.
0.3.19-draft (2026-08-22) — 10 SaaS/Cloud is Partial rather than Future: the adapter shipped and is deployed (10.1 Implemented, with what it implements and what it deliberately omits), collaboration shipped as a CRDT rather than the sketched lock model (10.3), and 10.2's storage table is marked Pending because the deployed backend is git-backed.
0.3.18-draft (2026-08-22) — 3.3 the init bundle loads through a declared boot slot rather than an exact-string replace on the shipped document.
0.3.17-draft (2026-08-22) — §9.2: the session watches a project or nothing — a root with no project.json is declined rather than scanned recursively.
0.3.16-draft (2026-08-22) — §9.2: the launcher adopts its working directory as a project root only when that directory holds a project.json — a named root is still taken at its word.
0.3.15-draft (2026-08-21) — §9.3: released builds are published to jxsuite.cachix.org and the flake names it, so a consumer substitutes jx-studio instead of building it; verify-cache proves that after each release. The release also builds aarch64-linux as an advisory leg beside the x86_64 gate, and nix.yml runs on pushes to main so pull requests inherit a warm Actions cache for the npm tarball derivations cache.nixos.org cannot serve.
0.3.14-draft (2026-08-20) — §9.3: the desktop entry ships under a stable id and claims the app_id Chromium actually gives an --app window, so the taskbar/dock can resolve the brand icon.
0.3.13-draft (2026-08-20) — Chromium launcher reaches PAL parity: its own adapter over createProjectServer (§9.1), multi-window through a cross-process window registry (§9.4), a server-to-client push channel behind live sidebar sync and focus, buildSite behind View: Open in Browser, appInfo for the About screen, and an OS-opener fallback so preview links and sign-in leave the app at all (§3.5, §9.5). New Window becomes the
view.newWindowcommand rather than a native-menu-only item, and the native menu drops its duplicate accelerators (§4.2a).0.3.12-draft (2026-08-19) — §9.3 documents the release branch as the ref a Nix consumer pins, and the nix build that gates it; corrects the install phase, which has used cp -r plus a dangling-symlink prune and src/chromium/index.ts since before this text was written.
0.3.11-draft (2026-08-16) — §3.6 the desktop signs in with an RFC 8252 loopback redirect and PKCE; the token rests in a 0600 credential store, not localStorage. RFC 8414 and RFC 7519 recorded Rejected as vacuous. Closes gap
and gap . 0.3.10-draft (2026-08-16) — §5 the contract's failure half is specified — one RFC 9457 registry; gap
closed. 0.3.9-draft (2026-08-15) — Add §12 Standards Alignment; §5 marked Partial — the Backend API Contract specifies no failure shape.
0.3.8-draft (2026-08-13) — Open Project asks where a project should open (§4.2a): New Window is routed through pickProject + openProjectInNewWindow, and the outcome is reported rather than the target.
0.3.7-draft (2026-08-11) — Name the pane context bar's resolving-with popover rather than the tab bar, which P8 deleted.
0.3.6-draft (2026-08-03) — §3.1/§5.1: findReferences? PAL member and the GET /__studio/references route — the read side of the rename refactor's walker.
0.3.5-draft (2026-08-02) — searchFiles, gitShow and openExternal RPC handlers registered on both launchers; styles/ staged into the packaged app.
0.3.4-draft (2026-07-31) — List the cfConnect? PAL member in the Publish/identity family — it ships in StudioPlatform and backs the hosted Cloudflare OAuth flow, but the table omitted it.
0.3.3-draft (2026-07-29) — PAL: launcher-only capabilities (updater, windowControls) stay off the StudioPlatform interface; adapter factories infer their return type and assert conformance instead of annotating it away.
0.3.2-draft (2026-07-29) — The desktop shell routes Studio preview links to the user's default browser via Utils.openExternal (§3.5).
0.3.1-draft (2026-07-25) — Repo picker gains a repository-access footer: per-installation manage links, install-on-another-account, and Refresh.
0.3.0-draft (2026-07-25) — New Project requires a user-chosen destination: StudioPlatform gains the required createDestination declaration, createProject takes a required destination (path parent or repo owner/name/visibility), and §4.5 defines the create flow. No backend picks a location.
0.2.7-draft (2026-07-24) — Cloud platform registers inside studio.js via a window.__jxCloud signal (single yjs for collab).
0.2.6-draft (2026-07-24) — Document packaged static-data staging into app/bun (create templates, starters) and postBuild bundle verification.
0.2.5-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.2.4-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.2.3-draft (2026-07-17) — Align spec.md, site-architecture, desktop, server, extensions with reality (
c61ba567).0.2.2-draft (2026-07-13) — Run formatter (
9e776783).0.2.1-draft (2026-05-20) — Run formatter (
8ba47930).0.2.0-draft (2026-05-17) — Remove auto-detection script and update documentation for NixOS desktop runtime (
6b746644).0.1.6-draft (2026-05-16) — Update desktop spec (
9453ea1f).0.1.5-draft (2026-04-23) — Oxfmt (
af32c08c).0.1.4-draft (2026-04-23) — Rebrand to jxsuite (
2897a4e8).0.1.3-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.2-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.1-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.0-draft (2026-04-15) — Implement platform abstraction (
962ba588).
extensions.md
0.4.2-draft (2026-08-29) — A format may declare rewrite: replace authored values in its own source text, for a format that is read but never round-tripped.
0.4.1-draft (2026-08-27) — Studio conversion and creation are parse/serialize consumers; what parse returns is decided by documentKinds.
0.4.0-draft (2026-08-26) — §8.4: an emitter must not emit the same content twice — the search index carries page preamble plus sections, not the corpus twice.
0.3.11-draft (2026-08-25) — §8.5: record that a host which cannot execute extension code sees only content-section mounts.
0.3.10-draft (2026-08-20) — §5.1 records the first-party fragment $id shape, https://jxsuite.com/schema/ext/
/ /v . 0.3.9-draft (2026-08-16) — §13.1 auth session cookies: __Host- prefix derived from the origin's scheme, rate limiting on everywhere, session lifetime stated, Partitioned never set. Closes gap
. 0.3.8-draft (2026-08-16) — §8 _meta is reserved in a resolvePaths result — it carries the source entry's facts, never a route parameter.
0.3.7-draft (2026-08-15) — mediaType is validated against RFC 6838 and carries RFC 7763 variant parameters; mediaTypeEssence for callers that key on a type (§7).
0.3.6-draft (2026-08-15) — Add §8.6 head: a section owner contributes entries from configuration, before the first page is built.
0.3.5-draft (2026-08-15) — Add §16 Standards Alignment: JSON Schema composition, media-type registration, and why JSON Patch is declined for lower.
0.3.4-draft (2026-08-08) — §5.4 states first-party schema resolution — an @jxsuite/*.json ref reads from the host workspace before any project-local file at the same path, with no fallback in that direction, so a stray install inside a starter can no longer answer for the core; and a validator composes a stale entry document in memory rather than writing over the one it is checking.
0.3.3-draft (2026-07-25) — Composition is host-agnostic: one pure function with an injected loader, so the cloud session composes the same entry documents in-Worker with no filesystem (§5.5).
0.3.2-draft (2026-07-25) — $schema bindings must be satisfied by by-id registration, never fetching — an in-document $schema overrides fileMatch and an unresolvable one voids validation entirely (§5.4).
0.3.1-draft (2026-07-25) — $paths validates against the source union instead of accepting any object (§5.3).
0.3.0-draft (2026-07-25) — Committed entry documents are single-resource: every $ref a root pointer (§5.2, §5.4).
0.2.9-draft (2026-07-24) — §2 package layout: correct the auth package description, note that /_jx/auth serves the Better Auth routes while table permission rules are enforced at /_jx/data, and add the missing search extension to the tree.
0.2.8-draft (2026-07-23) — Add the assets capability (§8.5): section owners publish source directories at site URLs.
0.2.7-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.2.6-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.2.5-draft (2026-07-22) — Align specs and docs with the bundled-schema validation contract (
ae861ff6).0.2.4-draft (2026-07-17) — Sidecar bundling, extension emit capability, heading anchors (
07e28bc3).0.2.3-draft (2026-07-17) — Align spec.md, site-architecture, desktop, server, extensions with reality (
c61ba567).0.2.2-draft (2026-07-11) — Better Auth extension — sessions, permissions, auth-gated data (
bf472285).0.2.1-draft (2026-07-08) — Shipped schema fragments + per-project schema emitters (
9e4a8936).0.2.0-draft (2026-07-08) — Extensions v2 framework + docs (
3fb8795f).0.1.0-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).
imports.md
0.1.10-draft (2026-08-27) — Components a project defines are discovered from the tree rather than only declared.
0.1.9-draft (2026-08-15) — Name where the emitted import map now points (§1).
0.1.8-draft (2026-08-15) — Number the sections so they are addressable, and add §7 Standards Alignment.
0.1.7-draft (2026-08-02) — Imports panel section renamed to Imported Modules in the UI.
0.1.6-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.5-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.4-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.3-draft (2026-06-01) — Remove old glob-based content type references (
6bcbfdaf).0.1.2-draft (2026-05-19) — Reflect new content type transition (
6eb3d2b6).0.1.1-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.0-draft (2026-04-22) — External web component support (
a9d0fbe4).
jx-markdown.md
0.1.9-draft (2026-08-27) — 12.8: roundtrip serialization is lossless where expressible, not total.
0.1.8-draft (2026-08-15) — Number the sections so they are addressable, and add §13 Standards Alignment.
0.1.7-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.6-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.5-draft (2026-07-17) — Build-time syntax highlighting for markdown code fences (
b2e7a561).0.1.4-draft (2026-06-15) — Arrays as pseudo-element (
0b8b3070).0.1.3-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.2-draft (2026-05-25) — Element annotations (title/description) (
c9137e50).0.1.1-draft (2026-05-20) — Run formatter (
8ba47930).0.1.0-draft (2026-05-11) — Jx markdown (
7b102340).
parser.md
0.2.10-draft (2026-08-27) — roundtrip serialization is lossless where expressible, not total.
0.2.9-draft (2026-08-16) — §3 heading slugs normalize to NFC before casing (UAX #15) and word counts segment rather than split on whitespace (UAX #29). Closes gap
and gap . 0.2.8-draft (2026-08-16) — §3 the markdown variant and YAML media type are what hosts serve, not only what the class declares; gap
and gap closed. 0.2.7-draft (2026-08-15) — §9.3 records _meta.mtime as the date fallback a feed uses.
0.2.6-draft (2026-08-15) — Add §9.3 date coercion: schema-declared date fields normalize to RFC 3339, ambiguous values are refused rather than guessed.
0.2.5-draft (2026-08-15) — Add §10 Standards Alignment; §3 marked Partial — heading slugs and word counts are correct only for Latin script.
0.2.4-draft (2026-07-23) — Document the Content project-section class: asset mounts and content-relative reference rewriting (§9).
0.2.3-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.2.2-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.2.1-draft (2026-07-17) — Sidecar bundling, extension emit capability, heading anchors (
07e28bc3).0.2.0-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.6-draft (2026-05-20) — Run formatter (
8ba47930).0.1.5-draft (2026-05-08) — Pass markdown attributes as properties (
407b70fc).0.1.4-draft (2026-04-23) — Rebrand to jxsuite (
2897a4e8).0.1.3-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.2-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.1-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.0-draft (2026-04-10) — Consolidate specs (
80ca313f).
relationships.md
0.1.4-draft (2026-08-15) — Add §6 Standards Alignment: JSON Schema 2020-12 for cardinality, and the JSON Pointer shape the reference form borrows.
0.1.3-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.2-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.1-draft (2026-07-08) — Shipped schema fragments + per-project schema emitters (
9e4a8936).0.1.0-draft (2026-07-08) — Extensions v2 framework + docs (
3fb8795f).
schema.md
0.4.8-draft (2026-08-16) — §3.5 documents, configs and class definitions cross the parse boundary in NFC (UAX #31 §R4).
0.4.7-draft (2026-08-16) — §3.2 language-tag keys carry a BCP 47 pattern, so author-time and build-time agree; gap
closed. 0.4.6-draft (2026-08-16) — §3.2 and §7: BCP 47 validation exists in the build; the schema is the half that still lacks it.
0.4.5-draft (2026-08-15) — I-JSON enforced at the parse boundary: duplicate names and unrepresentable integers are parse failures (§3.4).
0.4.4-draft (2026-08-15) — The class method role enum gains head (extensions.md §8.6).
0.4.3-draft (2026-08-15) — §3.1 records the root fields the 0.4.2 entry described.
0.4.2-draft (2026-08-15) — Document $lang, $dir and the previously undeclared $sitemap; defaults.dir; HeadEntry.textContent admits an object.
0.4.1-draft (2026-08-15) — build.headers declares the response-header output (site-architecture.md §14.3).
0.4.0-draft (2026-08-15) — redirects admits the object form the compiler and Studio already write, with an RFC 9110 status enum and a distinct rewrite shape; §3.2's redirect defect is resolved.
0.3.2-draft (2026-08-15) — Add §7 Standards Alignment; §3.2 marked Partial — redirects and i18n do not describe what the rest of the platform reads.
0.3.1-draft (2026-08-10) — §3.1 ElementTagName admits a TagExpression on ElementDef alone — a closed two-branch def whose every result $refs TagName, so the pattern is kept and the candidates stay enumerable; $head items are pinned to HeadEntry so a head tag cannot become choosable.
0.3.0-draft (2026-08-09) — §3.1 TagName gains a pattern — a tag name is a name, never an expression, because no consumer evaluates one and each failed differently and silently; SwitchNode is admitted as a child under ChildrenValue (anyOf, so a switch child may still carry its container tagName); ExternalClassDef.filter widened to a union like sort, since one flat property set is shared by every $prototype and was overriding extension classes' own declared parameters.
0.2.8-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.2.7-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.2.6-draft (2026-07-22) — Align specs and docs with the bundled-schema validation contract (
ae861ff6).0.2.5-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.2.4-draft (2026-05-18) — Always emit worker.js for cloudflare (
3dd37c2d).0.2.3-draft (2026-05-15) — Provider-sepcific Site-Wide Bundling (
51cb5cf6).0.2.2-draft (2026-04-23) — Site build (
ffe60ddc).0.2.1-draft (2026-04-23) — Compiler cli + published site (
4607ebbc).0.2.0-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.3-draft (2026-04-20) — Text nodes support (
4d45eeb7).0.1.2-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.1-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.0-draft (2026-04-10) — Consolidate specs (
80ca313f).
server.md
0.2.22 (2026-08-29) — A deployment base declared by the project's url is stripped from the request path at the edge, so the dev server answers both the bare and the based spelling.
0.2.21 (2026-08-27) — A rename resets any co-editing room keyed to the old path, so a shutdown flush cannot recreate the moved file.
0.2.20 (2026-08-27) — Directory listing and project-wide search answer in stable path order, in both implementations.
0.2.19 (2026-08-27) — The Studio API's path space is written down: server-root-relative in, project-relative out; a refactor target outside the active project is a 400, not a zero-result 200.
0.2.18 (2026-08-27) — The preview origin registers the project's own components without a declaration.
0.2.17 (2026-08-27) — The preview origin composes non-JSON pages through the project's extension registry, built from its config.
0.2.16 (2026-08-27) — The live site preview origin: an origin per project serving the working tree, with the overlay, the shared reload stream and its own resolver credential.
0.2.15 (2026-08-26) — the import stream names its destination on a ready line, before the crawl finishes (§4.2).
0.2.14 (2026-08-26) — Packages family:
GET /__studio/packages/versionsreports every dependency's newest published version, behind or not, replacing the outdated-only check.0.2.13 (2026-08-26) — the import stream's done line carries the run summary, and accepts an opt-in verify pass (§4).
0.2.12 (2026-08-25) — §3: the static-file order now matches a build — public/ precedes the project root, which survives as a compatibility lane that warns.
0.2.11 (2026-08-22) — §3.1: watch-policy.ts — watchers watch only directories and regular files, and contain symlinks to the root, so a socket cannot throw and a link out cannot walk the filesystem.
0.2.10 (2026-08-20) — The loopback project server's RPC socket carries server-initiated frames (ProjectServerHandle.push) — the loopback twin of the dev server's named fs SSE event, and the channel a desktop launcher raises a window over (§4.2).
0.2.9 (2026-08-18) — §4.2: the Studio shell's report-only Trusted Types header is removed — see spec.md §21.5.
0.2.8 (2026-08-18) — §4.2: both entry points send the Studio shell a report-only Trusted Types policy, and nothing else.
0.2.7 (2026-08-16) — §4.2 Fetch Metadata on every gated surface, the loopback block, a constant-time token, and the three ungated project-server routes closed; gap
closed. 0.2.6 (2026-08-16) — §4.3 every failure is an RFC 9457 problem document, guarded; gitPull produces the 409 the route table publishes; gap
closed. 0.2.5 (2026-08-16) — §5 and §8 record the source-map decision — a constant header offset is not a source map (ECMA-426, Rejected).
0.2.4 (2026-08-16) — §3 static responses correct the two content types where the platform default disagrees with the registration.
0.2.3 (2026-08-16) — §3.1 the SSE stream advertises retry: 500 and answers Last-Event-ID with one reload; gap
closed. 0.2.2 (2026-08-15) — Add §8 Standards Alignment; §4 and §4.2 marked Partial — the failure contract is unspecified and the project server does not gate uniformly.
0.2.1 (2026-07-25) — Activation admits an existing project of the account's own (project.json under the home directory); a refused activation must surface as an error rather than fall back to the server root.
0.2.0 (2026-07-25) — POST /__studio/create-project requires an explicit absolute destination parent — the server no longer falls back to its own root. Adds assertCreatableParent (root, allowedRoots, or home; absolute only), remembers created roots for a following activate, and returns an absolute root for projects outside the server root.
0.1.9 (2026-07-23) — Serve extension asset mounts ahead of the project root in the static-file chain (§3).
0.1.8 (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.7 (2026-07-22) — Fix failing tests (
56e073f8).0.1.6 (2026-07-22) — Harden dev server and unify runtime/compiler evaluation (
47a1d4c9).0.1.5 (2026-07-17) — Align spec.md, site-architecture, desktop, server, extensions with reality (
c61ba567).0.1.4 (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.3 (2026-04-23) — Rebrand to jxsuite (
2897a4e8).0.1.2 (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.1 (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.0 (2026-04-10) — Consolidate specs (
80ca313f).
site-architecture.md
0.6.10-draft (2026-08-29) — A site deployed under a subpath: url's path is the base every emitted reference resolves against, applied to every output a host reads and answered by the dev server alongside the bare path.
0.6.9-draft (2026-08-29) — A reference inside a format that cannot round-trip is repaired through the rewrite capability rather than reported as a remainder.
0.6.8-draft (2026-08-29) — Media reachable only through a cross-root asset mount has no project-relative name, which is why it has no usage count; addressing it is a host file-API question, not an engine one.
0.6.6-draft (2026-08-29) — A copy map's keys and a directory content source are references the engine reads by name; a copy destination is not, and a rewritten reference keeps its trailing slash.
0.6.5-draft (2026-08-29) — A media usage query asks about the file once; enumerating a file's authored spellings host-side is the engine's job, not a media surface's.
0.6.4-draft (2026-08-27) — Record that collection discovery is recursive, so a subdirectory holds entries as well as co-located media.
0.6.3-draft (2026-08-27) — Reference resolution through the asset lanes is the refactor engine's contract, in both directions: a rooted ref is counted through every lane, rewritten through the lanes a build publishes, and named in the report when it cannot be written.
0.6.2-draft (2026-08-27) — Routing, layout, context and head-merge move to @jxsuite/site; standards evidence follows.
0.6.1-draft (2026-08-27) — media files open in a viewer, which is the reader the usage query was missing (§9.4).
0.6.0-draft (2026-08-26) — §12.4: component CSS inlined and modulepreload hints emitted; §14.3: name the hosts that read _headers, and warn when one will not.
0.5.18-draft (2026-08-26) — Standards evidence follows head-merger to @jxsuite/schema.
0.5.17-draft (2026-08-25) — §9.3: an editor whose host does not serve the site URL space MUST resolve references to the project files they name; §9.4: a parent-realm preview resolves in the same space, and an authored reference is not a file path.
0.5.16-draft (2026-08-19) — §13.5: a translation key may name its route's parameters, so a collection's URLs can be localized; §13.3: a ContentEntry lookup is scoped to the route's language and a locale directory is matched case-insensitively; §6.7: a localized collection publishes one feed per language.
0.5.15-draft (2026-08-18) — §13.5: a document declares its identity across languages with $translationKey, so a localized slug is a translation; two routes claiming one language are reported, as an error when declared.
0.5.14-draft (2026-08-18) — §13.5 exposes the translation set to the page as $page.alternates, with each locale's autonym; §13.7 defaults a helper's locale to the page's own; §13.6 reports a prefix-always root no static deployment can answer.
0.5.13-draft (2026-08-18) — §8.7: the subpath entry is bundled rather than externalised, and the shared core is reached through an emitted stub — a self-referential asset broke every page using a directive.
0.5.12-draft (2026-08-18) — §8.7: subpaths resolve through a prefix key and an npm $elements set bundles as one self-contained module.
0.5.11-draft (2026-08-18) — §8.7: bare specifiers resolve on page and layout too, npm-only pages get an import map, and the package-subpath gap is recorded.
0.5.10-draft (2026-08-18) — §13: correct a status marker that contradicted §13.3 and §13.6 — {locale} expansion and Accept-Language negotiation both ship.
0.5.9-draft (2026-08-16) — §13.7 blessed Intl helpers — one shared list, five new helpers, and a fixed en-US/UTC default so a build's output is a function of its input. Closes gap
. 0.5.8-draft (2026-08-16) — §13.3 {locale} sources expand and scope route expansion; §13.6 Accept-Language negotiation in the generated worker; prefix-always is checked; gap
closed. 0.5.7-draft (2026-08-16) — §8.4.1 a generated route's lastmod comes from the entry it was generated from; gap
closed. 0.5.6-draft (2026-08-16) — §8.3 link relations are checked against the IANA registry, warning once per build; gap
closed. 0.5.5-draft (2026-08-16) — §16: the RFC 9110 row states the five statuses B1 shipped instead of the two that predated it.
0.5.4-draft (2026-08-16) — Optional service worker with a tombstone contract: off by default, network-first HTML, precache validated against the build's own output (§14.6).
0.5.3-draft (2026-08-16) — Cascade layer 6 describes the scoping that exists — there is no shadow DOM.
0.5.2-draft (2026-08-15) — Generate manifest.webmanifest and .well-known/security.txt (§14.5).
0.5.1-draft (2026-08-15) — hreflang alternates in and sitemap xhtml for translated pages (§13, §13.5).
0.5.0-draft (2026-08-15) — i18n: BCP 47 validation and canonicalization, route prefixes resolve to locales, per-page lang and script-derived dir, $page.locale (§13, §13.2, §13.4).
0.4.1-draft (2026-08-15) — Emit a Content-Security-Policy derived from the built pages: strict script-src from constant inline-script hashes, style-src divergence recorded (§14.3.1).
0.4.0-draft (2026-08-15) — Responsive images:
per format, one owner for loading attributes, fetchpriority honoured, lazyLoad independent of optimize (§9.2, §9.2.7). 0.3.3-draft (2026-08-15) — $head bare specifiers copy into /assets/ and $elements bundle there; an unresolvable one is a build error (§8.7).
0.3.2-draft (2026-08-15) — §8.4.1
is a full RFC 3339 timestamp; the per-template lastmod wart is named rather than implied. 0.3.1-draft (2026-08-15) — Add §6.7 syndication feeds: Atom and JSON Feed via @jxsuite/feed, RFC 5005 archives, RSS declined.
0.3.0-draft (2026-08-15) — §8.3 link identity includes hreflang/type/media/sizes; §8.5 JSON-LD objects serialize; §8.4 lang and dir come from the page.
0.2.1-draft (2026-08-15) — Add §14.3 response headers and §14.4 .nojekyll; §14's header gap is closed and vercel.json is declined.
0.2.0-draft (2026-08-15) — §11.3 separates redirects from rewrites: an RFC 9110 status enum, a per-status HTML-fallback policy, and no file for a rewrite.
0.1.45-draft (2026-08-15) — Add §16 Standards Alignment; §8.5 marked Pending — the JSON-LD object form is unimplemented — and §14 Partial: no _headers or .nojekyll is emitted.
0.1.44-draft (2026-08-12) — Header status corrected from Pending to Partial — all seven marked sections were Implemented while the header claimed nothing was; §9.4's marker and its own Still-planned list contradicted each other (metadata and the delete warning ship; browsable usage does not); §12.3 and §13 marked Pending, having no dependency graph and no reader of the i18n config respectively.
0.1.43-draft (2026-08-11) — Studio SEO previews move from a Document Header disclosure into the Search appearance modal (document.openSeo), reachable from the card, the Page panel and the palette; fields grouped by the preview each feeds.
0.1.42-draft (2026-08-06) — §7.2 the Library and its window contract, §7.5 the CRUD table corrected — rename, delete and CSV editing already shipped and were listed Pending, §7.6 the draft pill, §8.6 merged-$head previews with no score, §9.4 usage keyed on the authored ref, §11.4 redirects as a GridSource with chain, loop and shadow validation.
0.1.41-draft (2026-08-05) — §3.2 names the consequence of the cascade — every property reaches every route, which is why Studio states the blast radius and edits the file under undo.
0.1.40-draft (2026-07-30) — A page uses a component when its tag appears in the prerendered HTML or in one of the page's island modules (§12.4).
0.1.39-draft (2026-07-28) — §9.3: editors that open a collection entry standalone must apply the mount rewrite to their render representation only, with the browser-side existence-check divergence stated.
0.1.38-draft (2026-07-28) — Media browser (§9.4) is Partial: upload ships on four Studio surfaces with content-collection destinations and collision-safe naming; metadata and usage tracking still pending.
0.1.37-draft (2026-07-24) — Document the application tier and correct the static-only framing: §1 vision, §1.1 principles 1/3/5, §1.2 coverage, §14.1/§14.2 adapter output (worker generation is gated on build.adapter alone), and new §15 Application Tier covering server functions, auth, and data mounts.
0.1.36-draft (2026-07-23) — Note the mounted-asset copy step in the build pipeline (§12.1).
0.1.35-draft (2026-07-23) — Content entries address media relative to themselves; collections publish their directory at /content/
(§9.3). 0.1.34-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.33-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.32-draft (2026-07-17) — Forced color-scheme contract — dual emission, color-scheme triplet, pre-paint script (
e629684d).0.1.31-draft (2026-07-17) — Bundle the site worker self-contained per adapter (
4096ba12).0.1.30-draft (2026-07-17) — Sidecar bundling, extension emit capability, heading anchors (
07e28bc3).0.1.29-draft (2026-07-17) — Image pruning for persistent site build cache + github ci cache (
b45096ed).0.1.28-draft (2026-07-17) — Align spec.md, site-architecture, desktop, server, extensions with reality (
c61ba567).0.1.27-draft (2026-06-25) — Sitemap generation (
948c7a67).0.1.26-draft (2026-06-10) — Update site architecture to reflect new changes (
c0bdba08).0.1.25-draft (2026-06-10) — Use cloudflare cgi for image optimization (
96228874).0.1.24-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.23-draft (2026-06-03) — Use
.cacheisntead of.jx-cacheto support cloudflare build cache (1103d2d6).0.1.22-draft (2026-06-01) — Remove old glob-based content type references (
6bcbfdaf).0.1.21-draft (2026-05-28) — Separate directory + format for content type defs (
c43186ac).0.1.20-draft (2026-05-25) — Element annotations (title/description) (
c9137e50).0.1.19-draft (2026-05-25) — Allow nested global styles (
1159d585).0.1.18-draft (2026-05-20) — Run formatter (
8ba47930).0.1.17-draft (2026-05-19) — Reflect new content type transition (
6eb3d2b6).0.1.16-draft (2026-05-18) — Always emit worker.js for cloudflare (
3dd37c2d).0.1.15-draft (2026-05-18) — Remove unused 'rendered' property from JSON and CSV entries (
7478a87c).0.1.14-draft (2026-05-15) — Image optimization specs (
7d2ee67f).0.1.13-draft (2026-05-15) — Provider-sepcific Site-Wide Bundling (
51cb5cf6).0.1.12-draft (2026-05-04) — Longhand/shorthand property input sync (
05c7da35).0.1.11-draft (2026-04-29) — Update site architecture progress (
3305a8f0).0.1.10-draft (2026-04-29) — Project browser (
11c1fe7c).0.1.9-draft (2026-04-23) — Site build (
ffe60ddc).0.1.8-draft (2026-04-23) — Compiler cli + published site (
4607ebbc).0.1.7-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.6-draft (2026-04-20) — Better project-level scoping (
0cba233c).0.1.5-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.4-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.3-draft (2026-04-15) — Importmap support (
c1b329d4).0.1.2-draft (2026-04-10) — WinterTC server-side conventions (
60eba6dd).0.1.1-draft (2026-04-10) — Site architecture update (
86d1c515).0.1.0-draft (2026-04-10) — Enhanced font picker (
9d388a32).
spec.md
0.5.8-draft (2026-08-26) — §5.3: $lazy on a $src Function defers the module to first call.
0.5.7-draft (2026-08-26) — §8.3: a boolean attribute value is emitted by family — presence for HTML boolean attributes, the written word for aria-* and the enumerated three.
0.5.6-draft (2026-08-25) — Clarify that the parentheses in an @(condition) style key belong to the query, so a bare media type emits without them (§9).
0.5.5-draft (2026-08-24) — 13.2 states that the runtime takes a prop from an instance only where the instance genuinely carries one — an own property or an attribute — because a state key colliding with a reflected DOM property otherwise reports an empty string and beats the component's declared default.
0.5.4-draft (2026-08-18) — §21.5: Trusted Types enforcement is declined rather than deferred — the observation run answered its question and was removed with its header; no innerHTML write remains in code Jx ships.
0.5.3-draft (2026-08-18) — §5.6: both tiers refuse a $props write against a private key, and a private entry gets no property accessor.
0.5.2-draft (2026-08-18) — §21.5: ship the Trusted Types observation stage, and correct two claims its first boot disproved.
0.5.1-draft (2026-08-18) — §7.1: state the one-separator rule without showcasing a dotted key; note that forbidding one would itself depart from RFC 6901.
0.5.0-draft (2026-08-17) — $ref is JSON Pointer:
/is the only separator and~0/~1are implemented; one shared tokenizer replaces five disagreeing ones.0.4.33-draft (2026-08-16) — §21.5 two CSP profiles, permanently: compiled output never needs 'unsafe-eval' and the interpreting canvas always will. A Trusted Types policy guards the shell's one injection sink and refuses to build scripts; the runtime's four innerHTML writes became replaceChildren().
0.4.32-draft (2026-08-16) — §11.2a the Cookie prototype derives Secure/Path/Domain from a name prefix and from SameSite=None; HttpOnly and Expires are absent on purpose; a cookie name is data, never pattern syntax.
0.4.31-draft (2026-08-16) — Shadow DOM opt-in: $shadow and defaults.shadow emit a declarative shadow root the element adopts;
translation keeps one style object valid in both modes (§16.6). 0.4.30-draft (2026-08-16) — §9.1 and §16.6: style scoping is a tag-name prefix and generated classes, not data-jx attribute selectors; cite the light-DOM divergence.
0.4.29-draft (2026-08-15) — §18 becomes the machine-checked standards table; §2.5 renamed Platform Precedents to free the reserved title; §21 marked Partial — no Trusted Types policy is installed.
0.4.28-draft (2026-08-10) — §19.6 $expression gains a third position — an element's tagName, narrowed to a TagExpression whose every branch is a literal TagName so the candidate set is enumerable without evaluating; it is the one $expression position that is not live, resolved once at element creation, and the document root's and $head entries' tagNames stay literal.
0.4.27-draft (2026-07-30) — Clarify that a bare
return;is an early-exit guard, not a value return, when classifying a Function body as a computed (§5.3 4b).0.4.26-draft (2026-07-30) — Define the handler-side iteration context: an event handler bound inside a map reads its row via state.$map (§10.2).
0.4.25-draft (2026-07-30) — Define parameter binding by name at event call sites, and how a bodyless $src Function is classified as a computed or a callable (§5.3 4d).
0.4.24-draft (2026-07-24) — §5.3 and §11.4: a timing: "server" route lands in the generated site worker only when build.adapter is set; without an adapter the compiler emits a per-page _server.js handler instead.
0.4.23-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.4.22-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.4.21-draft (2026-07-22) — Reconcile spec with shipped behavior; document the eval surface (
c8d1d580).0.4.20-draft (2026-07-22) — Align specs and docs with the bundled-schema validation contract (
ae861ff6).0.4.19-draft (2026-07-17) — Forced color-scheme contract — dual emission, color-scheme triplet, pre-paint script (
e629684d).0.4.18-draft (2026-07-17) — Sidecar bundling, extension emit capability, heading anchors (
07e28bc3).0.4.17-draft (2026-07-17) — Align spec.md, site-architecture, desktop, server, extensions with reality (
c61ba567).0.4.16-draft (2026-07-17) — Clean up spec (
897e8c1e).0.4.15-draft (2026-07-15) — Pure method operators and the composite formula catalog (spec §19.4d) (
58be3b1a).0.4.14-draft (2026-07-15) — Conditional operators and editor evaluation trace (spec §19.4b, §19.9) (
79926245).0.4.13-draft (2026-06-15) — Arrays as pseudo-element (
0b8b3070).0.4.12-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.4.11-draft (2026-06-02) — Returns type in the class definition (
32e4737a).0.4.10-draft (2026-06-01) — Declarative expressions (
472aeb15).0.4.9-draft (2026-05-25) — Element annotations (title/description) (
c9137e50).0.4.8-draft (2026-05-20) — "format" on fields for image fields (
02f87d29).0.4.7-draft (2026-05-20) — Release 0.11.0 (
4a0e17ed).0.4.6-draft (2026-05-20) — Run formatter (
8ba47930).0.4.5-draft (2026-05-18) — Always emit worker.js for cloudflare (
3dd37c2d).0.4.4-draft (2026-05-15) — Add markdown prototypes at top-level (
24020906).0.4.3-draft (2026-05-15) — Provider-sepcific Site-Wide Bundling (
51cb5cf6).0.4.2-draft (2026-04-23) — Oxfmt (
af32c08c).0.4.1-draft (2026-04-23) — Rebrand to jxsuite (
2897a4e8).0.4.0-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.3.7-draft (2026-04-22) — External web component support (
a9d0fbe4).0.3.6-draft (2026-04-22) — Init new site (
f33d319b).0.3.5-draft (2026-04-20) — Text nodes support (
4d45eeb7).0.3.4-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.3.3-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.3.2-draft (2026-04-15) — Importmap support (
c1b329d4).0.3.1-draft (2026-04-15) — Require json based entrypoints for external class integration (
86dc4383).0.3.0-draft (2026-04-10) — Consolidate specs (
80ca313f).0.2.3-draft (2026-04-07) — Custom element spec (
4f377be3).0.2.2-draft (2026-04-06) — Server-side timing (scaffolding) (
23932590).0.2.1-draft (2026-04-06) — Transition to vue reactivity (
70cb8445).0.2.0-draft (2026-04-06) — Pure js in defs and strings (
6494999d).0.1.3-draft (2026-04-06) — External/md parser (
5161ec0e).0.1.2-draft (2026-04-04) — Declarative media breakpoints (
3142b64e).0.1.1-draft (2026-04-04) — Rebrand as JSONsx (
0daa94f7).0.1.0-draft (2026-04-04) — Init (
a93852ac).
standards.md
0.1.15-draft (2026-08-17) — §4.1: the Standards Alignment heading is matched tolerantly and a visual-editor escape is reported as heading-escaped.
0.1.14-draft (2026-08-16) — §11 WebDriver BiDi leaves the adoption backlog — the pipeline speaks it, and studio-ui-guidelines.md §15 owns it.
0.1.13-draft (2026-08-16) — §11 RFC 8414 leaves the adoption backlog — the flow it would configure now exists, and it is recorded Rejected in desktop.md for the reason that remains.
0.1.12-draft (2026-08-16) — §12 declares the BCP 14 normative keywords for the whole corpus, gated by docs
; BCP 14 graduates off the backlog. 0.1.11-draft (2026-08-16) — §4.4 worked examples use a reserved gap
slug so an illustration cannot squat on a real gap id. 0.1.10-draft (2026-08-16) — §1 is Implemented — both ratchets are empty; BCP 14 moves to the backlog, since no section declares the corpus's keyword convention.
0.1.9-draft (2026-08-16) — Service Workers graduates to a bound row in site-architecture.md §14.6.
0.1.8-draft (2026-08-16) — CSS Shadow Parts backlog entry now waits on part attributes, not on shadow roots.
0.1.7-draft (2026-08-16) — Retarget the CSS Shadow Parts backlog entry at spec.md §16.6, which now owns the shadow-DOM question.
0.1.6-draft (2026-08-15) — Web App Manifest, RFC 9116 and RFC 8615 graduate to bound rows in site-architecture.md §14.5.
0.1.5-draft (2026-08-15) — UAX #9 and UTS #35 graduate to bound rows in site-architecture.md §13.4.
0.1.4-draft (2026-08-15) — RFC 4287, JSON Feed 1.1 and RFC 5005 graduate to bound rows in site-architecture.md §6.7.
0.1.3-draft (2026-08-15) — Three backlog entries graduate to bound rows in site-architecture.md §14.3 (HSTS, Referrer-Policy, Permissions-Policy).
0.1.2-draft (2026-08-15) — Add §11 Adoption Backlog: standards whose owning section does not exist yet, each naming the spec that will own it.
0.1.1-draft (2026-08-15) — A Subset may name a gap for the half it omits; a non-standard is prose rather than a Rejected row.
0.1.0-draft (2026-08-14) — Initial specification: the conformance vocabulary, the
## N. Standards Alignmenttable contract, citation and canonical-URL rules, gap tiers derived from section status, and governance for declining a standard.
studio-ui-guidelines.md
0.3.16 (2026-08-27) — showPromptDialog carries an optional choice control beside its field.
0.3.15 (2026-08-26) — §8.4 becomes Menus: menu-button triggers, submenus and the APG deviation; §12.1 gains the settings/menu placement.
0.3.14 (2026-08-22) — Template conventions (9.4) and the gate behind them; render orchestration described as it is; custom components corrected to the two that exist.
0.3.13 (2026-08-21) — Chrome ships two themes; a theme in CHROME_THEMES must have its Spectrum colour fragment registered, and the semantic token table documents the dark fallbacks with the light ramp resolved from the brand fragment.
0.3.12 (2026-08-16) — §15 the documentation screenshot pipeline drives Chromium over WebDriver BiDi rather than CDP — byte-identical captures, and the one behavioural difference (a pointer move outside the viewport) fixed rather than worked around.
0.3.11 (2026-08-16) — §14 ATAG is Subset: Part A is §13.1a and §8.2, Part B is studio.md §16.6.
0.3.10 (2026-08-16) — §1.1 the token table's fallbacks are corrected and gated against tokens.css; §8.2 cut/paste is the stated alternative to every drag (SC 2.5.7); §13.1a one live region, called from notify() itself, so a failure that lands in the Problems panel is announced.
0.3.9 (2026-08-15) — Add §14 Standards Alignment; §8 marked Partial — drag and drop has no non-dragging alternative (WCAG 2.2 SC 2.5.7).
0.3.8 (2026-08-13) — A row wraps and never overflows (§4.6); the floating bar's visibility rule.
0.3.7 (2026-08-12) — blockbar/format joins the level × placement matrix, with its own chrome budget.
0.3.6 (2026-08-10) — §12.4 the agent counts as a surface — an assistant tool that writes what a command writes binds to the command's rule by reading the same CommandContext, not by recomputing it; the element-tree writers move to a document-tree tier gated on the registry's own editor.kind.
0.3.5 (2026-08-10) — §12 a command family over one surface declares ONE availability rule — six families disagreed with themselves, and in each the loose member was the one that wrote: git.createGithubRepository created a remote repository where its disabled peer git.push would not, publish.deploy pushed on a host with no Cloudflare API, the Outline's movers and the element menu's mutating rows spliced elements into project.json where Delete was correctly refused, view.setActivity persisted a gated-off panel, and the inspector.focus chords half-applied.
0.3.4 (2026-08-05) — §9.2 history covers project documents — a settings mistake undoes like a document mistake, and a failed write leaves no entry.
0.3.3 (2026-08-05) — §8.1 corrects where accumulate is authored — the canvas toggles a node into the selection too; only the marquee is absent.
0.3.2 (2026-08-04) — §4.2 the set dot is the provenance chip's set-here state, in four states with the donor named; §8.1 selection is a list, with the anchor/primary rule and the one-transaction requirement.
0.3.1 (2026-08-04) — §13 Notification Tiers — choosing a tier by the action required, the rendering rules, and the four rules that keep feedback from becoming a fourth surface.
0.3.0 (2026-08-02) — Empty States and Copy (§11); Command and Menu Rendering Rules incl. the level × placement matrix (§12).
0.2.3 (2026-08-02) — One teaching empty-state pattern (new §11); focus-visible rings replace bare outline
; settings writes surface failure at the control. 0.2.2 (2026-08-02) — openModal shares showDialog's focus machinery: role/label at the wrapper, focus trap, focus restore, centralised Escape (§8.7).
0.2.1 (2026-07-28) — Drag-and-drop conventions for external OS file drags (§8.2): copy dropEffect, the Files-type guard, tree highlights, and the canvas replace-vs-insert affordance.
0.2.0 (2026-07-26) — Canvas caret replaces the inline-edit session (§8.3); click selects and places the caret (§8.1); canvas drags start only from the bar handle (§8.2); single-shape action bar (§8.6).
0.1.8 (2026-07-26) — Modal surfaces own the keyboard: showDialog focus handoff, Escape dismissal, and the isModalOpen() shortcut gate (§8.7).
0.1.7 (2026-07-26) — Dialogs and overlay layers (§8.7): the ui/layers.ts contract, showPromptDialog as the replacement for window.prompt(), and a ban on native browser dialogs.
0.1.6 (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.5 (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.4 (2026-07-17) — Color-scheme canvas preview — Auto/Light/Dark tab-bar control (
ccdc1d3e).0.1.3 (2026-06-01) — Convert to typescript (
e352e265).0.1.2 (2026-04-22) — External web component support (
a9d0fbe4).0.1.1 (2026-04-22) — Init new site (
f33d319b).0.1.0 (2026-04-18) — Ui guidelines (
91f2b29e).
studio.md
0.10.3-draft (2026-08-30) — 15: a brokered credential row reads from the broker, and carries reconnect, account choice and a disconnect that reaches it.
0.10.2-draft (2026-08-29) — A format declaring rewrite rather than serialize has its references repaired by the rename refactor, so it is no longer a reported remainder.
0.10.1-draft (2026-08-28) — studioShellHtml() now links a favicon for hosts whose window chrome has no native icon of its own.
0.10.0-draft (2026-08-27) — New File chooses a format rather than an extension (Other... preserves arbitrary names); a document converts between formats in place; creating in a collection source routes to New Entry.
0.9.53-draft (2026-08-27) — A rename or drag-move whose refactor report names references it could not rewrite reports a warning, not a plain success; a drag-move invalidates the usage cache like its siblings.
0.9.52-draft (2026-08-27) — Open in Browser previews the working tree through the runtime; Build Site keeps the compiler under its own verb.
0.9.51-draft (2026-08-27) — a media file opens in a Media mode that shows it and says what uses it (§4.2, §9.3, §13.4); a long run's log is a feed that outlives the run (§6).
0.9.50-draft (2026-08-26) — the gear's project rows disable rather than hide, and the menu is bottom-anchored to its trigger's region.
0.9.49-draft (2026-08-26) — the rail foot is a Settings menu over both settings families; styles.open names the Project Styles editor.
0.9.48-draft (2026-08-26) — buildSite may serve a live rendering of the working tree rather than build output; SiteBuildResult.mode says which.
0.9.47-draft (2026-08-26) — 9.1.4 the Files tree hides what .gitignore masks — rules from every level, filtered where rows are built, a per-user toggle that defaults to hiding, and no .git/info/exclude or core.excludesFile.
0.9.46-draft (2026-08-26) — the Assistant tab draws a running import and the agent's questions (§6).
0.9.45-draft (2026-08-25) — Preferences §15: a blank field never deletes, a default is never a stored value, and every preference roams between windows.
0.9.44-draft (2026-08-25) — Declare assetSpace: the canvas origin serves either the site URL space or repo paths under documentBaseUrl (§3.4/§4.1/§11.2); media resolves at render rather than by a document walk (§4.1); typed UploadResult and declared asset capabilities (§9.3).
0.9.43-draft (2026-08-25) — §13.5 names all seven quiescence sources, and adds the grid: a table still building, or built but not yet showing its selection range, is not settled.
0.9.42-draft (2026-08-24) — 8.2.6 refuses a prop delivered by any route the property bridge reads — a data-jx-props payload or a top-level key on the instance node, alongside the two attribute shapes — because $props is not the only place a value lives.
0.9.41-draft (2026-08-24) — 8.2.6 refuses a prop delivered through attributes — the props.* JSON shorthand or a name colliding with a reflected DOM property — because reading $props alone reports it unset, and committing would leave two sources for one rendered value; and 8.2 re-enters a prop host after a $props patch rebuilds the instance.
0.9.40-draft (2026-08-24) — 8.2.6 refuses a non-string prop for inline editing (the session commits textContent, so a number or boolean would be retyped) and states that a session which changes nothing writes nothing, with Escape a real cancel that also undoes an idle commit made during the session.
0.9.39-draft (2026-08-24) — 8.2.1 records that a prop-bound host is classified before positions are resolved: it has no document path, so the unresolvable-position rule would otherwise reject every keystroke in it, and only the paragraph split and line break are prevented there.
0.9.38-draft (2026-08-24) — 8.2 states that a component island covers the component's internals and never the document slotted into it: a child with a stamped path is re-opened, a nested instance stays frozen, and connectedCallback internals are never re-opened.
0.9.37-draft (2026-08-22) — 11.2 Hosting the Studio: the asset manifest, the two layout modes, generated documents, the boot slot and the layering rule; 11.1 states the entry-rooted asset rule; 3.4's stale member names and file extensions corrected.
0.9.36-draft (2026-08-21) — Preferences → Appearance states what the theme repaints: the chrome, the overlays and an open code view, with the canvas a light document in both.
0.9.35-draft (2026-08-20) — Declare the Monaco editor feature set in monaco-setup (one register import per capability, and the measured caveat that 0.56.0's contrib graph does not yet honour the exclusions); drop the Monaco de-duplication plugin now that the first-party collab binding leaves one importer.
0.9.34-draft (2026-08-19) — A stage with no pan/zoom surface leaves the wheel to the scroll container under it, and blocks ctrl/cmd+wheel page zoom instead of handing it to the browser.
0.9.33-draft (2026-08-19) — §20.4: the parity grid keys on the document's $translationKey, so a localized slug is one row rather than two half-translated ones.
0.9.32-draft (2026-08-19) — §20 Internationalization Surfaces — the locale reader, the rendering-language axis, the locale companion, the Languages parity panel and the Locales settings section; §18.4 gains the locale preset and its probe.
0.9.31-draft (2026-08-19) — §13.5 lists the three behaviours ?automation=1 may change, and makes booting with an uninvited modal a refusal — an underlay swallows the viewport, so a dialog nobody scripted scrims the capture.
0.9.30-draft (2026-08-18) — §15: the Keyboard sheet is no longer read-only — rebinding ships, Editor and Updates/About remain pending.
0.9.29-draft (2026-08-18) — §16 and §19: the notify announcement ships — correct a marker and a WAI-ARIA note that both described the gap it closed.
0.9.28-draft (2026-08-18) — §6.8: the From data… picker addresses only what it can list — nested paths and tokens holding a dot or slash are legal pointers it cannot author.
0.9.27-draft (2026-08-16) — §16.6 reports about the author's own content — an ATAG Part B accessibility check and the SEO warnings both file Problems, each finding naming its WCAG criterion, and each run naming what it could not check. Closes gap
. 0.9.26-draft (2026-08-16) — §16 one Problem reader over every backend failure shape; gap
closed. 0.9.25-draft (2026-08-15) — Add §19 Standards Alignment; six bare Status: lines converted to the blockquote form no tool could read, and §16 marked Partial — the one status channel has no live region for the error tier.
0.9.24-draft (2026-08-13) — Open in Browser serves the built site on its own origin; the build reports the URL.
0.9.23-draft (2026-08-13) — Open in Browser opens the page's route on a server that serves the built site there, and builds it first.
0.9.22-draft (2026-08-13) — The slash menu is recognised at the editing host and gains a named door (insert.openSlashMenu).
0.9.21-draft (2026-08-13) — The block action bar steps aside when parent chrome takes the pointer, and returns on a selection change or a canvas pointerdown.
0.9.20-draft (2026-08-12) — The canvas iframe resolves keystrokes against the host keymap; inline formatting, Select All and the caret's chords become records.
0.9.19-draft (2026-08-12) — Preview is a toggle over an edit/design base in the View control rather than a third radio value; it honours the chosen breakpoint like Edit and Design; and canvas.html's clip is lifted in preview so the pane-height frame can actually scroll its document.
0.9.18-draft (2026-08-11) — §12's status table re-read against the code: collection browser, entry editor, component library management and the redirect editor were shipped and still marked Pending; the CSS properties/parts panels are read-only reflections, not declaration forms; the CEM exporter is complete and unreachable; media usage is computed but only the delete confirmation reads it.
0.9.17-draft (2026-08-11) — SEO panel status is Partial — Search appearance ships the previews, counters and warnings; the schema.org editor is still pending.
0.9.16-draft (2026-08-11) — The resolving-with values move into their own popover, and each becomes a command (canvas.setTestProp / setRouteParam).
0.9.15-draft (2026-08-11) — The size switcher resizes the Edit column to the chosen breakpoint, and each rendering-context verb repaints the pane it wrote.
0.9.14-draft (2026-08-11) — §9.1.3 — one service decides what belongs in $elements, for all four writers of it.
0.9.13-draft (2026-08-11) — The Library has four doors including ⌘⇧E (§9.1.2), and the assistant's context budget is rendered.
0.9.12-draft (2026-08-11) — A field's uncommitted draft is keyed by node path, not by field name alone.
0.9.11-draft (2026-08-11) — Event names are a free-form combobox, and a bound provenance chip opens its source on every tab.
0.9.10-draft (2026-08-11) — §14.8 — a project reopens with the documents, panes and view settings it was left with.
0.9.9-draft (2026-08-11) — The rendering context's three axes are commands (canvas.setBreakpoint / setColorScheme / setLayoutVisible), and an empty-canvas right-click keeps the browser's menu.
0.9.8-draft (2026-08-11) — Project Settings carries ⌘⇧,, the other half of the pair §5.3 declares.
0.9.7-draft (2026-08-11) — Data rows: truncation markers are controls, Refresh reports the render rather than a timer, and an entry that cannot hold a value keeps its definition summary.
0.9.6-draft (2026-08-11) — The Activity Bar names the panels that ship, in their two rail groups; the Data panel is one list of definitions and the values they resolve to (§5.6), taking over the State panel's editor.
0.9.5-draft (2026-08-11) — §6.6 the value-source ladder gains a fourth rule — a position whose schema narrows which operators it admits seeds its own Formula rung, because the generic bare-?? seed is an invalid document there; an element's tagName joins the ladder, deriving to Fixed value + Formula with no template rung because TagName carries a pattern.
0.9.4-draft (2026-08-09) — §16.3 Problems leaves the Navigator rail — no Bottom-dock tab has a rail button, the count lives in the status bar and runs view.setBottomTab, and panel.focus.problems is gone with the ⌘1-8 roster that follows the rail; §16.1 restates where a Problem is surfaced.
0.9.3-draft (2026-08-09) — §13.5 corrects check-icons — an icon key on a record is resolved through a map, not registered as a tag, and the two spaces fail differently; the previous text asserted the opposite and licensed a fix that replaced a working hand-drawn glyph with a key nothing resolved.
0.9.2-draft (2026-08-08) — §13.5 adds scripts/check-icons.ts — an sp-icon-* tag no element registers, or a registered element Spectrum does not ship, is now a red PR; the command record's icon field described accurately as a tag name rather than a key into a map.
0.9.1-draft (2026-08-08) — §18.4 derived panes ship — a pane chosen by a standing rule rather than a document; a preset is a projection (Code, Diff — one document, two sessions), a follow (Layout, Component definition — genuinely different documents) or a filter (a breakpoint of the board already drawn); §14.1 holds because following is dispose-and-open, with four exclusions keeping one document to one tab; a pane holds a derivation or tabs, never both.
0.9.0-draft (2026-08-07) — §18 Panes rewritten for two live panes — the grid draws a keyed cell per pane and the stage handover is deleted; the editor-kind cap on the side pane is gone and a split is a real side-by-side; clicking into a pane focuses it; nothing drawn for a pane may resolve the focus, enforced by check-pane-singletons; §18.4 derived panes named as not built.
0.8.0-draft (2026-08-07) — Sub-documents withdrawn (§14.3) — the stack had no push, so nothing could enter it; §14.7 closing over unsaved work, and §4.2 source is batched so every exit settles first; the Bottom dock is three tabs and Diff is a pane editor kind (§16.3); §18 Panes — the two-pane cap as one predicate, one stage handed between panes, and no pane zoom until there is a grid to zoom.
0.7.0-draft (2026-08-06) — §18 Panes — the two-pane cap as one predicate, the three lifecycle rules each defect taught, what a second pane costs and what no fan-out removes, and the single stage handed between panes.
0.6.0-draft (2026-08-05) — §7 Stylebook becomes Project Styles (name only — "stylebook" stays the wire value) and §17 Project Documents: project.json as a Tab under the transaction log, one write chokepoint, a no-op edit that writes nothing, and the collab exclusion.
0.5.2-draft (2026-08-05) — §5.2 the move buttons follow the primary selection and stay single-target under a multiple selection.
0.5.1-draft (2026-08-05) — §6.2 corrects the Target Line illustration — the selector is the last segment and a scheme variant appears only at Base — and retires the breakpoint-tabs, inline-selector-picker and Active-toggle subsections the Target Line replaced.
0.5.0-draft (2026-08-04) — §6.2 the Target Line and its scope chip; §6.6 the one value-source ladder; §6.7 provenance chips naming the donor, and selection as a JxPath[] with Mixed values and one transaction per batch; §7.4 scheme declaration moves to Contexts.
0.4.4-draft (2026-08-04) — §16 Feedback, Problems and Progress — the three notification tiers, the Bottom dock, Activity, and the status bar as ambient state only.
0.4.3-draft (2026-08-03) — §9.1.1: destructive confirmations state the reference count — what a delete breaks, what a rename rewrites, and the three states (counted / uncountable / unsupported) that are never collapsed.
0.4.2-draft (2026-08-03) — The Inspector's fourth tab (§3.1, §6): the assistant is Content · Style · Logic · Assistant, not a fifth column; two docks, one persisted record. Application Preferences (§15) — Appearance, Assistant, Accounts (listed and revocable) and a registry-generated Keyboard sheet.
0.4.1-draft (2026-08-02) — Automation surface is a projection of the command registry (§13.5): the projection, idempotence and Remote rules; probe.idle() as a failing predicate; pointAt in top-document coordinates.
0.4.0-draft (2026-08-02) — Command Registry and Context Keys (§13); Tabs and Document Identity (§14) — drill-in opens a real tab, labels disambiguate by route.
0.3.8-draft (2026-08-02) — Layout chrome is selectable and inert to the caret; Preview gates editing and scrolls for real; Design opens fitted; caret.active is a bridge fact; Open in Browser (Cmd+Shift+O); assistant column defaults closed.
0.3.7-draft (2026-07-29) — Share one bundler contract between the release build and the dev-server watcher; nothing may fetch Monaco at startup; restrict preview navigation to http/https/mailto/tel.
0.3.6-draft (2026-07-28) — Preview link clicks open the target in a real browser tab instead of navigating the canvas iframe away.
0.3.5-draft (2026-07-28) — IME composition suspends canvas commits; the editable region gets textbox/aria-multiline/label (§8.2.8).
0.3.4-draft (2026-07-28) — Document the two-entry code-split bundle layout and the on-demand Monaco load (§11.1).
0.3.3-draft (2026-07-28) — Layer-row actions follow selection rather than hover; edit/design gate automatic Request fetches; structural splices escalate on the immediate parent only.
0.3.2-draft (2026-07-28) — Canvas maps a content entry's entry-relative media onto its asset mount (§4.1) so the preview matches the built site; render-only, source doc untouched.
0.3.1-draft (2026-07-28) — Media upload across four surfaces (§9.3): image-field Upload button, canvas file drop with replace-vs-insert, Files-tree and Manage destinations; collision-safe naming; binary uploadFile on every platform.
0.3.0-draft (2026-07-27) — Derive the caret's editable tag set from the document's element vocabulary (§8.2.2): the format class decides per tag and can say no, so a Markdown blockquote holds paragraphs and a link is markup within a block; subsections after it renumber (nothing referenced them).
0.2.0-draft (2026-07-26) — Fluid document editing: the canvas carries a live caret (§8.2), one block action bar (§4.4), both editable modes behave identically for text (§4.2), and a rewritten keyboard contract (§10).
0.1.29-draft (2026-07-26) — File create/rename/delete naming dialogs (§9.1.1); branch, clone, and nested-selector flows now open Spectrum dialogs instead of native prompts.
0.1.28-draft (2026-07-25) — The Cloud platform target composes per-project schemas server-side (§3.4).
0.1.27-draft (2026-07-25) — Source-mode schema validation contract: per-project entry documents, offline $schema-id registration, worker self-location (§4.2.1); fetchProjectSchemas in the PAL table (§3.4).
0.1.26-draft (2026-07-25) — PAL table records the destination members: createDestination, createProject's user-chosen destination, and pickDirectory.
0.1.25-draft (2026-07-22) — Proper spec versioning (
fb0f3ec7).0.1.24-draft (2026-07-22) — Machine-readable spec status vocabulary + generated status page (
79daba23).0.1.23-draft (2026-07-17) — Scheme-variant editing — token overrides, scheme-layer routing, live feedback (
49f0c525).0.1.22-draft (2026-07-17) — Color-scheme canvas preview — Auto/Light/Dark tab-bar control (
ccdc1d3e).0.1.21-draft (2026-07-17) — Consolidated field mode switcher (
0a135ed1).0.1.20-draft (2026-06-10) — Consolidate markdown and csv handling to the parser package (
8b1ba6da).0.1.19-draft (2026-05-25) — Allow nested global styles (
1159d585).0.1.18-draft (2026-05-20) — "format" on fields for image fields (
02f87d29).0.1.17-draft (2026-05-20) — Run formatter (
8ba47930).0.1.16-draft (2026-05-15) — Git sidebar (
79663844).0.1.15-draft (2026-04-23) — Include global styling (
d8d25640).0.1.14-draft (2026-04-23) — Site build (
ffe60ddc).0.1.13-draft (2026-04-23) — Compiler cli + published site (
4607ebbc).0.1.12-draft (2026-04-22) — Consolidate project config schema and rename as such (
e3523dbf).0.1.11-draft (2026-04-22) — External web component support (
a9d0fbe4).0.1.10-draft (2026-04-22) — Init new site (
f33d319b).0.1.9-draft (2026-04-20) — Text nodes support (
4d45eeb7).0.1.8-draft (2026-04-20) — Better project-level scoping (
0cba233c).0.1.7-draft (2026-04-18) — Dedicated combo/picker component for style preview (
d8d07921).0.1.6-draft (2026-04-18) — Fix the test path handling on windows (
26ea0d70).0.1.5-draft (2026-04-17) — Update studio specs (
d0e5475a).0.1.4-draft (2026-04-17) — Reorganize code tree (
d5ee04c4).0.1.3-draft (2026-04-16) — Landing site + working exports + release-it + linting (
a8409b5f).0.1.2-draft (2026-04-15) — Rebrand to Jx / Jx Platform (
abc63f2d).0.1.1-draft (2026-04-10) — Finalize vision for site architecture (
da594993).0.1.0-draft (2026-04-10) — Consolidate specs (
80ca313f).