Releases: Toragonite/tailwind-for-ai
Release list
v0.3.0 — eject ships (experimental), with an honest exit report
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/cliwith zero class changes. Dry-run by default; fail-closed integrity preconditions;EJECTED.mdprovenance with thecn()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--writetouches) / C (mechanical but rendering changes, with the exact caveat) / D (no vanilla equivalent).--theme-portshows 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
Patch release, found by post-release adversarial review of v0.2.0.
- Fixed (critical for new users):
tabula buildfailed on a fresh npm install —@tailwindcss/postcsswas only a devDependency of@tabula-css/registrywhile 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 freshnpm install+npx tabula buildworks 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-classpreviously 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 accurateTAB-E230message. - Docs: getting-started now lists all 12 artifacts (including the canonical
tabula.config.jsonprovenance 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
Tabula v0.2.0 — variants that actually emit, and an exit door
Breaking
- Registry schema v3.
registry.jsongainsvariantProducts,chainCount, and
chainExceptions; readers accept only v3. Upgrading from v0.1.0: runtabula buildonce —
every artifact regenerates (registrySchemaVersion 2 != reader's 3is the error you'll see
until you do). variantChainMaxLengthdefault is now 2 (was 3), matching the shippedtypes.d.tsgrammar.
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 inlinewhitelisted only base classes
whilesource(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 (
variantsconfig section):preset
(interaction— the default — /all-len1/none), explicitproducts
(chain-prefix → families), and amaxChainCandidatesbudget (default 20,000,TAB-E172).
The preset emits chain rules as literal CSS in a trailing@layer utilitiesblock, 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 scanrejects out-of-set chains
(TAB-E230, with canonical-order rewrites and declare-this-product fix-its), config gates
(TAB-E170media-without-breakpoints,TAB-E171malformed products), andcn()dev-throws
on undeclared chains. - Chain exceptions:
tabula except add --chain hover:p-mdregisters a single chain class
as an exact-class grant with the same paperwork/expiry as value exceptions. - Provenance-preserving artifacts:
tokens.resolved.jsonnow carries$deprecated,
$extensions(includingtabula.contrastWithaccessibility contracts), and$alias
markers;.tabula/tabula.config.jsonis 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,--yesto execute, fail-closed
integrity preconditions,EJECTED.mdprovenance (including thecn()keep-merge policy and
an exception-expiry table,TAB-W402),--write-imports. The frozen directory compiles on
stock@tailwindcss/cliwith 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
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).