@mano8/astro-media-m8 2.3.0 → 2.3.2

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +2 -2
  3. package/package.json +18 -15
package/CHANGELOG.md CHANGED
@@ -11,6 +11,91 @@ service line, so the contract can move without moving the major.
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [2.3.2] - 2026-09-27 · tracks media-service 3.0.2
15
+
16
+ **Patch.** Admits `@astrojs/react` 7 and Starlight 0.42 as peers, tracks
17
+ the published `@mano8/astro-ui-m8` `1.5.3` and `@mano8/astro-auth-m8`
18
+ `2.7.2`, and adds the fleet's dependency compatibility gate. Peer ranges only
19
+ widen, with both old lines still accepted, and the floors that rise are to
20
+ published releases. The contract stays `media-service-m8@1.1`, range
21
+ `>=2.0.0 <4.0.0`, and the tested service version stays `3.0.2`.
22
+
23
+ ### Added
24
+
25
+ - **A tree that breaks a declared range fails the build.**
26
+ `scripts/verify-dependency-compat.mjs` (`npm run verify:dependency-compat`)
27
+ and `tests/dependency-compat.test.ts`, byte-identical across the fleet's
28
+ six npm repositories and first shipped in `@mano8/astro-ui-m8` `1.5.3`.
29
+ The gate reads `npm ls --all --json --long` with peer edges forced on. It
30
+ names every installed package outside a range declared on it, and every
31
+ missing required dependency or peer that a required edge reaches. CI runs
32
+ it after `npm ci`.
33
+ - **`.npmrc` with `legacy-peer-deps=true`**, byte-identical fleet-wide. The
34
+ four `npm ci --legacy-peer-deps` steps in `CI.yaml` and `npm-publish.yml`
35
+ become plain `npm ci`: the setting now lives in one place, local installs
36
+ and Dependabot included, and the gate above enforces the ranges it no
37
+ longer checks.
38
+
39
+ ### Changed
40
+
41
+ - **Peers `@astrojs/react` `^6.0.1` → `^6.0.1 || ^7.0.0` and
42
+ `@astrojs/starlight` `^0.41.3` → `^0.41.3 || ^0.42.0`**, matching
43
+ `@mano8/astro-auth-m8` `2.7.2`. `src/` imports neither package. Starlight
44
+ 0.42 is the line built for `astro` 7.3, whose optional
45
+ `@astrojs/markdown-remark` `^7.3.0` peer Starlight 0.41 cannot meet.
46
+ - `@mano8/astro-ui-m8` floor `^1.5.2` → `^1.5.3` (`dependencies`) and
47
+ `@mano8/astro-auth-m8` `^2.7.1` → `^2.7.2` (`peerDependencies` and
48
+ `devDependencies`, still equal), the newest published releases, each read
49
+ back as npm `latest`. The README states the new floors.
50
+ - Dev dependencies test the new lines, matching `fa-ui-m8`: `@astrojs/react`
51
+ `^7.0.0`, `@astrojs/starlight` `^0.42.4`, `astro` `^7.3.4`, `react` /
52
+ `react-dom` / `@types/react` `^19.3.0`, `@typescript-eslint/*` `^8.70.1`,
53
+ `globals` `^17.12.0`. `@types/react-dom` `^19.3.0` is now declared: it is
54
+ a required peer of `@astrojs/react` that npm no longer installs on its own.
55
+
56
+ ## [2.3.1] - 2026-09-26 · tracks media-service 3.0.2
57
+
58
+ **Patch.** Tracks the published `@mano8/astro-ui-m8` `1.5.2` and
59
+ `@mano8/astro-auth-m8` `2.7.1` (`B39-astro-ui-changelog-release`, finding
60
+ `G38`). The only shipped change is `package.json`'s floors, with the README
61
+ that states them. The contract stays `media-service-m8@1.1`, range
62
+ `>=2.0.0 <4.0.0`, and the tested service version stays `3.0.2`.
63
+
64
+ ### Added
65
+
66
+ - **A lock that does not pin every package fails the build**
67
+ (`B34-npm-lock-integrity-guard`, finding `G34`(b)).
68
+ `scripts/verify-lock-integrity.mjs` (`npm run verify:lock-integrity`)
69
+ refuses a `package-lock.json` below `lockfileVersion` 3, or one with any
70
+ entry that lacks `integrity` or `resolved`, carries a non-`sha512` hash,
71
+ resolves outside `https://registry.npmjs.org/`, or is a link or `file:`
72
+ source, and names every offending key. `npm ci` installs an entry with no
73
+ `integrity` without checking a hash and says nothing, which is how `G33`
74
+ went unseen. CI runs it before `npm ci` in every job that installs.
75
+ `tests/lock-integrity.test.ts` proves each refusal against a fixture lock
76
+ and asserts this repository's own lock passes. The script is
77
+ dependency-free and byte-identical in the fleet's six npm repositories.
78
+ This lock already passed; the fixtures prove the red path. Only
79
+ `package.json`'s `scripts` gains an entry, so no release is owed.
80
+
81
+ ### Changed
82
+
83
+ - `@mano8/astro-ui-m8` floor `^1.5.1` → `^1.5.2` (`dependencies`) and
84
+ `@mano8/astro-auth-m8` `^2.7.0` → `^2.7.1` (`peerDependencies` and
85
+ `devDependencies`, still equal), the newest published releases (§0.5's
86
+ explicit-pin rule). The lock moves those two entries, each with its
87
+ registry `resolved` and `sha512` `integrity`. The README states the new
88
+ floors.
89
+
90
+ ### Security
91
+
92
+ - **The publish job verifies the lock before it installs**
93
+ (`B37-publish-lock-guard`, finding `G36`). `B34` guarded every `CI.yaml`
94
+ job but not the one that holds `id-token: write` and builds the tarball,
95
+ and the environment's `tag:v*` rule matches a tag by name, not by where it
96
+ points. `npm-publish.yml` now runs `npm run verify:lock-integrity` before
97
+ `npm ci`, and `tests/publish-workflow.test.ts` holds the order.
98
+
14
99
  ## [2.3.0] - 2026-09-26 · tracks media-service 3.0.2
