release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0 - #109

Merged
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0
May 22, 2026
Merged

release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0#109
nathanacurtis merged 12 commits into
mainfrom
release/schema-0.21.0-cli-0.16.0

Conversation

@nathanacurtis

@nathanacurtisnathanacurtis commented May 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Release @directededges/specs-schema v0.21.0 — adds Config.format.tokens platform code-syntax profiles (FIGMA_SYNTAX_WEB/IOS/ANDROID).
  • Release @directededges/specs-cli v0.16.0 — surfaces the new token profiles in config loading + templates; bumps deps to schema ^0.21.0 and specs-from-figma ^0.19.0.
  • CI: makes release-cli.yml buildable from a clean checkout (root dep versioned, lockfile regenerated, schema built before tests).

Both packages published to npm. See packages/schema/CHANGELOG.md and packages/cli/CHANGELOG.md.

Closes#103

nathanacurtisand others added 5 commits May 20, 2026 08:53
* docs(adr): draft ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID profiles to format.tokens (DRAFT).
Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): claim ADR-051 in INDEX
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* feat(schema): implement ADR-051 platform code-syntax token profiles
Add FIGMA_SYNTAX_WEB/IOS/ANDROID to format.tokens (Config + ResolvedConfig)
and component.schema.json. Default unchanged (TOKEN); empty platform syntax
falls back to TOKEN output (transformer behavior). Folds into unreleased 0.21.0.
Update Config.test-d.ts, docs, and CHANGELOG. Refs #103
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(adr): mark ADR-051 ACCEPTED; move INDEX row to Accepted
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* feat(cli): accept FIGMA_SYNTAX_* token profiles (ADR 051)
Implement the CLI side of ADR 051, which adds three additive
`format.tokens` serialization profiles: FIGMA_SYNTAX_WEB,
FIGMA_SYNTAX_IOS, and FIGMA_SYNTAX_ANDROID.
- ConfigLoader: add the three values to the validTokens allow-list so
they are no longer reset to the TOKEN default during validation.
- ConfigTemplates: list the new values in the init scaffold comment.
- Tests: cover all eight valid token values plus lowercase
normalization for FIGMA_SYNTAX_IOS.
- Docs: document the platform code-syntax profiles in the token format
guide (profile section, comparison table, when-to-use list).
The schema package and config/commands doc sections already carried the
new enum; generate passes the resolved config through unchanged and
applyCustomTokens is unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* docs(cli): changelog entry for FIGMA_SYNTAX_* token profiles (ADR-051)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtisnathanacurtis changed the title release: schema-0.21.0-cli-0.16.0 (staging)Release: schema-0.21.0, cli-0.16.0May 21, 2026
nathanacurtisand others added 4 commits May 22, 2026 11:25
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CI publish (release-cli.yml) checks out the tag and runs `npm ci` + build +
test using only the specs repo. Two things prevented that:
- Root package.json linked specs-from-figma via `file:../specs-from-figma`,
so the committed lockfile resolved it to a sibling path absent in CI
(ERR_MODULE_NOT_FOUND). Swap to versioned `^0.19.0` and regenerate the
lockfile so it resolves from the npm registry.
- specs-schema is a workspace member whose dist/ is gitignored, and the CLI
imports runtime values from it. Add a "Build schema" step before the CLI
build/test so module resolution succeeds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ing is used
setup-node's registry-url writes an .npmrc _authToken line and exports a placeholder NODE_AUTH_TOKEN, forcing token auth (404). Removing it lets npm use OIDC trusted publishing.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@nathanacurtis
nathanacurtis marked this pull request as ready for review May 22, 2026 18:23
@nathanacurtisnathanacurtis changed the title Release: schema-0.21.0, cli-0.16.0release: @directededges/specs-schema v0.21.0 + @directededges/specs-cli v0.16.0May 22, 2026
@nathanacurtis
nathanacurtis merged commit b596bfe into mainMay 22, 2026
@nathanacurtis
nathanacurtis deleted the release/schema-0.21.0-cli-0.16.0 branch May 22, 2026 18:26
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plugin Token Formatting based on Platform Syntax

1 participant

@nathanacurtis