From 1eb6fc44a13caefba82ab620c0a3c142ddb3abe1 Mon Sep 17 00:00:00 2001 From: Nathan Curtis <1165904+nathanacurtis@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:44:53 -0400 Subject: [PATCH 1/4] chore: start @directededges/specs-schema v0.30.0 development --- packages/schema/CHANGELOG.md | 9 +++++++++ packages/schema/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/schema/CHANGELOG.md b/packages/schema/CHANGELOG.md index d251199..4d9c413 100644 --- a/packages/schema/CHANGELOG.md +++ b/packages/schema/CHANGELOG.md @@ -5,6 +5,15 @@ All notable changes to the Specs schema will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +### Changed + +### Removed + + ## [0.29.0] - 2026-08-07 Numeric properties can now be marked nullable, matching the flexibility already available on strings, slots, and images. Horizontal text alignment now uses logical inline-axis direction (`START`/`END`) instead of physical `LEFT`/`RIGHT`, so specs read correctly regardless of writing direction. diff --git a/packages/schema/package.json b/packages/schema/package.json index 728a899..3d81f76 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -1,6 +1,6 @@ { "name": "@directededges/specs-schema", - "version": "0.29.0", + "version": "0.30.0", "description": "Specs UI Component Schema - TypeScript types and JSON schema definitions for component specifications", "license": "CC-BY-4.0", "author": "Nathan Curtis ", From 64c3585f7a30ccb136534ca8a29e772bcc7d8902 Mon Sep 17 00:00:00 2001 From: Nathan Curtis <1165904+nathanacurtis@users.noreply.github.com> Date: Fri, 7 Aug 2026 09:44:58 -0400 Subject: [PATCH 2/4] chore: start @directededges/specs-cli v0.27.0 development --- packages/cli/CHANGELOG.md | 9 +++++++++ packages/cli/package.json | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index fd26520..da024bc 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -5,6 +5,15 @@ All notable changes to `@directededges/specs-cli` are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Added + +### Changed + +### Removed + + ## Unreleased ### Added diff --git a/packages/cli/package.json b/packages/cli/package.json index 2f39275..c16d667 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@directededges/specs-cli", - "version": "0.26.0", + "version": "0.27.0", "description": "Command-line interface for Specs design system operations", "type": "module", "main": "./dist/index.js", From 8392fe7bcd535f36168e5547225d1b05eee75d64 Mon Sep 17 00:00:00 2001 From: Nathan Curtis <1165904+nathanacurtis@users.noreply.github.com> Date: Mon, 10 Aug 2026 11:26:12 -0400 Subject: [PATCH 3/4] docs(adr): claim ADR 066 in INDEX Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TfAEBwDThqo1KpCL8GaruH --- adr/INDEX.md | 1 + 1 file changed, 1 insertion(+) diff --git a/adr/INDEX.md b/adr/INDEX.md index 35a7f3e..aa7b832 100644 --- a/adr/INDEX.md +++ b/adr/INDEX.md @@ -4,6 +4,7 @@ | # | Title | Highlights | |---|-------|------------| +| 066 | Lossless Key Formatting — Safe Key Grammar and Original-Name Preservation | | | 065 | Document the `nullable` Default and Add `NumberProp.nullable` | Absent `nullable` means true for `StringProp`/`NumberProp`/`SlotProp`/`ImageProp`, false for `EnumProp`; adds `NumberProp.nullable` | | 064 | Tighten `textAlignHorizontal` to a Logical-Direction String Enum | | | 062 | Text Overflow & Max Lines — `textOverflow` and `maxLines` on `Styles` | | From 501a58a7552ce95a57b6d969292e88374047fd49 Mon Sep 17 00:00:00 2001 From: Nathan Curtis <1165904+nathanacurtis@users.noreply.github.com> Date: Mon, 10 Aug 2026 21:35:03 -0400 Subject: [PATCH 4/4] Point the engine link at its package inside the monorepo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit specs-from-figma moved src/ into packages/specs-from-figma/, so file:../specs-from-figma now resolves to the workspace root — private, no main — and the engine fails to import. Dev-time link only; the CLI's own dependency stays a published version range. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01ELnRyPVrSVkXwqpPxH4Ci4 --- package-lock.json | 40 ++++++++++++++++++++++++++++++++++------ package.json | 2 +- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95286cd..db09716 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "packages/cli" ], "dependencies": { - "@directededges/specs-from-figma": "file:../specs-from-figma" + "@directededges/specs-from-figma": "file:../specs-from-figma/packages/specs-from-figma" }, "devDependencies": { "typescript": "^5.3.3", @@ -18,8 +18,17 @@ } }, "../specs-from-figma": { + "name": "specs-from-figma-monorepo", + "dev": true, + "optional": true, + "peer": true, + "workspaces": [ + "packages/*" + ] + }, + "../specs-from-figma/packages/specs-from-figma": { "name": "@directededges/specs-from-figma", - "version": "0.28.0", + "version": "0.29.0", "license": "PolyForm-Internal-Use-1.0.0", "dependencies": { "@directededges/specs-schema": "^0.29.0", @@ -32,13 +41,15 @@ "@figma/rest-api-spec": "^0.36.0", "@types/fs-extra": "^11.0.4", "@types/node": "^20.0.0", + "@types/ws": "^8.18.1", "dts-bundle-generator": "^9.5.1", "esbuild": "^0.25.5", "eslint": "^9.39.5", "javascript-obfuscator": "^5.3.0", "typescript": "^5.3.2", "typescript-eslint": "^8.64.0", - "vitest": "^4.0.17" + "vitest": "^4.0.17", + "ws": "^8.21.0" } }, "node_modules/@directededges/specs-cli": { @@ -46,7 +57,7 @@ "link": true }, "node_modules/@directededges/specs-from-figma": { - "resolved": "../specs-from-figma", + "resolved": "../specs-from-figma/packages/specs-from-figma", "link": true }, "node_modules/@directededges/specs-schema": { @@ -1621,7 +1632,7 @@ }, "packages/cli": { "name": "@directededges/specs-cli", - "version": "0.26.0", + "version": "0.27.0", "license": "MIT", "dependencies": { "@directededges/specs-from-figma": "^0.28.0", @@ -1642,6 +1653,23 @@ "vitest": "^3.0.0" } }, + "packages/cli/node_modules/@directededges/specs-from-figma": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@directededges/specs-from-figma/-/specs-from-figma-0.28.0.tgz", + "integrity": "sha512-2Wn+YiOXBgNA+gWDy2h7kY8g7wlj0qg4e2G0S2zN91yrsvCIZn6S5zrInP1Z3RPHGXhBMlzUxEn/BZSxI/Kzbw==", + "license": "PolyForm-Internal-Use-1.0.0", + "dependencies": { + "@directededges/specs-schema": "^0.29.0", + "fs-extra": "^11.3.3", + "yaml": "^2.8.0" + } + }, + "packages/cli/node_modules/@directededges/specs-schema": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/@directededges/specs-schema/-/specs-schema-0.29.0.tgz", + "integrity": "sha512-PfK3oeTdQbvlmuD6lAGHOOlkHvQCE0wFlqQERQQRN3w/42qRaBDK/8hMwJ/mB/wyDAg5GlB+uBA0p14jsksAZg==", + "license": "CC-BY-4.0" + }, "packages/cli/node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", @@ -2070,7 +2098,7 @@ }, "packages/schema": { "name": "@directededges/specs-schema", - "version": "0.29.0", + "version": "0.30.0", "license": "CC-BY-4.0", "devDependencies": { "typescript": "^5.3.3" diff --git a/package.json b/package.json index 86dc1a2..296b7c1 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,6 @@ "vitest": "^3.1.1" }, "dependencies": { - "@directededges/specs-from-figma": "file:../specs-from-figma" + "@directededges/specs-from-figma": "file:../specs-from-figma/packages/specs-from-figma" } }