@mano8/astro-media-m8 2.2.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 ADDED
@@ -0,0 +1,383 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@mano8/astro-media-m8` are documented here.
4
+
5
+ This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+ The major version tracks the supported `media-service-m8` **service-version
7
+ line**, not just this package's own surface: a backend repoint is always a
8
+ major. Note that this is the *service* version, not the contract version — the
9
+ compatibility helper admits several contracts (`1.0` and `1.1`) against one
10
+ service line, so the contract can move without moving the major.
11
+
12
+ ## [Unreleased]
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
+
57
+ ## [2.3.0] - 2026-09-26 · tracks media-service 3.0.2
58
+
59
+ **Minor bump.** Tracks the published `media-service-m8` `3.0.2` patch release
60
+ (`B31-plugin-tracking-tail`, finding `G32`). The supported contract stays
61
+ `media-service-m8@1.1`, range `>=2.0.0 <4.0.0` — no contract repoint, so this
62
+ is not a major; a minor rather than a patch on the same reasoning as `2.2.0`
63
+ (an exported compatibility constant changes value).
64
+
65
+ ### Changed
66
+
67
+ - `MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION` and `package.json`'s
68
+ `mediaServiceM8.testedServiceVersion` move `3.0.1` → `3.0.2`. Read from
69
+ `v3.0.1` to `v3.0.2` on the service, nothing this plugin models moved:
70
+ `3.0.2` is the fleet's Debian patch layer, a UTC PostgreSQL session clock,
71
+ and typing fixes — the upload reject `reason` is hoisted into a named
72
+ `UploadRejectReason` alias carrying the same five values. Dashboard activity
73
+ bounds now always carry a UTC offset; this package types them as strings,
74
+ so both forms parse.
75
+ - `README.md` names `3.0.2` as the tested service version.
76
+ - Raised the `@mano8/astro-auth-m8` floor from `^2.6.0` to `^2.7.0` in both
77
+ `peerDependencies` and `devDependencies` (`B31-plugin-tracking-tail` leg 2).
78
+ `2.7.0` is the auth tracking release for `fa-auth-m8` `2.2.3`, published
79
+ before this one, and `package-lock.json` resolves its tarball. `README.md`
80
+ names the new peer floor, and corrects the `@mano8/astro-ui-m8` floor it
81
+ quoted (`^1.5.0`) to the declared `^1.5.1`.
82
+
83
+ ### Unchanged, deliberately
84
+
85
+ - `MEDIA_SERVICE_M8_MIN_SERVICE_VERSION` stays `2.0.0` and
86
+ `MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE` stays `4.0.0`, and the
87
+ contract stays `1.1`: the range already admits `3.0.2`, and no served shape
88
+ changed.
89
+
90
+ ### Security
91
+
92
+ - **npm is reached only from a published release**
93
+ (`B30-pre-publish-hardening` leg 5, finding `G25`). `npm-publish.yml` ran
94
+ `npm publish` on any `workflow_dispatch`, from any branch, into an `npm`
95
+ environment with no protection. A dispatch now
96
+ runs `npm publish --dry-run`; a release fails unless its tag, with the `v`
97
+ stripped, is `package.json`'s `version`; and the tarball ships
98
+ `CHANGELOG.md` from the next release (`G31`(b)).
99
+ `tests/publish-workflow.test.ts` locks each rule. The operator's `v*` tag
100
+ policy on the `npm` environment is the platform half of the same rule.
101
+
102
+ ## [2.2.0] - 2026-09-16 · tracks media-service 3.0.1
103
+
104
+ **Minor bump.** Tracks the `media-service-m8` `3.0.1` patch release. The
105
+ supported contract stays `media-service-m8@1.1`, range `>=2.0.0 <4.0.0` — no
106
+ contract repoint, so this is not a major; a minor rather than a patch on the
107
+ same reasoning the fleet's auth client uses for its tracking releases (an
108
+ exported compatibility constant changes value).
109
+
110
+ ### Changed
111
+
112
+ - `MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION` and `package.json`'s
113
+ `mediaServiceM8.testedServiceVersion` move `3.0.0` → `3.0.1`. `3.0.1` fixes
114
+ the service's hard purge, which answered `500` for any soft-deleted object
115
+ that had ever had a variant generated (`media_variant` / `variant_job`
116
+ reference `media_object` without `ON DELETE CASCADE`); it is a maintenance
117
+ code path — nothing served over HTTP changes, no schema here moves — so
118
+ this release exists only to keep the tracked version in step with the
119
+ fleet's compose pins (`media-service-m8` and `fa-ui-m8` stacks re-pinned
120
+ to `3.0.1` the same day).
121
+ - `README.md` names `3.0.1` as the tested service version.
122
+
123
+ ### Unchanged, deliberately
124
+
125
+ - `MEDIA_SERVICE_M8_MIN_SERVICE_VERSION` stays `2.0.0` and
126
+ `MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE` stays `4.0.0`: the range
127
+ admits `3.0.1` already, and nothing on the `2.x`/`3.x` line has touched the
128
+ `1.1` contract this plugin speaks.
129
+
130
+ ## [2.1.0] - 2026-09-14 · media-service 3.x admitted (additive)
131
+
132
+ **Minor bump.** `media-service-m8` `3.0.0` ships an object-storage backend and
133
+ env-var rename — the `MINIO_*` deprecation shim is removed in favor of the
134
+ provider-neutral `S3_*` settings — with no change to the `1.1` HTTP contract
135
+ this plugin models. Widening the supported range to admit it alongside the
136
+ existing 2.x line is therefore additive, not breaking.
137
+
138
+ ### Changed
139
+
140
+ - `MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE` `"3.0.0"` → `"4.0.0"`;
141
+ `MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE` now `>=2.0.0 <4.0.0`.
142
+ `MEDIA_SERVICE_M8_MIN_SERVICE_VERSION` stays `"2.0.0"` — the published
143
+ `2.1.0` service remains a valid peer.
144
+ - `MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION` `"2.1.1"` → `"3.0.0"`, the
145
+ media-sdk-m8 `1.0.0` / media-service-m8 `3.0.0` shim-removal cut this
146
+ client's schemas were diffed against.
147
+ - `package.json` `mediaServiceM8.serviceVersionRange` →
148
+ `">=2.0.0 <4.0.0"`, `mediaServiceM8.testedServiceVersion` → `"3.0.0"`.
149
+ - **The required `@mano8/astro-auth-m8` peer is repointed `^2.4.1` → `^2.6.0`**
150
+ in both `peerDependencies` and `devDependencies`; the lockfile resolves
151
+ `astro-auth-m8-2.6.0.tgz`, the registry's current `latest`. `2.5.0` and
152
+ `2.6.0` are tracking releases — they move the auth plugin's tested
153
+ `fa-auth-m8` issuer version `2.0.0` → `2.2.1` (the JWKS `kid`/key-binding
154
+ remediation line the fleet's compose pins now run) and leave its
155
+ `fa-auth-m8@2.0` contract, minimum service version and peer ranges
156
+ unchanged, so nothing this plugin imports or adapts moves. The floor states
157
+ the pairing the fleet is verified against rather than one it merely
158
+ tolerates. `README.md`'s install section, which still read `^2.2.0`, now
159
+ names the same floor.
160
+
161
+ ### Fixed
162
+
163
+ - `js-yaml` `4.3.1` → `4.3.2` in the lockfile (transitive, via `astro` /
164
+ `@astrojs/starlight` / `@astrojs/internal-helpers`), closing
165
+ [GHSA-2883-xcg3-v3hh](https://github.com/advisories/GHSA-2883-xcg3-v3hh)
166
+ (high: `maxTotalMergeKeys` does not bound CPU use for empty merge sources),
167
+ which had turned CI's `npm audit --audit-level=high` gate red on this
168
+ branch. No manifest range changes; the patch is inside every declaring
169
+ package's existing range.
170
+
171
+ ## [2.0.0] - 2026-08-30 · media-service 2.x repoint, auth generation jump
172
+
173
+ **Major bump, for two independent breaking reasons.**
174
+
175
+ 1. **The supported `media-service-m8` moves from 1.x to 2.x.**
176
+ `MEDIA_SERVICE_M8_MIN_SERVICE_VERSION` goes `1.0.0` → `2.0.0` and the
177
+ exclusive maximum `2.0.0` → `3.0.0`, so a pre-tier `1.x` service is
178
+ deliberately **no longer admitted**: it cannot serve the role-tier
179
+ authorization behaviour this plugin's guards assume. A consumer pointing at a
180
+ 1.x service is refused at preflight, which is a breaking change to what this
181
+ package works against.
182
+ 2. **The required `@mano8/astro-auth-m8` peer crosses a generation**, `^1.5.0` →
183
+ `^2.4.1`. The old range excluded every 2.x auth release, so consumers pairing
184
+ this plugin with a 1.x auth must upgrade auth first.
185
+
186
+ No export of this package is removed or renamed; both breaking changes are to
187
+ what it requires around it.
188
+
189
+ **This section is a fold of two never-published versions.** `1.2.0` and `2.0.0`
190
+ were both numbered in source without ever being tagged — `origin`'s newest tag
191
+ is `v1.1.1` — so under the fleet's one-bump-per-unpublished-release rule they
192
+ are one release, and the number is the major the work actually earns. `1.2.0`
193
+ had been numbered a **minor** while carrying reason 1 above, which is what made
194
+ folding it the correct call rather than a tidying one.
195
+
196
+ ### Added
197
+
198
+ - **Every React island root is wrapped in an error boundary** (`A-C3`). A throw
199
+ inside `LibraryView`, `ObjectDetailView`, `UploadView`, `PresetsView` or
200
+ `AdminMediaView` now renders the canonical `astro-ui-m8` error state instead
201
+ of tearing down the island and leaving a blank region on the host page.
202
+ - **Dev-only `/_preview` gallery** (`A-C2`). `npm run preview:dev` mounts every
203
+ shipped island against an in-memory stand-in for `media-service-m8`: only
204
+ `fetch` is replaced, so the views, hooks, API wrappers and Zod schemas
205
+ exercised are the shipped ones. `npm run preview:build` typechecks and builds
206
+ the fixture, and CI runs both. The gallery is a development fixture and is not
207
+ part of the published tarball.
208
+
209
+ - **Category CRUD starter page.** Starter mode now ships `/media/categories`,
210
+ backed by the existing tenant-scoped `CategoryManager`, so consumers can
211
+ mount category creation, rename, reparent and delete as a real page.
212
+
213
+ ### Fixed
214
+
215
+ - **The tree view's category pane scrolls horizontally instead of clipping**
216
+ (`U7`). The pane's width is fixed from `md` up (`md:w-64`) while a nested
217
+ branch's is not, so a tree several levels deep ran off the pane edge with no
218
+ way to reach the rest of it — every row was ellipsed at the same point and
219
+ the indentation kept pushing the labels further right. Three changes make the
220
+ pane show its content rather than hide it, and they only work together:
221
+ `overflow-y-auto` becomes `overflow-auto`; the `role="tree"` list takes
222
+ `min-w-max` so it states the width of its widest row; and
223
+ `.fa-media-tree-name` drops `truncate` for plain `whitespace-nowrap`. A
224
+ truncating label can never widen its list, so with the old rule the new
225
+ horizontal bar would have had nothing to reveal. The bar is `auto`, so a
226
+ shallow tree renders exactly as before. Carried in both the Tailwind token
227
+ classes and the framework-neutral `media.css` fallback (`D11`).
228
+ - **The tree view's two panes are the same height, and the pane is no longer a
229
+ fixed 16rem.** The row was `md:items-start`, so the category pane hugged its
230
+ own content and sat as a short box beside a long results table; it is
231
+ `items-stretch` at both widths now, so the pane takes the results column's
232
+ height and the `max-h` only bites when the tree is the taller of the two —
233
+ then it scrolls at the cap rather than growing the page. `min-h-0` is required
234
+ for that scroll to engage at all, since a stretched flex item will not shrink
235
+ below its content. The width moves from a flat `w-64` to
236
+ `clamp(16rem, 24vw, 26rem)`: 16rem was the same pane on a 13" laptop and a 27"
237
+ monitor and too narrow for a nested tree on both.
238
+ - **The tree pane is now complete under Tailwind alone.** The list reset and
239
+ the child indent were the only tree geometry with no Tailwind twin — they
240
+ existed solely in the scaffold stylesheet. A consumer that maps its own theme
241
+ instead of loading that stylesheet (which is the documented way to use this
242
+ package with a design system) therefore lost the indentation and the branch
243
+ guide line entirely, and the tree read as a flat list. Both are stated as
244
+ utilities on the elements now (`m-0 list-none p-0` on the tree list,
245
+ `ml-1 border-l border-border pl-3` on each child group), with the scaffold
246
+ rules kept unchanged for consumers without Tailwind.
247
+ - **The two-pane split waits for `lg`, not `md`.** At 48rem a category pane and
248
+ a six-column table shared 768px and both were cramped, so the stacked layout
249
+ now carries the tablet range where it reads better.
250
+ - **The results table scrolls instead of squashing.** Six columns have no
251
+ readable narrow form, so the table sits in its own `overflow-x-auto` box with
252
+ `min-w-[34rem]` — the `min-width` is what gives the bar something to reveal,
253
+ since `width: 100%` alone can never exceed its wrapper. Applies to the list
254
+ view as well as the tree view, since both render the same table.
255
+ - **The import dropzone stops borrowing the tree pane's class.** It reused
256
+ `treePaneClassName` outright for its card look, which quietly handed it the
257
+ pane's width and scroll behaviour too — so sizing the pane for a category tree
258
+ would have resized a file dropzone with it. It carries
259
+ `fa-media-transfer-dropzone` now, and with it a framework-neutral fallback it
260
+ never had: `--active` was referenced by the runtime with no rule behind it
261
+ (`D11`).
262
+ - **The child indent is trimmed** — `.fa-media-tree-children` `padding-left`
263
+ `1.25rem` → `0.75rem` and `margin-left` `0.4rem` → `0.25rem`. Each level pays
264
+ for indent *and* a `1.25rem` toggle column, so on a four-deep tree the indent
265
+ was the largest single contributor to the width that pushed rows out of the
266
+ pane. `0.75rem` still clears the toggle glyph, so the branch guide rule stays
267
+ legible against the row it belongs to.
268
+
269
+ ### Changed
270
+
271
+ - **`MediaLibrary.tsx` is split into modules, and the largest components are
272
+ decomposed.** The file had grown to 1224 non-comment lines and carried the
273
+ library, its tree pane, its transfer panel, the whole label contract and every
274
+ Tailwind token class in one place; it is now `mediaLibraryLabels`,
275
+ `mediaLibraryStyles`, `categoryBranch`, `MediaCategoryTreePane`,
276
+ `MediaTransferPanel` and a 507-line `MediaLibrary`. The same pass extracts
277
+ subcomponents and hooks from `CategoryMultiSelectView`, `CategoryManagerRow`,
278
+ `CategoryManager`, `MediaObjectPreview` and the three library registry skins,
279
+ and splits the two oversized tree-pane tests into focused cases. **No export,
280
+ prop, class name or rendered markup changes** — `MediaLibraryLabels` is still
281
+ exported from `MediaLibrary.js`, and all 237 tests pass unchanged apart from
282
+ the ones deliberately split. It is a Codacy complexity gate the fleet keeps
283
+ green, not a redesign.
284
+ - **The category tree pane opens with every branch collapsed.** It used to
285
+ render the whole tree expanded, which on a deep hierarchy filled the pane
286
+ with descendants before the user had chosen a branch and made the pane its
287
+ widest at the moment it was least useful. The pane now tracks `expandedIds`
288
+ rather than the inverted `collapsed` set — an empty set is the honest seed
289
+ for "all shut", where the old set could only ever mean "all open" on first
290
+ render because the ids it would have to hold are not known until the tree
291
+ resolves. Nothing else about the pane's keyboard contract moves:
292
+ ArrowRight/ArrowLeft still open and close, and `aria-expanded` still reports
293
+ the real state. The `media-category-tree` registry skin drops its
294
+ `defaultExpandedIds={collectExpandableIds(nodes)}` for the same reason, so
295
+ the skin and the runtime pane stay non-divergent.
296
+ - **`UploadCompleteRequestSchema` carries `category_ids`.** The served
297
+ `POST /media/v1/uploads/{id}/complete` has always accepted an optional
298
+ `category_ids` that *replaces* the filing staged at initiate (`[]` completes
299
+ the object filed into nothing), and this schema is `.strict()` — so a caller
300
+ meaning to override the filing at complete time was rejected client-side
301
+ before the request was ever made. Purely additive: omitting the key still
302
+ means "keep what initiate staged", which is what this package's own upload
303
+ controller relies on, so no existing caller changes.
304
+ - **The `media-service-m8` pairing is re-measured.**
305
+ `MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION` and `mediaServiceM8.testedServiceVersion`
306
+ move `2.0.0` → `2.1.1` — the service this client was actually exercised
307
+ against, whose OpenAPI every schema here was diffed against in the same pass.
308
+ Written ahead of the `2.1.1` tag and recorded as such, the same ordering
309
+ inversion the workspace matrix documents for the `2.1.0` image pins; it is
310
+ safe here in a way a pin is not, because the constant resolves nothing and
311
+ installs nothing.
312
+ **Neither gate moves.** `MEDIA_SERVICE_M8_CONTRACT_VERSION` stays `1.1`
313
+ because the *contract* did not move: the service fix populates a field that
314
+ was already declared, already documented and already populated by the list and
315
+ write paths, so no served shape changed. `media_service`'s own
316
+ `CONTRACT_VERSION` is still `1.1` and `tests/test_meta.py` asserts it as a
317
+ literal — advancing this client past it would make every preflight demand a
318
+ contract the service does not serve. The service-version range likewise stays
319
+ `>=2.0.0 <3.0.0`, which admits the whole 2.x line, so a host on the published
320
+ `2.1.0` passes preflight unchanged. `REPOSITORY_CONTEXT.md` additionally carried
321
+ `>=1.0.0 <2.0.0` for that range, wrong twice over — it is a *service*-version
322
+ range, not a range of contract versions, and the value had been left behind by
323
+ the 2.x repoint, so it excluded every service this package admits.
324
+ `compatibility.ts` and the `mediaServiceM8` block have been right since that
325
+ repoint; the doc line was the outlier and is corrected in place.
326
+ - **Required auth peer raised to `@mano8/astro-auth-m8` `^2.2.0`**, in both
327
+ `peerDependencies` and `devDependencies`. The previous `^1.5.0` range excluded
328
+ every 2.x auth release, so this package declared it needed an auth generation
329
+ the fleet had already left behind; the conflict was only ever suppressed by
330
+ installing with `--legacy-peer-deps`. Consumers pairing this plugin with a 1.x
331
+ auth must upgrade auth first. `@mano8/astro-ui-m8` stays at `^1.5.0`.
332
+ - **Category-tree responses are depth-bounded.** The Zod tree schema accepts up
333
+ to 10 levels, matching the service default, and rejects deeper untrusted
334
+ responses before recursive UI rendering.
335
+ - **Contract `media-service-m8@1.1`** (`P2 U12`). The compatibility helper,
336
+ package metadata and documentation now agree on the additive media UX
337
+ contract. The contract axis itself is additive — the client admits both
338
+ `1.0` and `1.1` — so it is **not** what makes this release a major; the
339
+ service-version gate above is.
340
+
341
+ - **The fleet gate exempts one authorization specifier** (remediation `W7.7`,
342
+ decision 4). `scripts/verify-fleet-gates.mjs` is carried byte-identically by
343
+ all four plugins, so a fleet-wide rule change lands in all four or in none.
344
+ `no-cross-plugin-import` now permits exactly
345
+ `@mano8/astro-auth-m8/authorization` — the pure, framework-neutral mirror of
346
+ `auth_sdk_m8/authorization.py` — so a plugin can meet `RBAC-06`, one role
347
+ hierarchy, by importing it rather than re-implementing it. Every other
348
+ subpath of the auth peer stays refused. A new `authorization-purity` gate
349
+ makes that exemption conditional: in a package that uses it, it walks the
350
+ module's import closure and fails on React, on any bare dependency other than
351
+ `zod`, or on any read of a runtime global. This package imports no
352
+ authorization module today, so the second gate is inert here and nothing in
353
+ its behaviour, surface or dependencies changes; it carries the rule so the
354
+ fleet stays one rule.
355
+
356
+ - **Upload is a library action.** `MediaLibrary` now places an `Upload media`
357
+ action at the right of its top toolbar and opens the upload form as an
358
+ accessible modal. The dialog includes the existing nested user-category
359
+ selector, closes on Escape/backdrop/completion and refreshes the library
360
+ after a successful upload. The legacy `/media/upload` starter route opens
361
+ this same library dialog for direct-link compatibility.
362
+ - **The required auth peer is raised to `@mano8/astro-auth-m8` `^2.4.1`** in
363
+ both `peerDependencies` and `devDependencies`. Two separate reasons stack, and
364
+ the floor is the higher of them. `2.3.0` coordinates the two token-refresh
365
+ paths behind one single-flight guard; below it, a page mounting both paths
366
+ against one expired token can issue two rotations, which `fa-auth-m8` reads as
367
+ token reuse and answers by revoking every session for the account. This plugin
368
+ reaches that path through `installFaAuthBrowserAdapter`, so it is behaviour
369
+ this package depends on rather than one it merely tolerates. `2.4.0` then
370
+ makes `@mano8/astro-auth-m8/authorization` a **supported** cross-plugin import
371
+ surface rather than an internal module siblings happen to be able to reach —
372
+ the guarantee the fleet's widened `no-cross-plugin-import` gate (`C12`) and
373
+ its `authorization-purity` companion are written against. This package carries
374
+ both gates, so it takes the floor that makes them meaningful even though its
375
+ own adapter does not yet import the module. The previous `^2.2.0` range
376
+ already resolved these on a fresh install; the floor states the requirement.
377
+ The floor landed as `^2.4.0` and was repointed to `^2.4.1` once that
378
+ tooling-alignment release was published; the lockfile resolves
379
+ `astro-auth-m8-2.4.1.tgz`.
380
+
381
+ - **`@mano8/astro-ui-m8` is repointed `^1.5.0` → `^1.5.1`**, the published
382
+ tooling-alignment release, so the manifest no longer names a range ahead of
383
+ the registry. The lockfile resolves `astro-ui-m8-1.5.1.tgz`.
package/README.md CHANGED
@@ -30,7 +30,7 @@ Pinned to `media-service-m8@1.1` (supported service-version range
30
30
  ## Backend contract
31
31
 
32
32
  This package targets the additive `media-service-m8@1.1` API contract and was
33
- tested against `media-service-m8` service version `3.0.1`. Supported backend
33
+ tested against `media-service-m8` service version `3.0.2`. Supported backend
34
34
  service versions are `>=2.0.0 <4.0.0`.
35
35
 
36
36
  The contract axis and the service axis move independently, and only the range
@@ -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.6.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.0`) 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
@@ -1,7 +1,7 @@
1
1
  export declare const MEDIA_SERVICE_M8_CONTRACT_ID = "media-service-m8";
