diff --git a/.changeset/allow-sidecar-writers-policy.md b/.changeset/allow-sidecar-writers-policy.md deleted file mode 100644 index 84e3d7ee..00000000 --- a/.changeset/allow-sidecar-writers-policy.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@skill-map/cli": minor -"@skill-map/spec": minor ---- - -New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent. - -## User-facing - -Shared projects can now turn off sidecar writers: a new Project setting stops actions from creating or editing the `.sm` files next to your notes. It is saved in the committed settings.json so it applies to the whole team and cannot be overridden locally. diff --git a/.changeset/analyzers-filter-qualified-id-match.md b/.changeset/analyzers-filter-qualified-id-match.md deleted file mode 100644 index 5525e39a..00000000 --- a/.changeset/analyzers-filter-qualified-id-match.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@skill-map/cli": patch ---- - -Fix the `--analyzers` (CLI) and `?analyzerId=` (BFF) filter so a qualified `/` form matches the persisted short analyzer id (issues store the short kebab id with no slash, per `issue.schema.json`). Before, only a short filter matched, so `sm check --analyzers core/node-stability` returned nothing while the bare `node-stability` worked. Both `matchesAnalyzerFilter` and the `/api/issues` SQL now reduce a qualified filter entry to its suffix; the short form is unchanged. - -## User-facing -`sm check --analyzers core/` now matches issues, not only the bare `` form. diff --git a/.changeset/annotation-orphan-nodeids-comment.md b/.changeset/annotation-orphan-nodeids-comment.md deleted file mode 100644 index cebe8204..00000000 --- a/.changeset/annotation-orphan-nodeids-comment.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@skill-map/cli": patch ---- - -Fix a stale doc comment in the `annotation-orphan` analyzer: the header claimed `nodeIds` is empty, but the analyzer sets it to the orphan's would-be `.md` path (the missing sibling, to satisfy the issue schema's `minItems: 1`). Comment-only; no behavior change. diff --git a/.changeset/demo-build-preserves-lens-and-tolerates-issues.md b/.changeset/demo-build-preserves-lens-and-tolerates-issues.md deleted file mode 100644 index a67da65a..00000000 --- a/.changeset/demo-build-preserves-lens-and-tolerates-issues.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@skill-map/web": patch ---- - -The public demo build now preserves the demo fixture's pinned active lens (it wipes only the scan cache instead of the whole `.skill-map/` directory) and treats an issues-found scan (`sm scan` exit 1) as a successful build, aborting only on an operational error (exit >= 2). This keeps the non-interactive demo dataset build deterministic for a fixture that ships both a root `AGENTS.md` and a `.claude/` marker plus deliberate findings. diff --git a/.changeset/inspector-inline-tag-editor.md b/.changeset/inspector-inline-tag-editor.md deleted file mode 100644 index aebaaa4e..00000000 --- a/.changeset/inspector-inline-tag-editor.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@skill-map/cli": minor -"@skill-map/spec": patch ---- - -The inspector tag row (``) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability. - -## User-facing - -Edit a node's tags right where they are shown: click the pencil in the inspector's tag row to add or remove them inline, with one-click chips for tags already used in your graph (you can still type new ones). The separate Edit tags button is gone. diff --git a/.changeset/node-set-tags-sanitize.md b/.changeset/node-set-tags-sanitize.md deleted file mode 100644 index 1bd489cc..00000000 --- a/.changeset/node-set-tags-sanitize.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@skill-map/cli": patch ---- - -Sanitize the tags written by the `core/node-set-tags` action: it now keeps strings only, trims them, drops empty entries (the `annotations.tags` schema requires non-empty items), and dedups, instead of writing the free-form input verbatim. Prevents the Edit tags flow from producing a schema-violating or messy sidecar. - -## User-facing - -Editing a node's tags now drops blank and duplicate entries and trims whitespace, instead of saving them as-is. diff --git a/.changeset/node-stability-emit-when-empty.md b/.changeset/node-stability-emit-when-empty.md deleted file mode 100644 index 76fc85d2..00000000 --- a/.changeset/node-stability-emit-when-empty.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@skill-map/cli": patch ---- - -The `node-stability` experimental / deprecated card-footer chips were being suppressed: `card.footer.right` is a counter slot that treats `value: 0` as empty, and the contributions set `emitWhenEmpty: false`, so the badges never rendered. They now emit-when-empty and show again as icon-only badges (the `fa-flask` / `pi-ban` icon carries the meaning, value is always 0). - -## User-facing - -The experimental / deprecated badge on a node's card now shows again. diff --git a/.changeset/plugin-quickstart-doc.md b/.changeset/plugin-quickstart-doc.md deleted file mode 100644 index 66856c1f..00000000 --- a/.changeset/plugin-quickstart-doc.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@skill-map/spec": patch ---- - -Add a standalone plugin quickstart doc (a short scaffold then fill then run path with the plugin-lifecycle diagram and links into the full author guide), indexed in the spec README and published in the package. The now-redundant Quick start section was removed from the author guide and its unique co-located-files note (text.ts, the colocated test) folded into the Manifest section as a "Files by convention" paragraph. diff --git a/.changeset/spec-docs-concision-plugin-lifecycle-overview.md b/.changeset/spec-docs-concision-plugin-lifecycle-overview.md deleted file mode 100644 index 495b6b49..00000000 --- a/.changeset/spec-docs-concision-plugin-lifecycle-overview.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@skill-map/spec": patch ---- - -Editorial pass tightening the spec prose docs for concision (lossless, no normative change: no schema, field, enum, exit code, or MUST/SHOULD touched, and the verbatim prompt preamble still matches the conformance fixture), plus a new non-normative "Plugin lifecycle at a glance" overview atop the plugin author guide with an ASCII diagram of the deterministic flow (Provider, Extractor, Analyzer, Action, Formatter) and Hook off to the side, each with a one-line purpose and short example. diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c76cc69..3b821d92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,29 @@ > Forward-looking plan: [`ROADMAP.md`](./ROADMAP.md).
+0.60.0 · 2026-06-17 + +### CLI Minor +- New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent. +- The inspector tag row (``) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability. + +### CLI Patch +- Fix the `--analyzers` (CLI) and `?analyzerId=` (BFF) filter so a qualified `/` form matches the persisted short analyzer id (issues store the short kebab id with no slash, per `issue.schema.json`). Before, only a short filter matched, so `sm check --analyzers core/node-stability` returned nothing while the bare `node-stability` worked. Both `matchesAnalyzerFilter` and the `/api/issues` SQL now reduce a qualified filter entry to its suffix; the short form is unchanged. +- Fix a stale doc comment in the `annotation-orphan` analyzer: the header claimed `nodeIds` is empty, but the analyzer sets it to the orphan's would-be `.md` path (the missing sibling, to satisfy the issue schema's `minItems: 1`). Comment-only; no behavior change. +- Sanitize the tags written by the `core/node-set-tags` action: it now keeps strings only, trims them, drops empty entries (the `annotations.tags` schema requires non-empty items), and dedups, instead of writing the free-form input verbatim. Prevents the Edit tags flow from producing a schema-violating or messy sidecar. +- The `node-stability` experimental / deprecated card-footer chips were being suppressed: `card.footer.right` is a counter slot that treats `value: 0` as empty, and the contributions set `emitWhenEmpty: false`, so the badges never rendered. They now emit-when-empty and show again as icon-only badges (the `fa-flask` / `pi-ban` icon carries the meaning, value is always 0). + +### Spec Minor (0.54.0) +- New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent. + +### Spec Patch (0.54.0) +- The inspector tag row (``) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability. +- Add a standalone plugin quickstart doc (a short scaffold then fill then run path with the plugin-lifecycle diagram and links into the full author guide), indexed in the spec README and published in the package. The now-redundant Quick start section was removed from the author guide and its unique co-located-files note (text.ts, the colocated test) folded into the Manifest section as a "Files by convention" paragraph. +- Editorial pass tightening the spec prose docs for concision (lossless, no normative change: no schema, field, enum, exit code, or MUST/SHOULD touched, and the verbatim prompt preamble still matches the conformance fixture), plus a new non-normative "Plugin lifecycle at a glance" overview atop the plugin author guide with an ASCII diagram of the deterministic flow (Provider, Extractor, Analyzer, Action, Formatter) and Hook off to the side, each with a one-line purpose and short example. + +
+ +
0.59.0 · 2026-06-16 ### CLI Minor diff --git a/spec/CHANGELOG.md b/spec/CHANGELOG.md index 7740aef0..9629911b 100644 --- a/spec/CHANGELOG.md +++ b/spec/CHANGELOG.md @@ -1,5 +1,27 @@ # Spec changelog +## 0.54.0 + +### Minor Changes + +- New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent. + + ## User-facing + + Shared projects can now turn off sidecar writers: a new Project setting stops actions from creating or editing the `.sm` files next to your notes. It is saved in the committed settings.json so it applies to the whole team and cannot be overridden locally. + +### Patch Changes + +- The inspector tag row (``) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability. + + ## User-facing + + Edit a node's tags right where they are shown: click the pencil in the inspector's tag row to add or remove them inline, with one-click chips for tags already used in your graph (you can still type new ones). The separate Edit tags button is gone. + +- Add a standalone plugin quickstart doc (a short scaffold then fill then run path with the plugin-lifecycle diagram and links into the full author guide), indexed in the spec README and published in the package. The now-redundant Quick start section was removed from the author guide and its unique co-located-files note (text.ts, the colocated test) folded into the Manifest section as a "Files by convention" paragraph. + +- Editorial pass tightening the spec prose docs for concision (lossless, no normative change: no schema, field, enum, exit code, or MUST/SHOULD touched, and the verbatim prompt preamble still matches the conformance fixture), plus a new non-normative "Plugin lifecycle at a glance" overview atop the plugin author guide with an ASCII diagram of the deterministic flow (Provider, Extractor, Analyzer, Action, Formatter) and Hook off to the side, each with a one-line purpose and short example. + ## 0.53.0 ### Minor Changes diff --git a/spec/index.json b/spec/index.json index fecdd323..6721b495 100644 --- a/spec/index.json +++ b/spec/index.json @@ -174,11 +174,11 @@ } ] }, - "specPackageVersion": "0.53.0", + "specPackageVersion": "0.54.0", "integrity": { "algorithm": "sha256", "files": { - "CHANGELOG.md": "6c4c565708584b07b3e7467a357f62a67fdbedafa80fd25af82258e154192759", + "CHANGELOG.md": "7238007d53d9a1cfc5a7577584de9aef7c9234076cf35dfc2415de9af4d19cf0", "README.md": "a790cd010b46d47883d1f37e3893cea9d7aa69ec4750c0202e6a0c99991e7980", "architecture.md": "062127380199b20c918359212a2b696195d3f142b6184297900db953be73b308", "cli-contract.md": "909d2d2440726524464bd1c0a631b0fac194e6ec0869a39a3e721fc89fd7cfdc", diff --git a/spec/package.json b/spec/package.json index d5ac8c4d..ab4b6b4f 100644 --- a/spec/package.json +++ b/spec/package.json @@ -1,6 +1,6 @@ { "name": "@skill-map/spec", - "version": "0.53.0", + "version": "0.54.0", "description": "JSON Schemas, prose contracts, and conformance suite for the skill-map specification.", "license": "MIT", "type": "module", diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md index 7b7bbb2b..9d7bb3a7 100644 --- a/src/CHANGELOG.md +++ b/src/CHANGELOG.md @@ -1,5 +1,43 @@ # skill-map +## 0.60.0 + +### Minor Changes + +- New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent. + + ## User-facing + + Shared projects can now turn off sidecar writers: a new Project setting stops actions from creating or editing the `.sm` files next to your notes. It is saved in the committed settings.json so it applies to the whole team and cannot be overridden locally. + +- The inspector tag row (``) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability. + + ## User-facing + + Edit a node's tags right where they are shown: click the pencil in the inspector's tag row to add or remove them inline, with one-click chips for tags already used in your graph (you can still type new ones). The separate Edit tags button is gone. + +### Patch Changes + +- Fix the `--analyzers` (CLI) and `?analyzerId=` (BFF) filter so a qualified `/` form matches the persisted short analyzer id (issues store the short kebab id with no slash, per `issue.schema.json`). Before, only a short filter matched, so `sm check --analyzers core/node-stability` returned nothing while the bare `node-stability` worked. Both `matchesAnalyzerFilter` and the `/api/issues` SQL now reduce a qualified filter entry to its suffix; the short form is unchanged. + + ## User-facing + + `sm check --analyzers core/` now matches issues, not only the bare `` form. + +- Fix a stale doc comment in the `annotation-orphan` analyzer: the header claimed `nodeIds` is empty, but the analyzer sets it to the orphan's would-be `.md` path (the missing sibling, to satisfy the issue schema's `minItems: 1`). Comment-only; no behavior change. + +- Sanitize the tags written by the `core/node-set-tags` action: it now keeps strings only, trims them, drops empty entries (the `annotations.tags` schema requires non-empty items), and dedups, instead of writing the free-form input verbatim. Prevents the Edit tags flow from producing a schema-violating or messy sidecar. + + ## User-facing + + Editing a node's tags now drops blank and duplicate entries and trims whitespace, instead of saving them as-is. + +- The `node-stability` experimental / deprecated card-footer chips were being suppressed: `card.footer.right` is a counter slot that treats `value: 0` as empty, and the contributions set `emitWhenEmpty: false`, so the badges never rendered. They now emit-when-empty and show again as icon-only badges (the `fa-flask` / `pi-ban` icon carries the meaning, value is always 0). + + ## User-facing + + The experimental / deprecated badge on a node's card now shows again. + ## 0.59.0 ### Minor Changes diff --git a/src/package.json b/src/package.json index 522214b5..9a1f9480 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "@skill-map/cli", - "version": "0.59.0", + "version": "0.60.0", "description": "skill-map reference implementation — kernel + CLI + adapters.", "license": "MIT", "type": "module", diff --git a/ui/src/data/user-changelog.json b/ui/src/data/user-changelog.json index 5f0dfc4a..9278cd27 100644 --- a/ui/src/data/user-changelog.json +++ b/ui/src/data/user-changelog.json @@ -1,6 +1,45 @@ { "schemaVersion": 1, "entries": [ + { + "version": "0.60.0", + "date": "2026-06-17", + "kind": "user-facing", + "highlights": [ + { + "body": "Shared projects can now turn off sidecar writers: a new Project setting stops actions from creating or editing the `.sm` files next to your notes. It is saved in the committed settings.json so it applies to the whole team and cannot be overridden locally.", + "packages": [ + "@skill-map/cli", + "@skill-map/spec" + ] + }, + { + "body": "`sm check --analyzers core/` now matches issues, not only the bare `` form.", + "packages": [ + "@skill-map/cli" + ] + }, + { + "body": "Edit a node's tags right where they are shown: click the pencil in the inspector's tag row to add or remove them inline, with one-click chips for tags already used in your graph (you can still type new ones). The separate Edit tags button is gone.", + "packages": [ + "@skill-map/cli", + "@skill-map/spec" + ] + }, + { + "body": "Editing a node's tags now drops blank and duplicate entries and trims whitespace, instead of saving them as-is.", + "packages": [ + "@skill-map/cli" + ] + }, + { + "body": "The experimental / deprecated badge on a node's card now shows again.", + "packages": [ + "@skill-map/cli" + ] + } + ] + }, { "version": "0.59.0", "date": "2026-06-16", diff --git a/web/package.json b/web/package.json index a6698bb7..b45a9db9 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "@skill-map/web", - "version": "0.3.4", + "version": "0.3.5", "private": true, "type": "module", "description": "skill-map.ai public site source. Static HTML + i18n; deployed via Caddy/Docker.",