remarque-tokens 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/REMARQUE.md +2 -2
- package/package.json +3 -3
- package/scripts/theme.mjs +17 -5
- package/tokens.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,27 @@ All notable changes to `remarque-tokens` are documented here. Token value
|
|
|
4
4
|
changes always state the design rationale — downstream sites pin against
|
|
5
5
|
these entries when syncing.
|
|
6
6
|
|
|
7
|
+
## 0.10.0 — 2026-07-23
|
|
8
|
+
|
|
9
|
+
Color-provider Phase 2 groundwork: the upstream dataset now pairs its own
|
|
10
|
+
themes, so the bridge no longer needs to be told what goes with what.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **`remarque-theme`: `--dark` is now optional.** Dataset 0.2.0 of
|
|
14
|
+
`@williamzujkowski/oklch-terminal-themes` ships a `counterpart` field
|
|
15
|
+
(canonical light↔dark pairing, curated for ambiguous families —
|
|
16
|
+
upstream #128); when the light theme declares one, the bridge uses it.
|
|
17
|
+
A counterpart slug is validated exactly like a user-supplied `--dark`
|
|
18
|
+
(index membership before any path resolution). Lights without a
|
|
19
|
+
counterpart still require `--dark`; nothing is guessed from names.
|
|
20
|
+
- **Corpus test now enumerates pairs from the `counterpart` field**
|
|
21
|
+
instead of the name-stem heuristic it shipped with — the dataset is
|
|
22
|
+
authoritative; the heuristic is gone.
|
|
23
|
+
- Dev-pinned dataset bumped `0.1.0` → `0.2.0` (485 → 547 themes; the
|
|
24
|
+
corpus now includes deriving Remarque's palette from its own upstreamed
|
|
25
|
+
`remarque-light`/`remarque-dark` terminal themes, upstream #127).
|
|
26
|
+
`peerDependencies` widened to `>=0.1.0 <0.3.0`.
|
|
27
|
+
|
|
7
28
|
## 0.9.0 — 2026-07-22
|
|
8
29
|
|
|
9
30
|
Color-provider bridge release (consensus-ratified 7-0, higher_order panel;
|
package/REMARQUE.md
CHANGED
|
@@ -77,14 +77,14 @@ The palette tier (all `--color-*` tokens) can be *supplied* rather than hand-aut
|
|
|
77
77
|
[`@williamzujkowski/oklch-terminal-themes`](https://www.npmjs.com/package/@williamzujkowski/oklch-terminal-themes) is the reference provider: a dataset of terminal color schemes converted to OKLCH. Run it through the bundled bridge:
|
|
78
78
|
|
|
79
79
|
```
|
|
80
|
-
npx remarque-theme <light-slug> --dark <dark-slug> [-o palette-override.css]
|
|
80
|
+
npx remarque-theme <light-slug> [--dark <dark-slug>] [-o palette-override.css]
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
Terminal themes carry only `background/foreground/cursor/selection` + 16 ANSI slots — a few of Remarque's 15 semantic slots map directly, and most themes fail the AAA `fg-muted` 7:1 line as authored. So `remarque-theme` *derives* rather than maps: **hue and chroma carry the theme's personality; lightness is solved per slot** (binary search against the same contrast targets as the Enforcement Checklist below, with in-gamut chroma clamping) so the output passes `remarque-audit` by construction. The accent hue comes from the theme's cursor color if it's chromatic, otherwise the most saturated classic ANSI color, and is kept consistent between the light and dark half of a pair.
|
|
84
84
|
|
|
85
85
|
The audit remains the gate regardless of provenance — `remarque-theme` self-verifies its own output against the same checks before it will emit anything, but a site that hand-edits a generated palette (or points at a provider with pathological input colors) still runs through `remarque-audit` in CI like any other palette.
|
|
86
86
|
|
|
87
|
-
**Pairing contract:**
|
|
87
|
+
**Pairing contract:** dataset 0.2.0+ carries a `counterpart` field linking each paired theme to its canonical opposite-polarity variant ([`oklch-terminal-themes#128`](https://github.com/williamzujkowski/oklch-terminal-themes/issues/128)), and `--dark` defaults to it — `npx remarque-theme rose-pine-dawn` alone derives the rosé-pine pair. For a light theme without a counterpart (or an older dataset), `--dark <slug>` remains required; nothing is ever guessed from names. `remarque-theme` also rejects a light slug that isn't tagged `isDark: false` and a dark slug that isn't tagged `isDark: true`.
|
|
88
88
|
|
|
89
89
|
---
|
|
90
90
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remarque-tokens",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=18"
|
|
6
6
|
},
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"drift": "node scripts/drift-check.mjs"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@williamzujkowski/oklch-terminal-themes": "0.
|
|
34
|
+
"@williamzujkowski/oklch-terminal-themes": "0.2.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@williamzujkowski/oklch-terminal-themes": "
|
|
37
|
+
"@williamzujkowski/oklch-terminal-themes": ">=0.1.0 <0.3.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependenciesMeta": {
|
|
40
40
|
"@williamzujkowski/oklch-terminal-themes": {
|
package/scripts/theme.mjs
CHANGED
|
@@ -41,12 +41,12 @@ try {
|
|
|
41
41
|
OWN_VERSION = JSON.parse(readFileSync(join(HERE, '..', 'package.json'), 'utf8')).version;
|
|
42
42
|
} catch { /* provenance is best-effort */ }
|
|
43
43
|
|
|
44
|
-
const USAGE = `usage: remarque-theme <light-slug> --dark <dark-slug> [-o out.css]
|
|
44
|
+
const USAGE = `usage: remarque-theme <light-slug> [--dark <dark-slug>] [-o out.css]
|
|
45
45
|
|
|
46
46
|
<light-slug> slug of a theme with isDark=false in ${PKG_SPEC}
|
|
47
|
-
--dark <slug> slug of a theme with isDark=true
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
--dark <slug> slug of a theme with isDark=true; defaults to the light
|
|
48
|
+
theme's "counterpart" from the dataset (0.2.0+) when it
|
|
49
|
+
has one, and is required when it doesn't
|
|
50
50
|
-o, --output write the derived palette here instead of stdout`;
|
|
51
51
|
|
|
52
52
|
function die(msg) {
|
|
@@ -67,7 +67,7 @@ for (let i = 0; i < argv.length; i++) {
|
|
|
67
67
|
else positional.push(a);
|
|
68
68
|
}
|
|
69
69
|
const lightSlug = positional[0];
|
|
70
|
-
if (!lightSlug
|
|
70
|
+
if (!lightSlug) die(USAGE);
|
|
71
71
|
|
|
72
72
|
/* ── Resolve @williamzujkowski/oklch-terminal-themes ─────────────────
|
|
73
73
|
* Tried from the consumer's cwd first (a project that installs the
|
|
@@ -123,6 +123,18 @@ function requireSlug(slug, label) {
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
const lightMeta = requireSlug(lightSlug, 'light');
|
|
126
|
+
/* --dark defaults to the dataset's counterpart field (0.2.0+). The value
|
|
127
|
+
* still goes through requireSlug like a user-supplied one — a dataset
|
|
128
|
+
* entry is not trusted further than the CLI arg it replaces. */
|
|
129
|
+
if (!darkSlug) {
|
|
130
|
+
darkSlug = lightMeta.counterpart;
|
|
131
|
+
if (!darkSlug) {
|
|
132
|
+
die(
|
|
133
|
+
`"${lightSlug}" has no counterpart in the installed ${PKG_SPEC} dataset — ` +
|
|
134
|
+
`pass --dark <slug> explicitly (or upgrade the dataset; pairing metadata landed in 0.2.0)`
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
126
138
|
const darkMeta = requireSlug(darkSlug, 'dark');
|
|
127
139
|
if (lightMeta.isDark !== false) die(`light slug "${lightSlug}" has isDark=${lightMeta.isDark}, expected false`);
|
|
128
140
|
if (darkMeta.isDark !== true) die(`dark slug "${darkSlug}" has isDark=${darkMeta.isDark}, expected true`);
|
package/tokens.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$description": "Remarque design tokens — GENERATED from tokens-core.css + tokens-palette.css by scripts/tokens-json.mjs. Do not edit; the CSS is the source of truth.",
|
|
3
3
|
"$extensions": {
|
|
4
4
|
"remarque": {
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.10.0",
|
|
6
6
|
"tiers": {
|
|
7
7
|
"core": "immutable identity — overriding forks the system",
|
|
8
8
|
"palette": "sanctioned personalization surface — override freely, then run remarque-audit"
|