Skip to main content
VelinStyle v1.4.0
⌂ Home

Tailwind → VelinStyle migrate 1.4.0

Automated, honest migration for Tailwind v3/v4 projects. Dry-run by default. Unresolved tokens are never silently rewritten. This is not a Fake-1:1 claim. Deutsch

Architecture: Core (@birdapi/velinstyle) → optional Compatibility (@birdapi/velinstyle-tailwind) → optional Heuristic (--heuristic palette-roles). Compatibility is not a second design system.

Prerequisites

Three CLI modes

# Core-only (default dry-run)
velinstyle migrate tailwind ./my-project

# Core + Compatibility catalog
velinstyle migrate tailwind ./my-project --compat tailwind

# Core + Compat + opt-in palette→role heuristic
velinstyle migrate tailwind ./my-project --compat tailwind --heuristic palette-roles

# Apply Mapped rewrites only
velinstyle migrate tailwind ./my-project --write
velinstyle migrate rollback ./my-project
ModeCatalogNotes
Core-onlyCore onlyCompat classes stay unresolved / suggested
--compat tailwindCore ∪ CompatLoads @birdapi/velinstyle-tailwind
--heuristic palette-rolesCore ∪ Compat + map-only rolesSemantic approximation — not visual 1:1

Dry-run (default)

Apply (--write / --apply)

  1. Snapshot under .velin/migration/snapshots/<id>/
  2. Rewrites Mapped tokens only
  3. Unresolved / Warning tokens stay untouched
  4. Tailwind dependencies are never auto-removed

Class examples (with Compat)

TailwindVelinStyle Compat
px-4velin-px-4
w-4velin-w-4
grid-cols-3velin-grid-cols-3
flex-1velin-flex-1
rounded-mdvelin-rounded-md
space-y-4velin-space-y-4
bg-emerald-500/10velin-bg-emerald-500-10 (slash-opacity)

Slash-opacity

Responsive Compat

Supported wrappers: sm, md, lg, xlvelin-{bp}-* when the base class is in the catalog.

2xl is not supported and stays unresolved. This is not full Tailwind breakpoint parity.

Palette-role heuristic

Opt-in only: --heuristic palette-roles. Maps palette solids to existing Core semantic roles when a safe target exists:

Heuristic ≠ 1:1 color conversion. Palette without a Core target stays unresolved.

Reports

Dry-run JSON includes among others:

Pilot measurement (velisch.info copy)

Not a Tailwind compatibility guarantee. These numbers are the measured result of one pilot project (velisch.info copy), not “VelinStyle supports X% of Tailwind.”
MetricValue
Detected806
Mapped (Compat + heuristic)559
CoverageMapped%69.4%
Warnings74
Unresolved173
DynamicAttrsSkipped351 (separate KPI)
Compat Catalog2736
Core Catalog1427
Tests (Intelligence + migrate)94
Tests (+ release-sync)102
Historical Core-only baseline162 / 806 = 20.1% (historical)

An ≥80% gate was not reached — and must not be claimed. Realistic static ceiling without new State / Arbitrary / Theme / Dynamic engines: about 70–71%. Deliberate architecture choice in 1.4.x.

Migration Intelligence

After migrate analysis, residuals are structured as 23 User Actions and 6 Strategy Blocks. Acceptance, Rewrite Manifest, Preflight, Dry-Run, and Apply-Gate are available — but residual rewrites require an explicit mapping.

SAFE_REWRITE = 0: no freigegebene Residual source→target mappings in the current pilot. Intelligence does not invent targets. Details: Migration Intelligence.

P1 --write still applies only Catalog-Mapped tokens. That path is separate from Intelligence residual Apply.

Related