DTCG 2025.10 parsing
Tokens, groups, $type inheritance, $root, $extends, curly-brace aliases, and JSON Pointer references are recognized by their rules. A type is never guessed from a name or a value's shape.
Import a DTCG 2025.10 file, bind supported colors and scalar values to artwork, and when the file changes outside the app, re-import it and get a reviewed three-way merge instead of an overwrite.
Where it lives
Both halves of the system sit behind one dialog:View › Panels › Variables and Tokens…, or the command palette entry Open Variables and Tokens. The dialog lists your variables with their authored and resolved values, and underneath it the Token Sync center manages sources, import previews, updates, and export.
One reviewed transaction
A file is parsed, validated, and mapped onto token identities before anything touches your document. The preview you approve is the exact revision that gets applied, as a single undoable step.

What it handles
Tokens, groups, $type inheritance, $root, $extends, curly-brace aliases, and JSON Pointer references are recognized by their rules. A type is never guessed from a name or a value's shape.
Create a color, number, dimension, font family, or numeric font weight with an explicit type and full path. Pick a same-type alias target by its complete path. Importing a first file creates its source and store after review.
Re-importing a connected source compares base, local, and source per token. An upstream edit applies, a local edit survives, and an edit on both sides becomes a conflict you decide — never a source-wins overwrite and never a timestamp race.
Each conflicting token shows both values and asks for a decision: keep the Varve value or use the source value. Apply stays disabled until every conflict has been decided, so nothing is resolved quietly behind your back.
An unchanged token removed from its source becomes a tombstone. Its backing variable keeps the last supported resolved value as a local literal. Updates that would leave retained aliases dangling are blocked for review.
Token descriptions and deprecation notices, imported group-level $description, and unknown vendor $extensions survive canonical export. Updating group metadata through source synchronization is still pending. Extensions you do not understand are preserved, not interpreted.
Varve's canonical export keeps aliases and token-level $ref in their authored form. Downstream tools interpret them differently: in our Style Dictionary 5.5.5 probe, generated CSS omitted the token-level JSON Pointer alias. Check your target tool before relying on a reference in generated output.
Choose modifier contexts before importing a Resolver project. Varve resolves that selection after composing its explicitly supplied files. The import keeps a selected context as document tokens; keep the project files to retain other contexts and composition.
Export writes the same canonical bytes for an unchanged document: no timestamp, random identifier, or undocumented version field. Canonical output preserves supported authored data; another tool's transforms and interpretation vary by version.
Capability matrix
Scroll the table horizontally to read limits and verification on smaller screens.
| Operation | Result | Known limit | Verified by |
|---|---|---|---|
| Create a local token | Typed scalar form with units, full paths, and an alias picker | Composite editing uses source-content JSON; a dedicated composite form is pending | Form tests and an editor workflow |
| Import a token file | Validated preview, explicit destination, one undoable transaction | Valid composite values are retained with warnings where property bindings are unavailable | Unit suite plus a browser end-to-end spec |
| Bind artwork values | Colors, numbers, and pixel dimensions use existing property bindings | rem requires document font context. Font family/weight pickers and composite bindings are pending; typed values remain in the document | Runtime tests; the color workflow checks actual canvas pixels |
| Re-import an edited file | Base/local/source merge with added, updated, deleted, and unchanged counts | Manual re-import for now — there is no live file watcher yet | Browser spec asserting the exported bytes after an update |
| Resolve a conflict | Per-token choice between the Varve value and the source value | Decisions are per token; there is no bulk resolution action | Component tests covering blocked and resolved states |
| Export tokens | Deterministic canonical JSON with descriptions and extensions preserved | Group $type and $extends are reported as export notes rather than re-emitted | Round-trip tests and a browser download assertion |
| Vendor formats | Standards DTCG input and output only | Tokens Studio and Figma dialects are not claimed as 2025.10 interop | Not implemented — no claim made |
| Automatic source watching | Re-read on demand through the import workflow | No background watcher, no Git-backed source, no external write-back | Not implemented — no claim made |