@adia-ai/adia-ui-forge 0.8.13 → 0.8.15

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adia-forge",
3
- "version": "0.8.13",
3
+ "version": "0.8.15",
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,24 @@
1
1
  # Changelog — adia-forge
2
2
 
3
+ ## [0.8.15] — 2026-07-26
4
+
5
+ ### Maintenance
6
+ - **Lockstep version bump only.** No source changes in this package; bumped to maintain the 11-package version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.15 work shipped in hover darkens in both schemes (600/550 role + filled-button wiring); find-unused adoption skill + measured routing evals. See `packages/web-components/CHANGELOG.md#0815--2026-07-26` for details.
7
+ - **`.claude-plugin/plugin.json` version bump** — moves in lockstep with package.json (the `/plugin update` cache key).
8
+
9
+ ## [0.8.14] — 2026-07-25
10
+
11
+ ### Fixed
12
+ - **The in-repo plugin marketplace resolves again** (`.claude-plugin/marketplace.json`, relocated to the repo root; PR #412) — `claude plugin marketplace add` looks for the manifest at the checkout **root** unconditionally (the `owner/repo` shorthand and a git URL alike, `--sparse` or not; `--sparse` only limits which directories are checked out, it does not relocate the lookup). The old `packages/plugins/.claude-plugin/marketplace.json` location never resolved, so the documented install command had never worked. The manifest's two `source` fields were repointed at `./packages/plugins/adia-ui-{factory,forge}`.
13
+ - **`.claude/settings.json`'s directory marketplace repointed at the repo root** — it still pointed at `./packages/plugins` after that relocation, so the repo's own dogfood plugins silently stopped loading (which is what the hooks and skills in this plugin are served through). The manifest's `name` is `adia`, so the enabled ids are `adia-forge@adia` / `adia-factory@adia`.
14
+ - **`release-pack.mjs` generates and stages `docs/releases/vX.Y.Z.md` during the cut** (gh#399; PR #415) — the cut/from-scratch modes never produced the release-notes doc, and `check-cut-hygiene`'s success message claimed it was present without ever checking, so the gap surfaced a full cycle later at `release-pretag-docs-gate`. The v0.8.11 cut paid for it with a second PR and v0.8.13 hit the identical stop. New Step 4e runs `generate-release-notes.mjs --write` right after the bump (so the doc reads post-bump state) and Step 5 stages it; `check-cut-hygiene.mjs` gained a real `checkReleaseNotesPresent()` existence check.
15
+
16
+ ### Added
17
+ - **`adia-author` records the LightningCSS remote-`@import` failure** (`skills/adia-author/references/authoring-cycle.md`; PR #418) — `bundleAsync` resolves every `@import` as a local file, `http(s)` URLs included, with no option to skip or externalize one, so a CSS-level `@import` of a Google Fonts URL breaks `npm run build:bundle-css`. It bit the 12-theme work twice; the note lives in the bundle-regen paragraph, where the failure actually surfaces.
18
+
19
+ ### Maintenance
20
+ - **Plugin README version footer corrected** — it read v0.8.5 against a 0.8.13 manifest. Known gap, deliberately not fixed here: `check-cut-hygiene`'s doc-currency regex does not match that line's phrasing, which is why it drifted silently past every prior cut.
21
+
3
22
  ## [0.8.13] — 2026-07-25
4
23
 
5
24
  ### Maintenance
package/README.md CHANGED
@@ -52,7 +52,7 @@ monorepo checkout.
52
52
 
53
53
  ---
54
54
 
55
- v0.8.5 — versions move with the `@adia-ai` lockstep (`npm run check:lockstep`);
55
+ v0.8.13 — versions move with the `@adia-ai` lockstep (`npm run check:lockstep`);
56
56
  content merged between cuts is invisible to the installed plugin cache until
57
57
  the next lockstep bump or a manual sync (see `adia-release`
58
58
  `references/cut-procedure.md` §Plugin cache).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/adia-ui-forge",
3
- "version": "0.8.13",
3
+ "version": "0.8.15",
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",
@@ -204,7 +204,24 @@ A primitive also needs BOTH barrel registrations — the CSS `@import` in
204
204
  registration drifts the built `dist/` bundles — regenerate them in the same
205
205
  change (`npm run build:bundle-css && npm run build:bundle-js`) and commit the
206
206
  `dist/` updates, or CI's `check:{css,js}-bundles-fresh` gates fail on the PR
207
- (gh#390's PR shipped without this and failed exactly there).
207
+ (gh#390's PR shipped without this and failed exactly there). Both commands,
208
+ not just one — `theme-provider.min.js` (a JS bundle) inlines the co-emitted
209
+ `dist/web-components.sheet.js` twin, so a CSS-only edit still drifts a JS
210
+ bundle if only `build:bundle-css` runs (bit the v0.8.13 theme-panel work
211
+ twice).
212
+
213
+ **Never `@import` a remote URL from any file `build:bundle-css` bundles.**
214
+ LightningCSS's `bundleAsync` (the engine behind it) resolves every `@import`
215
+ as a local filesystem path, remote `http(s)` URLs included — a CSS-level
216
+ `@import url('https://fonts.googleapis.com/...')` breaks the build with
217
+ `ResolverError: No such file or directory`, not a lint warning; there's no
218
+ `bundleAsync` option to skip or externalize one `@import`. Link web fonts
219
+ (or anything else external) as a real `<link>` in the consumer's `<head>`
220
+ instead — see `styles/theme-fonts-url.txt` for the pattern this repo's 12
221
+ named themes use. A generated CSS file's own fix doesn't survive its next
222
+ regen unless the generator is fixed too, not just the committed output —
223
+ the standing "generated artifacts are never hand-edited" invariant
224
+ (AGENTS.md) cuts both ways.
208
225
 
209
226
  ## Step 5 — Run the project's verification gates
210
227
 
@@ -369,6 +369,16 @@ function step4PromoteAndBump(args) {
369
369
  sh('npm install --package-lock-only --no-audit --no-fund', args);
370
370
  sh('npm run check:lockstep', args);
371
371
 
372
+ // Step 4e — generate docs/releases/vX.Y.Z.md (gh#399: neither this step nor
373
+ // its staging into the release commit existed before — check-cut-hygiene's
374
+ // "notes present" claim (Step 4g, below) went unverified until
375
+ // release-pretag-docs-gate caught the SAME missing file at handoff, a full
376
+ // cycle later, forcing a second PR between the release PR and the tag (the
377
+ // v0.8.11 cut). Runs after bump so the doc's own version-currency content
378
+ // (package versions, CHANGELOG links) reads the post-bump state.
379
+ console.log('\n Step 4e — generate docs/releases/vX.Y.Z.md:');
380
+ sh(`node scripts/release/generate-release-notes.mjs --version ${args.version} --write`, args);
381
+
372
382
  // Step 4f — pre-tag F-N1 coverage with auto-fix, run with the AUTHORITATIVE
373
383
  // matcher (check-release.mjs itself, not the drifted 9-package
374
384
  // check-changelog-coverage.mjs). Appends verified Maintenance bullets for
@@ -426,6 +436,9 @@ function step5Commit(args) {
426
436
  // (REPO_PINNED_REFS); gate 18 (check-cut-hygiene doc-currency) exact-matches
427
437
  // it against the cut version, so it must ride the release commit.
428
438
  'README.md',
439
+ // gh#399: Step 4e generates this but never staged it before — it landed
440
+ // in a second PR after the release commit instead (v0.8.11 cut).
441
+ `docs/releases/v${args.version}.md`,
429
442
  ...PACKAGE_ROSTER.flatMap(({ name, dir, plugin }) => {
430
443
  // Roster-driven (H3): each package stages its manifest + CHANGELOG;
431
444
  // plugins also stage .claude-plugin/plugin.json (the /plugin-update