create-atelier-ui-workspace 0.2.42 → 0.2.44
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 +32 -1
- package/bin/index.js +63 -3
- package/bin/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,34 @@
|
|
|
1
|
+
## 0.2.44 (2026-09-13)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **create-workspace:** the workspace knows which Figma file is the attendee's ([40a2eff2](https://github.com/DominikPieper/atelier-ui/commit/40a2eff2))
|
|
6
|
+
- **create-workspace:** a unit-test runner, without disturbing the browser one ([fa60042d](https://github.com/DominikPieper/atelier-ui/commit/fa60042d))
|
|
7
|
+
- **create-workspace:** the preset takes one framework, not a list ([d4b1cfb1](https://github.com/DominikPieper/atelier-ui/commit/d4b1cfb1))
|
|
8
|
+
|
|
9
|
+
### ❤️ Thank You
|
|
10
|
+
|
|
11
|
+
- Claude Opus 5 (1M context)
|
|
12
|
+
- Dominik Pieper @DominikPieper
|
|
13
|
+
|
|
14
|
+
## 0.2.43 (2026-09-12)
|
|
15
|
+
|
|
16
|
+
### 🚀 Features
|
|
17
|
+
|
|
18
|
+
- **create-workspace:** the scaffold ships the contract loop — ADR-0121 S4 ([74aa640](https://github.com/DominikPieper/atelier-ui/commit/74aa640))
|
|
19
|
+
- **create-workspace:** Storybook and the skills ship together — ADR-0123 ([79b60e9](https://github.com/DominikPieper/atelier-ui/commit/79b60e9))
|
|
20
|
+
|
|
21
|
+
### 🩹 Fixes
|
|
22
|
+
|
|
23
|
+
- **e2e:** the CLI e2e pinned a summary line's shape, not the facts it meant ([4a31702](https://github.com/DominikPieper/atelier-ui/commit/4a31702))
|
|
24
|
+
- **gates:** check:contracts skips package-imported components before docgen ([caa7633](https://github.com/DominikPieper/atelier-ui/commit/caa7633))
|
|
25
|
+
|
|
26
|
+
### ❤️ Thank You
|
|
27
|
+
|
|
28
|
+
- Claude Fable 5.1
|
|
29
|
+
- Claude Opus 5 (1M context)
|
|
30
|
+
- Dominik Pieper @DominikPieper
|
|
31
|
+
|
|
1
32
|
## 0.2.42 (2026-09-10)
|
|
2
33
|
|
|
3
34
|
This was a version bump only for create-atelier-ui-workspace to align it with other projects, there were no code changes.
|
|
@@ -401,4 +432,4 @@ This was a version bump only for create-atelier-ui-workspace to align it with ot
|
|
|
401
432
|
### ❤️ Thank You
|
|
402
433
|
|
|
403
434
|
- Claude Opus 4.7 (1M context)
|
|
404
|
-
- Dominik Pieper @DominikPieper
|
|
435
|
+
- Dominik Pieper @DominikPieper
|
package/bin/index.js
CHANGED
|
@@ -53,14 +53,53 @@ function parseBooleanFlag(args, name) {
|
|
|
53
53
|
return false;
|
|
54
54
|
throw new Error(`Invalid --${name} value: "${raw}". Must be "true" or "false".`);
|
|
55
55
|
}
|
|
56
|
+
// Figma file/design keys are opaque, Figma-generated identifiers — this
|
|
57
|
+
// repo's own key (QMnDD8uZQPldPrlCwZZ58T, see AGENTS.md) is 22 mixed-case
|
|
58
|
+
// alphanumeric characters. Nothing documents an exact length or charset, so
|
|
59
|
+
// this only requires letters/digits (a key never contains a hyphen, unlike a
|
|
60
|
+
// URL slug) and a length generous enough to admit a real key while still
|
|
61
|
+
// rejecting short garbage ("abc") that is obviously not one.
|
|
62
|
+
const FIGMA_FILE_KEY_PATTERN = /^[A-Za-z0-9]{10,40}$/;
|
|
63
|
+
// A pasted Figma URL names the file key right after `/design/`
|
|
64
|
+
// (figma.com/design/<key>/Some-File-Name, optionally with a query string,
|
|
65
|
+
// hash, or nothing at all following it).
|
|
66
|
+
const FIGMA_FILE_URL_PATTERN = /figma\.com\/design\/([A-Za-z0-9]{10,40})(?:[/?#]|$)/;
|
|
67
|
+
// Shared by both the --figma-file flag and the interactive prompt below, so
|
|
68
|
+
// a bad value is rejected the same way regardless of how it arrived. Accepts
|
|
69
|
+
// a bare key as-is, extracts the key out of a full Figma URL rather than
|
|
70
|
+
// writing the whole URL into the generated `figma:snapshot` script, and
|
|
71
|
+
// otherwise fails loudly — same posture as the --framework validation above.
|
|
72
|
+
function extractFigmaFileKey(raw) {
|
|
73
|
+
const trimmed = raw.trim();
|
|
74
|
+
if (FIGMA_FILE_KEY_PATTERN.test(trimmed))
|
|
75
|
+
return trimmed;
|
|
76
|
+
const urlMatch = trimmed.match(FIGMA_FILE_URL_PATTERN);
|
|
77
|
+
if (urlMatch)
|
|
78
|
+
return urlMatch[1];
|
|
79
|
+
throw new Error(`Invalid --figma-file value: "${raw}". Expected a Figma file key (the ` +
|
|
80
|
+
`segment in a Figma URL after /design/, e.g. ` +
|
|
81
|
+
`figma.com/design/<key>/Some-File) or a full Figma URL containing one.`);
|
|
82
|
+
}
|
|
56
83
|
function main() {
|
|
57
84
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
var _a;
|
|
85
|
+
var _a, _b;
|
|
59
86
|
banner();
|
|
60
87
|
const argv = process.argv.slice(2);
|
|
61
88
|
let name = argv.find((arg) => !arg.startsWith('-'));
|
|
62
89
|
let framework = parseFlag(argv, 'framework');
|
|
63
90
|
let figmaMcp = parseBooleanFlag(argv, 'figma');
|
|
91
|
+
// S5a — the attendee's own Figma file key (never this repo's
|
|
92
|
+
// QMnDD8uZQPldPrlCwZZ58T, which the preset never defaults to either — see
|
|
93
|
+
// its schema.json). Validated up front, like --framework, so a bad value
|
|
94
|
+
// fails fast regardless of whether Figma was even accepted.
|
|
95
|
+
const figmaFileFlag = parseFlag(argv, 'figma-file');
|
|
96
|
+
let figmaFile = figmaFileFlag === undefined
|
|
97
|
+
? undefined
|
|
98
|
+
: extractFigmaFileKey(figmaFileFlag);
|
|
99
|
+
// Unlike figma (a personal preference worth asking about), skills installs
|
|
100
|
+
// a network-dependent, non-interactive default — no prompt, just a flag to
|
|
101
|
+
// opt out for CI/offline runs, matching the preset schema's own default.
|
|
102
|
+
const skillsEnabled = (_a = parseBooleanFlag(argv, 'skills')) !== null && _a !== void 0 ? _a : true;
|
|
64
103
|
if (framework && !VALID_FRAMEWORKS.includes(framework)) {
|
|
65
104
|
throw new Error(`Invalid --framework value: "${framework}". Must be one of: ${VALID_FRAMEWORKS.join(', ')}.`);
|
|
66
105
|
}
|
|
@@ -109,17 +148,38 @@ function main() {
|
|
|
109
148
|
});
|
|
110
149
|
figmaMcp = res.figma;
|
|
111
150
|
}
|
|
151
|
+
// Only asked when Figma was accepted (flag or prompt) — declining Figma
|
|
152
|
+
// must not produce a question about a Figma file key at all. Skippable:
|
|
153
|
+
// an attendee who hasn't duplicated the file yet presses enter and gets
|
|
154
|
+
// today's <YOUR_FIGMA_FILE_KEY> placeholder behaviour, same as if this
|
|
155
|
+
// prompt didn't exist.
|
|
156
|
+
if (figmaMcp && figmaFile === undefined) {
|
|
157
|
+
const res = yield enquirer.prompt({
|
|
158
|
+
type: 'input',
|
|
159
|
+
name: 'figmaFile',
|
|
160
|
+
message: `Figma file key (optional) — the segment in a Figma URL after /design/,\n` +
|
|
161
|
+
` e.g. figma.com/design/<key>/Some-File. Paste a full URL and the key\n` +
|
|
162
|
+
` is extracted. Press enter to skip:`,
|
|
163
|
+
initial: '',
|
|
164
|
+
});
|
|
165
|
+
const rawFigmaFile = res.figmaFile.trim();
|
|
166
|
+
if (rawFigmaFile) {
|
|
167
|
+
figmaFile = extractFigmaFileKey(rawFigmaFile);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
112
170
|
console.log(`\n${c.cyan('◇')} Setting up "${c.bold(name)}" with ${c.bold(framework)}…\n`);
|
|
113
171
|
const presetVersion = require('../package.json').version;
|
|
114
172
|
// ATELIER_PRESET_SPEC overrides the published preset — used by the e2e test
|
|
115
173
|
// to install the locally-packed tarball instead of fetching from npm.
|
|
116
|
-
const presetSpec = (
|
|
174
|
+
const presetSpec = (_b = process.env.ATELIER_PRESET_SPEC) !== null && _b !== void 0 ? _b : `@atelier-ui/create-workspace@${presetVersion}`;
|
|
117
175
|
const { directory } = yield (0, create_nx_workspace_1.createWorkspace)(presetSpec, {
|
|
118
176
|
name,
|
|
119
177
|
nxCloud: 'skip',
|
|
120
178
|
packageManager: 'npm',
|
|
121
|
-
|
|
179
|
+
framework,
|
|
122
180
|
figmaMcp,
|
|
181
|
+
figmaFile,
|
|
182
|
+
skills: skillsEnabled,
|
|
123
183
|
});
|
|
124
184
|
const appName = `workshop-${framework}`;
|
|
125
185
|
console.log(`\n${c.green('✓')} ${c.bold('Workshop ready')} ${c.dim(`— ${directory}`)}`);
|
package/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/create-atelier-ui-workspace/bin/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/create-atelier-ui-workspace/bin/index.ts"],"names":[],"mappings":"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"}
|