@adia-ai/adia-ui-forge 0.8.32 → 0.8.34
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/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +20 -0
- package/hooks/hooks.json +5 -5
- package/package.json +2 -2
- package/{bin → scripts}/forge-lint +1 -1
- package/skills/adia-author/references/canonical-pattern-index.md +10 -5
- package/skills/adia-gen-review/references/corpus-html-patterns.md +1 -1
- package/skills/adia-release/references/cut-procedure.md +11 -3
- package/skills/adia-release/scripts/release-pack.mjs +59 -1
- /package/{bin → scripts}/demo-postwrite-pattern-gate +0 -0
- /package/{bin → scripts}/release-pretag-docs-gate +0 -0
- /package/{bin → scripts}/sidecar-prewrite-guard +0 -0
- /package/{bin → scripts}/site-postwrite-derivation-gate +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adia-ui-kit-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.34",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Kim",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog — adia-ui-kit-forge
|
|
2
2
|
|
|
3
|
+
## [0.8.34] — 2026-08-11
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **Top-level `bin/` directory renamed to `scripts/` — claude.ai-hosted plugin validation was rejecting this plugin outright (gh#934).** claude.ai auto-adds any plugin's top-level `bin/` to PATH on the CLI, which isn't shown on the admin approval surface, so hosted validation refused to approve the plugin at all ("2 plugins found, 2 failed validation" alongside `adia-ui-kit-factory`, same defect). `bin/demo-postwrite-pattern-gate`, `bin/forge-lint`, `bin/release-pretag-docs-gate`, `bin/sidecar-prewrite-guard`, `bin/site-postwrite-derivation-gate` moved to `scripts/` with executable bits preserved; `hooks/hooks.json`'s `${CLAUDE_PLUGIN_ROOT}/bin/...` commands and `scripts/forge-lint`'s cross-reference to the factory plugin's vendored lint copy updated to `scripts/...`; `package.json`'s `files` array updated so the published tarball ships the renamed directory. Hook gates still fire the same scripts, just from a non-PATH-reserved location.
|
|
7
|
+
|
|
8
|
+
### Maintenance
|
|
9
|
+
- **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
|
|
10
|
+
- **`skills/` touched in this release window** (1 file(s), e.g. `references/canonical-pattern-index.md`) — carried by the entries above.
|
|
11
|
+
|
|
12
|
+
## [0.8.33] — 2026-08-11
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **adia-release `release-pack.mjs` resume completes missing stubs, defers versionArg gates, warns on stale cache copy.** The half-cut-tree resume path (all 13 package versions already bumped) previously assumed Step 4a's promote/stub pass had also fully completed — but a stub package's `[Unreleased]` reads empty either way, so a resume after an abort mid-stub silently skipped it rather than completing it, leaving that package's `[X.Y.Z]` section missing entirely at tag time. Resume now re-runs `insert-stub.mjs` for any package still missing its `[X.Y.Z]` heading before continuing to the idempotent substeps, defers gates that need the CUT-version hygiene check until after that repair, and warns when the plugin's own bundled copy of this script differs from the repo's live one (a stale marketplace cache silently running old release logic). `cut-procedure.md`'s 4-resume section documents the corrected sequencing.
|
|
16
|
+
- **`adia-gen-review`'s corpus-HTML pattern reference no longer teaches the retired `badge-ui variant="accent"` (gh#873-876).** Its worked example used the value the variant/color/tone convention cut retired in favor of `primary` — updated so the reference doesn't contradict the shipped contract.
|
|
17
|
+
- **adia-release `release-pack.mjs` Step 5 now stages `catalog-data.js`, the third file `derive-genui-catalog.mjs` writes.** Found live during this cut: Step 4d.5 regenerates `base.json`/`adia-pack.json`/`catalog-data.js` together (the latter is the browser-safe ES-module projection of the first two), but the Step 5 file allowlist (gh#617) only ever named the first two — `catalog-data.js` sat modified-but-uncommitted in the release commit, invisible in a local working tree (the file exists, just stale) but caught immediately by CI's fresh checkout via `check:genui-catalog`'s drift check. Added to the allowlist alongside its siblings.
|
|
18
|
+
|
|
19
|
+
### Maintenance
|
|
20
|
+
- **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
|
|
21
|
+
- **`skills/` touched in this release window** (3 file(s), e.g. `references/corpus-html-patterns.md`) — carried by the entries above.
|
|
22
|
+
|
|
3
23
|
## [0.8.32] — 2026-08-09
|
|
4
24
|
|
|
5
25
|
### Fixed
|
package/hooks/hooks.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"hooks": [
|
|
7
7
|
{
|
|
8
8
|
"type": "command",
|
|
9
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/
|
|
9
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/sidecar-prewrite-guard\" --hook"
|
|
10
10
|
}
|
|
11
11
|
]
|
|
12
12
|
},
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"hooks": [
|
|
16
16
|
{
|
|
17
17
|
"type": "command",
|
|
18
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/
|
|
18
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/release-pretag-docs-gate\" --hook",
|
|
19
19
|
"timeout": 90
|
|
20
20
|
}
|
|
21
21
|
]
|
|
@@ -27,15 +27,15 @@
|
|
|
27
27
|
"hooks": [
|
|
28
28
|
{
|
|
29
29
|
"type": "command",
|
|
30
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/
|
|
30
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/forge-lint\" --hook"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"type": "command",
|
|
34
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/
|
|
34
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/demo-postwrite-pattern-gate\" --hook"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"type": "command",
|
|
38
|
-
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/
|
|
38
|
+
"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/scripts/site-postwrite-derivation-gate\" --hook"
|
|
39
39
|
}
|
|
40
40
|
]
|
|
41
41
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/adia-ui-forge",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.34",
|
|
4
4
|
"description": "Maintain the adia-ui (@adia-ai) framework itself \u2014 author primitives and shells, run the A2UI generation pipeline and its corpus, review gen-UI quality, sweep QA, cut releases, deploy. The maintainer counterpart to adia-factory (the consumer/app-author plugin).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adia-ui",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"agents",
|
|
23
23
|
"commands",
|
|
24
24
|
"references",
|
|
25
|
-
"
|
|
25
|
+
"scripts",
|
|
26
26
|
"hooks",
|
|
27
27
|
"README.md",
|
|
28
28
|
"CHANGELOG.md"
|
|
@@ -19,7 +19,7 @@ A clean forge-lint says "no structural tells," never "this is right."
|
|
|
19
19
|
|
|
20
20
|
Shared core: the regex bank below (RAW-COLOR/PX, SCOPE-EXTENT, NATIVE-PRIMITIVE, LEGACY-SHELL,
|
|
21
21
|
the _is_foundation_css exemption) is mirrored in the sibling CONSUMER plugin's
|
|
22
|
-
adia-ui-factory/
|
|
22
|
+
adia-ui-factory/scripts/adia-lint. They are deliberate VENDORED copies — the catalog forbids
|
|
23
23
|
cross-plugin imports (each plugin installs copy-alone) — so any change to a shared rule must be
|
|
24
24
|
reconciled in BOTH files. forge-lint drops the consumer/app traps (SSR double-router, top-level
|
|
25
25
|
import, hardcoded overlay open) and adds MISSING-SCOPE; that divergence is the point.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
**Auto-generated** by this skill's `scripts/build-canonical-pattern-index.mjs`. Do not edit by hand — re-run the build script (from the monorepo root) after adding new canonicals to `apps/`, `catalog/`, or `playgrounds/`.
|
|
4
4
|
|
|
5
|
-
**Total canonical `.contents.html` files**:
|
|
5
|
+
**Total canonical `.contents.html` files**: 116
|
|
6
6
|
|
|
7
7
|
## How to use this index
|
|
8
8
|
|
|
@@ -105,14 +105,15 @@
|
|
|
105
105
|
- `catalog/ui-patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html` — 16 lines (from UI-pattern atomics (catalog))
|
|
106
106
|
- `catalog/page-shells/app/chat-page/chat-page.contents.html` — 67 lines (from Page-shell templates (catalog))
|
|
107
107
|
|
|
108
|
-
## editor (
|
|
108
|
+
## editor (7)
|
|
109
109
|
|
|
110
110
|
> Editor panes (code, preview, toolbar). Lift editor-shell composition.
|
|
111
111
|
|
|
112
112
|
- `apps/genui/app/a2ui-editor/a2ui-editor.contents.html` — 261 lines (from GenUI app routes)
|
|
113
|
-
- `apps/genui/app/render-preview/render-preview.contents.html` —
|
|
113
|
+
- `apps/genui/app/render-preview/render-preview.contents.html` — 93 lines (from GenUI app routes)
|
|
114
114
|
- `catalog/ui-patterns/app/editor-code-pane/editor-code-pane.contents.html` — 16 lines (from UI-pattern atomics (catalog))
|
|
115
115
|
- `catalog/ui-patterns/app/editor-preview-pane/editor-preview-pane.contents.html` — 13 lines (from UI-pattern atomics (catalog))
|
|
116
|
+
- `catalog/ui-patterns/app/split-pane-editor/split-pane-editor.contents.html` — 31 lines (from UI-pattern atomics (catalog))
|
|
116
117
|
- `catalog/page-shells/app/doc-editor/doc-editor.contents.html` — 65 lines (from Page-shell templates (catalog))
|
|
117
118
|
- `catalog/page-shells/app/editor-page/editor-page.contents.html` — 25 lines (from Page-shell templates (catalog))
|
|
118
119
|
|
|
@@ -156,7 +157,7 @@
|
|
|
156
157
|
|
|
157
158
|
> Activity / event feeds. Lift activity-feed composition.
|
|
158
159
|
|
|
159
|
-
- `apps/genui/app/gen-ui-feed/gen-ui-feed.contents.html` —
|
|
160
|
+
- `apps/genui/app/gen-ui-feed/gen-ui-feed.contents.html` — 390 lines (from GenUI app routes)
|
|
160
161
|
- `catalog/ui-patterns/app/order-tracking-timeline/order-tracking-timeline.contents.html` — 45 lines (from UI-pattern atomics (catalog))
|
|
161
162
|
|
|
162
163
|
## marketing (2)
|
|
@@ -185,11 +186,12 @@
|
|
|
185
186
|
- `apps/genui/app/css-channel-demo/css-channel-demo.contents.html` — 70 lines (from GenUI app routes)
|
|
186
187
|
- `apps/genui/app/streams-bridge/streams-bridge.contents.html` — 80 lines (from GenUI app routes)
|
|
187
188
|
|
|
188
|
-
## other (
|
|
189
|
+
## other (44)
|
|
189
190
|
|
|
190
191
|
> Misc canonicals. Inspect contents.html to determine UI type.
|
|
191
192
|
|
|
192
193
|
- `apps/genui/app/gen-ui/gen-ui.contents.html` — 47 lines (from GenUI app routes)
|
|
194
|
+
- `apps/genui/app/patient-visit/patient-visit.contents.html` — 58 lines (from GenUI app routes)
|
|
193
195
|
- `apps/user-flow/app/auth/accept-invite/accept-invite.contents.html` — 52 lines (from User-flow templates)
|
|
194
196
|
- `apps/user-flow/app/auth/forgot-password/sent/sent.contents.html` — 33 lines (from User-flow templates)
|
|
195
197
|
- `apps/user-flow/app/auth/sign-in/magic-link/sent/sent.contents.html` — 35 lines (from User-flow templates)
|
|
@@ -216,6 +218,7 @@
|
|
|
216
218
|
- `apps/user-flow/app/registration/use-case/use-case.contents.html` — 77 lines (from User-flow templates)
|
|
217
219
|
- `apps/user-flow/app/registration/workspace/workspace.contents.html` — 45 lines (from User-flow templates)
|
|
218
220
|
- `catalog/ui-patterns/app/email-inbox-list/email-inbox-list.contents.html` — 135 lines (from UI-pattern atomics (catalog))
|
|
221
|
+
- `catalog/ui-patterns/app/filter-popover-form/filter-popover-form.contents.html` — 22 lines (from UI-pattern atomics (catalog))
|
|
219
222
|
- `catalog/ui-patterns/app/import-mapping/import-mapping.contents.html` — 217 lines (from UI-pattern atomics (catalog))
|
|
220
223
|
- `catalog/ui-patterns/app/loading-skeleton-placeholder/loading-skeleton-placeholder.contents.html` — 62 lines (from UI-pattern atomics (catalog))
|
|
221
224
|
- `catalog/ui-patterns/app/product-card-buy/product-card-buy.contents.html` — 39 lines (from UI-pattern atomics (catalog))
|
|
@@ -226,6 +229,8 @@
|
|
|
226
229
|
- `catalog/page-shells/app/form-page/form-page.contents.html` — 26 lines (from Page-shell templates (catalog))
|
|
227
230
|
- `catalog/page-shells/app/gallery-page/gallery-page.contents.html` — 79 lines (from Page-shell templates (catalog))
|
|
228
231
|
- `playgrounds/admin-shell/app/admin-shell.contents.html` — 99 lines (from Playgrounds)
|
|
232
|
+
- `playgrounds/agent-admin/app/agent-admin.contents.html` — 29 lines (from Playgrounds)
|
|
233
|
+
- `playgrounds/agent-chat/app/agent-chat.contents.html` — 28 lines (from Playgrounds)
|
|
229
234
|
- `playgrounds/chat/app/chat.contents.html` — 49 lines (from Playgrounds)
|
|
230
235
|
- `playgrounds/composed-flow/app/composed-flow.contents.html` — 294 lines (from Playgrounds)
|
|
231
236
|
- `playgrounds/table-toolbar/app/table-toolbar.contents.html` — 31 lines (from Playgrounds)
|
|
@@ -113,7 +113,7 @@ matches both native `h1–h6`/`p` and their transpiled
|
|
|
113
113
|
<header>
|
|
114
114
|
<span slot="heading">
|
|
115
115
|
<text-ui strong>Title</text-ui>
|
|
116
|
-
<badge-ui text="New" variant="
|
|
116
|
+
<badge-ui text="New" variant="primary"></badge-ui>
|
|
117
117
|
</span>
|
|
118
118
|
<p slot="description">Subtitle</p>
|
|
119
119
|
</header>
|
|
@@ -177,14 +177,22 @@ checks them itself at startup (gh#765):
|
|
|
177
177
|
|
|
178
178
|
The fully manual fallback (both shapes, if the orchestrator itself is
|
|
179
179
|
suspect) remains the standalone pieces the Mechanization section names, in
|
|
180
|
-
this order
|
|
180
|
+
this order. **Stubs complete BEFORE 4f** (the v0.8.32 resume proved the
|
|
181
|
+
ordering): the bump-complete marker cannot see whether insert-stub ran — a
|
|
182
|
+
stub package's `[Unreleased]` is empty, so every guard passes with its
|
|
183
|
+
`[X.Y.Z]` section entirely absent; running the coverage `--fix` before the
|
|
184
|
+
stub sections exist leaves it nothing to append to, and the gap resurfaces
|
|
185
|
+
as F-N1 warns at the push boundary, costing a tag move:
|
|
181
186
|
|
|
182
187
|
```bash
|
|
183
|
-
node "${CLAUDE_PLUGIN_ROOT}/skills/adia-release/scripts/
|
|
188
|
+
node "${CLAUDE_PLUGIN_ROOT}/skills/adia-release/scripts/insert-stub.mjs" \
|
|
189
|
+
--version X.Y.Z --date YYYY-MM-DD --previous-version X.Y.Z-1 \
|
|
190
|
+
--substantive "<one-line>" --xref "<anchor>" --packages <missing-stubs> # 4a-stub — FIRST, only the missing ones (hard-errors on existing sections)
|
|
191
|
+
node "${CLAUDE_PLUGIN_ROOT}/skills/adia-release/scripts/bump.mjs" --from X.Y.Z-1 --to X.Y.Z # 4b (skip if versions already moved)
|
|
184
192
|
npm install --package-lock-only --no-audit --no-fund # 4c
|
|
185
193
|
npm run check:lockstep # 4d
|
|
186
194
|
node scripts/build/derive-genui-catalog.mjs # 4d.5 — catalogId carries the bumped version (gh#617)
|
|
187
|
-
node scripts/release/check-release.mjs --pending-version X.Y.Z --fix # 4f
|
|
195
|
+
node scripts/release/check-release.mjs --pending-version X.Y.Z --fix # 4f — AFTER the stubs exist
|
|
188
196
|
node scripts/release/generate-release-notes.mjs --version X.Y.Z --write # 4e
|
|
189
197
|
node scripts/release/check-release-docs.mjs --version X.Y.Z # 4e gate
|
|
190
198
|
node scripts/release/check-cut-hygiene.mjs --version X.Y.Z # 4g — post-bump proof
|
|
@@ -442,6 +442,16 @@ function step3PreFlight(args) {
|
|
|
442
442
|
// moved every reference to the cut version, so validating at previous
|
|
443
443
|
// false-fails gate 24 exactly like handoff would.
|
|
444
444
|
const hygieneVersion = (args.mode === 'handoff' || args.resume) ? args.version : args.previous;
|
|
445
|
+
// A RESUMED run's versionArg gates (cut-hygiene) demand artifacts Step 4
|
|
446
|
+
// has not recreated yet — docs/releases/vX.Y.Z.md exists only after 4e,
|
|
447
|
+
// which runs AFTER this pre-flight. Step 4g re-runs these same gates at
|
|
448
|
+
// the cut version once the notes exist, so skipping them here loses no
|
|
449
|
+
// coverage — running them here false-fails by construction (the v0.8.32
|
|
450
|
+
// cut hit exactly this: 23/24 green, gate 24 dead on the missing notes).
|
|
451
|
+
if (g.versionArg && args.resume) {
|
|
452
|
+
console.log(`\n ${g.n}/${GATE_ROSTER.length}. ${g.cmd} # ${g.what} — [resume] deferred to Step 4g (notes not regenerated yet)`);
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
445
455
|
const cmd = g.versionArg ? `${g.cmd} --version ${hygieneVersion}` : g.cmd;
|
|
446
456
|
console.log(`\n ${g.n}/${GATE_ROSTER.length}. ${cmd} # ${g.what}`);
|
|
447
457
|
try {
|
|
@@ -519,7 +529,30 @@ function step4PromoteAndBump(args) {
|
|
|
519
529
|
sh(cmd, args);
|
|
520
530
|
}
|
|
521
531
|
} else {
|
|
522
|
-
|
|
532
|
+
// The bump-complete marker proves promote+bump ran — it CANNOT see
|
|
533
|
+
// whether insert-stub ran: a stub package's [Unreleased] is empty, so
|
|
534
|
+
// the unpromoted guard below passes with the [X.Y.Z] section entirely
|
|
535
|
+
// absent, and the death arrives later at 4e's generate-release-notes
|
|
536
|
+
// ("no [X.Y.Z] CHANGELOG section in: …"). The v0.8.32 cut hit exactly
|
|
537
|
+
// this (the aborted run predated stub insertion). Complete the missing
|
|
538
|
+
// stubs here instead of skipping blindly — insert-stub hard-errors on
|
|
539
|
+
// existing sections, so filter to the genuinely missing ones.
|
|
540
|
+
if (args.stubPackages && args.substantive && args.xref) {
|
|
541
|
+
const missingStubs = args.stubPackages.filter((pkg) => {
|
|
542
|
+
const p = resolvePackageChangelog(REPO, pkg);
|
|
543
|
+
return fs.existsSync(p) && !fs.readFileSync(p, 'utf8').includes(`## [${args.version}]`);
|
|
544
|
+
});
|
|
545
|
+
if (missingStubs.length > 0) {
|
|
546
|
+
console.log(` [resume] ${missingStubs.length} stub section(s) missing from the aborted run — completing: ${missingStubs.join(', ')}`);
|
|
547
|
+
sh(`node ${SCRIPT_DIR}/insert-stub.mjs --version ${args.version} --date ${args.date} --previous-version ${args.previous} --substantive "${args.substantive}" --xref "${args.xref}" --packages ${missingStubs.join(',')}`, args);
|
|
548
|
+
} else {
|
|
549
|
+
console.log(' [resume] promote/stub already applied by the aborted run — skipping');
|
|
550
|
+
}
|
|
551
|
+
} else {
|
|
552
|
+
console.log(' [resume] promote/stub already applied by the aborted run — skipping');
|
|
553
|
+
console.log(' (no --stub-packages/--substantive/--xref given; if 4e fails on');
|
|
554
|
+
console.log(' missing [X.Y.Z] sections, re-run with the stub flags to complete them)');
|
|
555
|
+
}
|
|
523
556
|
}
|
|
524
557
|
|
|
525
558
|
// Loud guard: after promotion, NO package in the lockstep set (including
|
|
@@ -636,8 +669,15 @@ function step5Commit(args) {
|
|
|
636
669
|
`docs/releases/v${args.version}.md`,
|
|
637
670
|
// gh#617: Step 4d.5 regenerates these post-bump (catalogId embeds the
|
|
638
671
|
// lockstep version); unstaged, check:genui-catalog fails in CI (v0.8.26).
|
|
672
|
+
// catalog-data.js is the same derivation's third output (the browser-safe
|
|
673
|
+
// ES-module projection of base.json/adia-pack.json) — check-genui-catalog.mjs
|
|
674
|
+
// verifies its freshness too, but this list never carried it (found live
|
|
675
|
+
// during the v0.8.33 cut: base.json/adia-pack.json staged and committed
|
|
676
|
+
// fine, catalog-data.js sat modified-uncommitted, CI caught the drift a
|
|
677
|
+
// fresh checkout exposes that a local working tree doesn't).
|
|
639
678
|
'packages/genui/adia-catalog/base.json',
|
|
640
679
|
'packages/genui/adia-catalog/adia-pack.json',
|
|
680
|
+
'packages/genui/adia-catalog/catalog-data.js',
|
|
641
681
|
...PACKAGE_ROSTER.flatMap(({ name, dir, plugin }) => {
|
|
642
682
|
// Roster-driven (H3): each package stages its manifest + CHANGELOG;
|
|
643
683
|
// plugins also stage .claude-plugin/plugin.json (the /plugin-update
|
|
@@ -957,6 +997,24 @@ async function main() {
|
|
|
957
997
|
// Fail-fast guard: refuse to git/npm/gh/curl against a non-monorepo directory.
|
|
958
998
|
assertMonorepoRoot(REPO);
|
|
959
999
|
console.log(`adia-release release-pack — v${args.version} (${args.mode})${args.dry ? ' [DRY]' : ''}`);
|
|
1000
|
+
// Stale-plugin-cache self-check (v0.8.32 cut, first failure): the INSTALLED
|
|
1001
|
+
// plugin cache only refreshes on a version bump, so running this script from
|
|
1002
|
+
// the cache mid-cycle can execute a version that predates its own guards
|
|
1003
|
+
// (SKILL.md §Plugin cache). If the repo carries its own copy and the bytes
|
|
1004
|
+
// differ, warn loudly — the repo copy is almost always the newer one.
|
|
1005
|
+
const repoCopy = path.join(REPO, 'packages/plugins/adia-ui-forge/skills/adia-release/scripts/release-pack.mjs');
|
|
1006
|
+
const selfPath = new URL(import.meta.url).pathname;
|
|
1007
|
+
if (fs.existsSync(repoCopy) && path.resolve(selfPath) !== path.resolve(repoCopy)) {
|
|
1008
|
+
const self = fs.readFileSync(selfPath, 'utf8');
|
|
1009
|
+
const repo = fs.readFileSync(repoCopy, 'utf8');
|
|
1010
|
+
if (self !== repo) {
|
|
1011
|
+
console.error('\n⚠ STALE-COPY WARNING: this release-pack.mjs differs from the repo\'s own copy at');
|
|
1012
|
+
console.error(` ${repoCopy}`);
|
|
1013
|
+
console.error(' The installed plugin cache lags the repo between cuts (SKILL.md §Plugin cache);');
|
|
1014
|
+
console.error(' the repo copy is almost certainly newer — prefer running it:');
|
|
1015
|
+
console.error(` node ${repoCopy} <same args>\n`);
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
960
1018
|
// gh#765: an aborted Step-4 run leaves bumped versions + promoted
|
|
961
1019
|
// CHANGELOGs; detect BEFORE pre-flight so gate 24 validates at the right
|
|
962
1020
|
// version and Step 4 skips the already-done promote/stub/bump.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|