Skip to content

Releases: Toragonite/tailwind-for-ai

v0.3.0 — eject ships (experimental), with an honest exit report

Choose a tag to compare

@Toragonite Toragonite released this 28 Jul 10:03

New (experimental)

tabula eject now ships as an experimental feature — the one-way freeze and the new reverse-map analysis. The command works and is fully tested, but its surface (flags, report format, tier table) may change in a future minor release; feedback via issues is welcome.

  • tabula eject — freeze a verified .tabula/ into a project-owned directory that compiles on stock @tailwindcss/cli with zero class changes. Dry-run by default; fail-closed integrity preconditions; EJECTED.md provenance with the cn() keep-merge policy and exception-expiry table; --write-imports.
  • tabula eject --report (new) — an honest answer to "what would leaving Tabula for vanilla Tailwind actually take?": classifies every class your source uses into tiers A (portable as-is) / B (provably-1:1 rename — the only thing --write touches) / C (mechanical but rendering changes, with the exact caveat) / D (no vanilla equivalent). --theme-port shows the scenario where --tb-* namespaces are ported to vanilla ones. On the reference app: 18.9% portable as-is, 62.2% with a theme port — freezing keeps rendering exact, and the report says so.

Docs

Eject guide updated with the experimental status and the full --report tier reference — in English, 한국어, 日本語, 简体中文.

All 10 packages published in lockstep at 0.3.0 with npm provenance. No registry schema change (still v3); v0.2.x projects need no rebuild.

v0.2.1 — fresh-install fix

Choose a tag to compare

@Toragonite Toragonite released this 28 Jul 06:14

Patch release, found by post-release adversarial review of v0.2.0.

  • Fixed (critical for new users): tabula build failed on a fresh npm install@tailwindcss/postcss was only a devDependency of @tabula-css/registry while the registry generator imports it at runtime (TAB-E902: Cannot find package '@tailwindcss/postcss'). Present since v0.1.0, masked by the monorepo. It is now a real dependency; a fresh npm install + npx tabula build works end-to-end (verified from packed tarballs: build → scan gate → stock-Tailwind compile → cn()eject).
  • Fixed: the ESLint plugin now enforces the variant-product closure. no-unknown-class previously accepted undeclared chains (hover:p-md, md:bg-surface) that emit no CSS — the only one of the four validation surfaces (merge, scan, types, lint) with the gap. It now mirrors the merge gate and reports an accurate TAB-E230 message.
  • Docs: getting-started now lists all 12 artifacts (including the canonical tabula.config.json provenance copy), in English, 한국어, 日本語, 简体中文.

All 10 packages published in lockstep at 0.2.1 with npm provenance.

v0.2.0 — variants that actually emit, and an exit door

Choose a tag to compare

@Toragonite Toragonite released this 28 Jul 02:50

Tabula v0.2.0 — variants that actually emit, and an exit door

Breaking

  • Registry schema v3. registry.json gains variantProducts, chainCount, and
    chainExceptions; readers accept only v3. Upgrading from v0.1.0: run tabula build once —
    every artifact regenerates (registrySchemaVersion 2 != reader's 3 is the error you'll see
    until you do).
  • variantChainMaxLength default is now 2 (was 3), matching the shipped types.d.ts grammar.

Fixed

  • Variant classes emit CSS. In v0.1.0, every variant-prefixed class (hover:bg-accent-hover,
    sm:p-md, chains) silently produced no CSS: @source inline whitelisted only base classes
    while source(none) disabled scanning. v0.2.0 makes variant chains a first-class part of the
    registered set — T3 (Closure) keeps its exact wording; the registered set now includes
    declared variant products.

New

  • Declared variant products (variants config section): preset
    (interaction — the default — / all-len1 / none), explicit products
    (chain-prefix → families), and a maxChainCandidates budget (default 20,000, TAB-E172).
    The preset emits chain rules as literal CSS in a trailing @layer utilities block, in global
    (effectiveRank, class) order — cascade order provably matches the merge model (the
    conformance oracle asserts it against a real Tailwind build).
  • Loud failure paths, never silent-missing-CSS: tabula scan rejects out-of-set chains
    (TAB-E230, with canonical-order rewrites and declare-this-product fix-its), config gates
    (TAB-E170 media-without-breakpoints, TAB-E171 malformed products), and cn() dev-throws
    on undeclared chains.
  • Chain exceptions: tabula except add --chain hover:p-md registers a single chain class
    as an exact-class grant with the same paperwork/expiry as value exceptions.
  • Provenance-preserving artifacts: tokens.resolved.json now carries $deprecated,
    $extensions (including tabula.contrastWith accessibility contracts), and $alias
    markers; .tabula/tabula.config.json is a canonical copy of the config that built the
    artifacts. Restoring a buildable profile from a frozen .tabula/ is now near-lossless.
  • tabula eject — the one-way freeze: dry-run by default, --yes to execute, fail-closed
    integrity preconditions, EJECTED.md provenance (including the cn() keep-merge policy and
    an exception-expiry table, TAB-W402), --write-imports. The frozen directory compiles on
    stock @tailwindcss/cli with zero Tabula packages — verified end-to-end.

Docs

  • New guide: Eject — plus full v0.2 API
    reference updates, in English, 한국어, 日本語, and 简体中文.

All 10 packages published in lockstep at 0.2.0 with npm provenance.

Tabula v0.1.0

Choose a tag to compare

@Toragonite Toragonite released this 21 Jul 08:57

First public release of Tabula — an AI-friendly flat styling profile for Tailwind CSS v4.

What it is: a closed, named styling vocabulary + registry-backed deterministic merge + mechanical enforcement (ESLint/stylelint/build gates) + agent-facing manifests (llms.txt, MCP), built so an AI coding agent can fully determine and safely edit any element's styling from its own class string plus one flat token file.

The evidence: the included agent-editing benchmark (17 tasks, flat vs conventional-CSS arms). Across 5 sonnet-5 repetitions: flat 84/85 (98.8%) vs cascade 70/85 (82.4%), Fisher exact p = 0.0003 — with an exact task-level cross-model replication on opus-4-8. See benchmark/RESULTS.md.

Packages (all 0.1.0, npm provenance): core · tokens · registry · merge · preset · stylelint-plugin · eslint-plugin · react · cli · mcp — install as @tabula-css/<name>.

Docs: see docs/ (getting-started, concepts, agents, migration, css-governance, benchmark).