15
100
 
16
101
  **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.2` 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.3`) 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.2",
4
4
  "description": "Astro integration and headless client for media-service-m8.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -56,7 +56,9 @@
56
56
  "build:registry": "node scripts/build-registry.mjs",
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
+ "verify:dependency-compat": "node scripts/verify-dependency-compat.mjs",
59
60
  "verify:fleet-gates": "node scripts/verify-fleet-gates.mjs",
61
+ "verify:lock-integrity": "node scripts/verify-lock-integrity.mjs",
60
62
  "verify:registry-consumer": "node scripts/verify-registry-consumer.mjs",
61
63
  "verify:registry-drift": "node scripts/verify-registry-drift.mjs",
62
64
  "verify:starter-routes": "node scripts/verify-starter-routes.mjs",
@@ -67,12 +69,12 @@
67
69
  "test:unit": "vitest run"
68
70
  },
69
71
  "dependencies": {
70
- "@mano8/astro-ui-m8": "^1.5.1"
72
+ "@mano8/astro-ui-m8": "^1.5.3"
71
73
  },
72
74
  "peerDependencies": {
73
- "@astrojs/react": "^6.0.1",
74
- "@astrojs/starlight": "^0.41.3",
75
- "@mano8/astro-auth-m8": "^2.7.0",
75
+ "@astrojs/react": "^6.0.1 || ^7.0.0",
76
+ "@astrojs/starlight": "^0.41.3 || ^0.42.0",
77
+ "@mano8/astro-auth-m8": "^2.7.2",
76
78
  "@tanstack/react-query": "^5.102.8",
77
79
  "astro": "^7.0.9",
78
80
  "react": "^18.0.0 || ^19.0.0",
@@ -88,25 +90,26 @@
88
90
  }
89
91
  },
90
92
  "devDependencies": {
91
- "@astrojs/react": "^6.0.4",
92
- "@astrojs/starlight": "^0.41.10",
93
+ "@astrojs/react": "^7.0.0",
94
+ "@astrojs/starlight": "^0.42.4",
93
95
  "@eslint-react/eslint-plugin": "^5.18.6",
94
96
  "@eslint/js": "^10.0.1",
95
- "@mano8/astro-auth-m8": "^2.7.0",
97
+ "@mano8/astro-auth-m8": "^2.7.2",
96
98
  "@tanstack/react-query": "^5.102.8",
97
99
  "@tanstack/react-table": "^8.21.3",
98
100
  "@types/node": "^26.4.0",
99
- "@types/react": "^19.2.18",
100
- "@typescript-eslint/eslint-plugin": "^8.68.0",
101
- "@typescript-eslint/parser": "^8.68.0",
101
+ "@types/react": "^19.3.0",
102
+ "@types/react-dom": "^19.3.0",
103
+ "@typescript-eslint/eslint-plugin": "^8.70.1",
104
+ "@typescript-eslint/parser": "^8.70.1",
102
105
  "@vitest/coverage-v8": "^4.1.11",
103
- "astro": "^7.2.9",
106
+ "astro": "^7.3.4",
104
107
  "eslint": "^10.9.1",
105
108
  "eslint-plugin-security": "^4.0.1",
106
- "globals": "^17.11.0",
109
+ "globals": "^17.12.0",
107
110
  "jsdom": "^30.0.1",
108
- "react": "^19.2.8",
109
- "react-dom": "^19.2.8",
111
+ "react": "^19.3.0",
112
+ "react-dom": "^19.3.0",
110
113
  "typescript": "^5.9.3",
111
114
  "vitest": "^4.1.11",
112
115
  "zod": "^4.5.4"