2
2
  export declare const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.1";
3
3
  export declare const MEDIA_SERVICE_M8_CONTRACT: "media-service-m8@1.1";
4
- export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "3.0.1";
4
+ export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "3.0.2";
5
5
  export declare const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "2.0.0";
6
6
  export declare const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "4.0.0";
7
7
  export declare const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = ">=2.0.0 <4.0.0";
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,yBAAyB,wBAAkF,CAAC;AA0BzH,eAAO,MAAM,uCAAuC,UAAU,CAAC;AAC/D,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,eAAO,MAAM,8CAA8C,UAAU,CAAC;AACtE,eAAO,MAAM,sCAAsC,mBAAiG,CAAC;AAErJ,MAAM,MAAM,iCAAiC,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,6BAA6B,GAAG;IAG1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,iCAAiC,CAAC;IAC1C,gBAAgB,EAAE,OAAO,yBAAyB,CAAC;IACnD,2BAA2B,EAAE,OAAO,sCAAsC,CAAC;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqDF,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,6BAAkC,GAC3C,2BAA2B,CAmE7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,6BAA6B,EACvC,YAAY,UAAO,GAClB,2BAA2B,CAM7B"}
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,yBAAyB,wBAAkF,CAAC;AA4BzH,eAAO,MAAM,uCAAuC,UAAU,CAAC;AAC/D,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,eAAO,MAAM,8CAA8C,UAAU,CAAC;AACtE,eAAO,MAAM,sCAAsC,mBAAiG,CAAC;AAErJ,MAAM,MAAM,iCAAiC,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,6BAA6B,GAAG;IAG1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,iCAAiC,CAAC;IAC1C,gBAAgB,EAAE,OAAO,yBAAyB,CAAC;IACnD,2BAA2B,EAAE,OAAO,sCAAsC,CAAC;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAqDF,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,6BAAkC,GAC3C,2BAA2B,CAmE7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,6BAA6B,EACvC,YAAY,UAAO,GAClB,2BAA2B,CAM7B"}
@@ -17,16 +17,18 @@ const MEDIA_SERVICE_M8_COMPATIBLE_CONTRACTS = new Set([
17
17
  // move is additive (a minor here), not a major. A pre-tier 1.x service is
18
18
  // still refused: it cannot serve the authorization behavior this plugin's
19
19
  // guards assume.
20
- // The service version this client was actually exercised against: 3.0.1, the
21
- // hard-purge foreign-key patch on the media-sdk-m8 1.0.0 / media-service-m8
22
- // 3.0.0 shim-removal cut whose tree every schema here was diffed against. The
23
- // patch touches a maintenance code path only — nothing served changes — so
24
- // this value tracks the fleet's compose pins and gates nothing.
20
+ // The service version this client was actually exercised against: 3.0.2, on
21
+ // the media-sdk-m8 1.0.0 / media-service-m8 3.0.0 shim-removal cut whose tree
22
+ // every schema here was diffed against. 3.0.1 fixed the hard purge; 3.0.2 is
23
+ // the Debian patch layer, the UTC session clock and typing fixes (the upload
24
+ // reject reason hoisted into a named alias with the same five values).
25
+ // Nothing served changes, so this value tracks the fleet's compose pins and
26
+ // gates nothing.
25
27
  //
26
28
  // The gate is MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE below, which admits the
27
29
  // whole 2.x line plus 3.x, so a host pointed at the published 2.1.0 passes
28
30
  // preflight unchanged and this value never refuses it.
29
- export const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "3.0.1";
31
+ export const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "3.0.2";
30
32
  export const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "2.0.0";
31
33
  export const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "4.0.0";
32
34
  export const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = `>=${MEDIA_SERVICE_M8_MIN_SERVICE_VERSION} <${MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE}`;
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mano8/astro-media-m8",
3
- "version": "2.2.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",
@@ -25,6 +25,7 @@
25
25
  "registry.json",
26
26
  "registry/r",
27
27
  "README.md",
28
+ "CHANGELOG.md",
28
29
  "LICENSE"
29
30
  ],
30
31
  "exports": {
@@ -56,6 +57,7 @@
56
57
  "preview:dev": "vite --config fixtures/preview/vite.config.ts",
57
58
  "preview:build": "tsc -p fixtures/preview/tsconfig.json --noEmit && vite build --config fixtures/preview/vite.config.ts",
58
59
  "verify:fleet-gates": "node scripts/verify-fleet-gates.mjs",
60
+ "verify:lock-integrity": "node scripts/verify-lock-integrity.mjs",
59
61
  "verify:registry-consumer": "node scripts/verify-registry-consumer.mjs",
60
62
  "verify:registry-drift": "node scripts/verify-registry-drift.mjs",
61
63
  "verify:starter-routes": "node scripts/verify-starter-routes.mjs",
@@ -66,12 +68,12 @@
66
68
  "test:unit": "vitest run"
67
69
  },
68
70
  "dependencies": {
69
- "@mano8/astro-ui-m8": "^1.5.1"
71
+ "@mano8/astro-ui-m8": "^1.5.2"
70
72
  },
71
73
  "peerDependencies": {
72
74
  "@astrojs/react": "^6.0.1",
73
75
  "@astrojs/starlight": "^0.41.3",
74
- "@mano8/astro-auth-m8": "^2.6.0",
76
+ "@mano8/astro-auth-m8": "^2.7.1",
75
77
  "@tanstack/react-query": "^5.102.8",
76
78
  "astro": "^7.0.9",
77
79
  "react": "^18.0.0 || ^19.0.0",
@@ -91,7 +93,7 @@
91
93
  "@astrojs/starlight": "^0.41.10",
92
94
  "@eslint-react/eslint-plugin": "^5.18.6",
93
95
  "@eslint/js": "^10.0.1",
94
- "@mano8/astro-auth-m8": "^2.6.0",
96
+ "@mano8/astro-auth-m8": "^2.7.1",
95
97
  "@tanstack/react-query": "^5.102.8",
96
98
  "@tanstack/react-table": "^8.21.3",
97
99
  "@types/node": "^26.4.0",
@@ -115,7 +117,7 @@
115
117
  },
116
118
  "mediaServiceM8": {
117
119
  "contract": "media-service-m8@1.1",
118
- "testedServiceVersion": "3.0.1",
120
+ "testedServiceVersion": "3.0.2",
119
121
  "serviceVersionRange": ">=2.0.0 <4.0.0"
120
122
  }
121
123
  }