@mano8/astro-media-m8 2.3.0 → 2.3.1

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 CHANGED
@@ -11,6 +11,49 @@ service line, so the contract can move without moving the major.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [2.3.1] - 2026-09-26 · tracks media-service 3.0.2
15
+
16
+ **Patch.** Tracks the published `@mano8/astro-ui-m8` `1.5.2` and
17
+ `@mano8/astro-auth-m8` `2.7.1` (`B39-astro-ui-changelog-release`, finding
18
+ `G38`). The only shipped change is `package.json`'s floors, with the README
19
+ that states them. The contract stays `media-service-m8@1.1`, range
20
+ `>=2.0.0 <4.0.0`, and the tested service version stays `3.0.2`.
21
+
22
+ ### Added
23
+
24
+ - **A lock that does not pin every package fails the build**
25
+ (`B34-npm-lock-integrity-guard`, finding `G34`(b)).
26
+ `scripts/verify-lock-integrity.mjs` (`npm run verify:lock-integrity`)
27
+ refuses a `package-lock.json` below `lockfileVersion` 3, or one with any
28
+ entry that lacks `integrity` or `resolved`, carries a non-`sha512` hash,
29
+ resolves outside `https://registry.npmjs.org/`, or is a link or `file:`
30
+ source, and names every offending key. `npm ci` installs an entry with no
31
+ `integrity` without checking a hash and says nothing, which is how `G33`
32
+ went unseen. CI runs it before `npm ci` in every job that installs.
33
+ `tests/lock-integrity.test.ts` proves each refusal against a fixture lock
34
+ and asserts this repository's own lock passes. The script is
35
+ dependency-free and byte-identical in the fleet's six npm repositories.
36
+ This lock already passed; the fixtures prove the red path. Only
37
+ `package.json`'s `scripts` gains an entry, so no release is owed.
38
+
39
+ ### Changed
40
+
41
+ - `@mano8/astro-ui-m8` floor `^1.5.1` → `^1.5.2` (`dependencies`) and
42
+ `@mano8/astro-auth-m8` `^2.7.0` → `^2.7.1` (`peerDependencies` and
43
+ `devDependencies`, still equal), the newest published releases (§0.5's
44
+ explicit-pin rule). The lock moves those two entries, each with its
45
+ registry `resolved` and `sha512` `integrity`. The README states the new
46
+ floors.
47
+
48
+ ### Security
49
+
50
+ - **The publish job verifies the lock before it installs**
51
+ (`B37-publish-lock-guard`, finding `G36`). `B34` guarded every `CI.yaml`
52
+ job but not the one that holds `id-token: write` and builds the tarball,
53
+ and the environment's `tag:v*` rule matches a tag by name, not by where it
54
+ points. `npm-publish.yml` now runs `npm run verify:lock-integrity` before
55
+ `npm ci`, and `tests/publish-workflow.test.ts` holds the order.
56
+
14
57
  ## [2.3.0] - 2026-09-26 · tracks media-service 3.0.2
15
58
 
16
59
  **Minor bump.** Tracks the published `media-service-m8` `3.0.2` patch release
package/README.md CHANGED
@@ -65,12 +65,12 @@ elsewhere.
65
65
  npm i @mano8/astro-media-m8 @mano8/astro-auth-m8 zod
66
66
  ```
67
67
 
68
- `@mano8/astro-auth-m8` is a required peer at **`^2.7.0` or newer**:
68
+ `@mano8/astro-auth-m8` is a required peer at **`^2.7.1` or newer**:
69
69
  `media-service-m8` only accepts `fa-auth-m8`-issued tokens, so the plugin's auth
70
70
  adapter must be backed by `fa-auth-m8` (the official plugin, or a custom adapter
71
71
  that obtains those tokens). A 1.x auth is not supported — upgrade auth first, or
72
72
  the install resolves nothing that satisfies the peer.
73
- `@mano8/astro-ui-m8` (`^1.5.1`) is a normal dependency because the media registry
73
+ `@mano8/astro-ui-m8` (`^1.5.2`) is a normal dependency because the media registry
74
74
  skins compose the canonical shared table from its packaged registry output.
75
75
  `react`/`react-dom` are optional — only `./react`, `./hooks` and the starter
76
76
  views need them; `@tanstack/react-query` is a required peer once you use
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mano8/astro-media-m8",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "Astro integration and headless client for media-service-m8.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -57,6 +57,7 @@
57
57
  "preview:dev": "vite --config fixtures/preview/vite.config.ts",
58
58
  "preview:build": "tsc -p fixtures/preview/tsconfig.json --noEmit && vite build --config fixtures/preview/vite.config.ts",
59
59
  "verify:fleet-gates": "node scripts/verify-fleet-gates.mjs",
60
+ "verify:lock-integrity": "node scripts/verify-lock-integrity.mjs",
60
61
  "verify:registry-consumer": "node scripts/verify-registry-consumer.mjs",
61
62
  "verify:registry-drift": "node scripts/verify-registry-drift.mjs",
62
63
  "verify:starter-routes": "node scripts/verify-starter-routes.mjs",
@@ -67,12 +68,12 @@
67
68
  "test:unit": "vitest run"
68
69
  },
69
70
  "dependencies": {
70
- "@mano8/astro-ui-m8": "^1.5.1"
71
+ "@mano8/astro-ui-m8": "^1.5.2"
71
72
  },
72
73
  "peerDependencies": {
73
74
  "@astrojs/react": "^6.0.1",
74
75
  "@astrojs/starlight": "^0.41.3",
75
- "@mano8/astro-auth-m8": "^2.7.0",
76
+ "@mano8/astro-auth-m8": "^2.7.1",
76
77
  "@tanstack/react-query": "^5.102.8",
77
78
  "astro": "^7.0.9",
78
79
  "react": "^18.0.0 || ^19.0.0",
@@ -92,7 +93,7 @@
92
93
  "@astrojs/starlight": "^0.41.10",
93
94
  "@eslint-react/eslint-plugin": "^5.18.6",
94
95
  "@eslint/js": "^10.0.1",
95
- "@mano8/astro-auth-m8": "^2.7.0",
96
+ "@mano8/astro-auth-m8": "^2.7.1",
96
97
  "@tanstack/react-query": "^5.102.8",
97
98
  "@tanstack/react-table": "^8.21.3",
98
99
  "@types/node": "^26.4.0",