diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 392d81d..7c08b2e 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -113,7 +113,7 @@ Requirements for v1 (the Płytarium port). Each maps to roadmap phases. "User" b - [ ] **ADMIN-04**: Admin CRUD endpoints per controller expose extension hooks (listExtendQuery, formExtendQuery, formBeforeCreate, formBeforeUpdate, relationExtendManageQuery), and bulk delete runs each record's lifecycle hooks - [ ] **ADMIN-05**: A settings model binds to a settings screen through the same schema pipeline (search_use_typesense) - [x] **ADMIN-06**: A minimal Vue 3 + TypeScript SPA renders login, permission-gated navigation, lists, forms and the relation manager for Albums, Artists, Collections, Genres and Styles using generated types -- [ ] **ADMIN-07**: A plugin extends the compiled admin SPA without a Node rebuild: controller-declared JS/CSS is served from the plugin's embedded files under `{backend.uri}/assets/` and loaded when that controller opens (CSP `script-src 'self'`); `type: widget` fields mount plugin custom elements whose actions the SPA posts with the admin cookie and CSRF header, patching only the declared `fill` fields; `type: partial` form fields and a `config_list.yaml` `headerPartial` render server-side with `html/template` from a controller view model and display without any raw-HTML sink; and controllers register named toolbar actions. Unknown YAML keys, missing templates and unregistered actions fail boot. +- [x] **ADMIN-07**: A plugin extends the compiled admin SPA without a Node rebuild: controller-declared JS/CSS is served from the plugin's embedded files under `{backend.uri}/assets/` and loaded when that controller opens (CSP `script-src 'self'`); `type: widget` fields mount plugin custom elements whose actions the SPA posts with the admin cookie and CSRF header, patching only the declared `fill` fields; `type: partial` form fields and a `config_list.yaml` `headerPartial` render server-side with `html/template` from a controller view model and display without any raw-HTML sink; and controllers register named toolbar actions. Unknown YAML keys, missing templates and unregistered actions fail boot. ### Quality and cutover (QA) @@ -226,7 +226,7 @@ Which phases cover which requirements. Updated during roadmap creation. | ADMIN-04 | Phase 9 | Pending | | ADMIN-05 | Phase 9 | Pending | | ADMIN-06 | Phase 10 | Complete | -| ADMIN-07 | Phase 10.1 | Pending | +| ADMIN-07 | Phase 10.1 | Complete | | QA-01 | Phase 2 | Complete | | QA-02 | Phase 2 | Complete | | QA-03 | Phase 2 | Complete | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index 3442f11..6d045ac 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -474,7 +474,7 @@ Plans: 4. A controller registers named toolbar actions listed in `toolbar.buttons`; a click POSTs the action and toasts while `create` and `delete` keep their behaviour; unknown YAML keys, missing templates, unregistered actions and unknown permissions fail boot. 5. The Albums list shows a statistics strip scoped to the admin's collection, the Albums form shows a "Load from Discogs" widget whose stub fills Release year and Format, and a "Sync with Discogs" toolbar action toasts from its stub. -**Plans:** 3/4 plans executed +**Plans:** 4/4 plans executed Plans: @@ -488,7 +488,7 @@ Plans: - [x] 10.1-03-PLAN.md — Application: Albums stats strip, Discogs lookup widget stub, discogsSync toolbar stub, plugin assets and copy (fonoteka.go) **Wave 4** *(blocked on Wave 3 completion)* -- [ ] 10.1-04-PLAN.md — Unit tests last: Go and Vitest coverage, Albums acceptance, check-phase10.1.sh gate, security review and validation evidence (both repos) +- [x] 10.1-04-PLAN.md — Unit tests last: Go and Vitest coverage, Albums acceptance, check-phase10.1.sh gate, security review and validation evidence (both repos) ### Phase 11: Jobs, realtime and search infrastructure diff --git a/.planning/STATE.md b/.planning/STATE.md index a7101c2..e4fbc0f 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,17 +3,17 @@ gsd_state_version: "1.0" milestone: v1.0 current_phase: "10.1" current_phase_name: Runtime admin extension point -status: executing -stopped_at: Completed 10.1-03-PLAN.md -last_updated: "2026-09-29T00:29:12.078Z" +status: verifying +stopped_at: Completed 10.1-04-PLAN.md +last_updated: "2026-09-29T01:15:04.585Z" last_activity: 2026-09-28 last_activity_desc: Phase 10.1 execution started -state_head: 0f6c10c4e3d728a81b07b98fd4388d0ccbfbcbf8 +state_head: 0ddf7f8f68ed31d3b16ccc734aa480da1200224e progress: total_phases: 19 completed_phases: 9 total_plans: 78 - completed_plans: 77 + completed_plans: 78 milestone_name: milestone --- @@ -30,7 +30,7 @@ See: .planning/PROJECT.md (updated 2026-09-16) Phase: 10.1 (Runtime admin extension point) — EXECUTING Plan: 4 of 4 -Status: Ready to execute +Status: Phase complete — ready for verification Last activity: 2026-09-28 — Phase 10.1 execution started Progress: [██████░░░░] 60% @@ -132,6 +132,7 @@ Progress: [██████░░░░] 60% | Phase 10.1 P01 | 25min | 3 tasks | 33 files | | Phase 10.1 P02 | 17 min | 3 tasks | 29 files | | Phase 10.1 P03 | 11min | 3 tasks | 16 files | +| Phase 10.1 P04 | 42min | 3 tasks | 32 files | ## Accumulated Context @@ -387,6 +388,6 @@ Items acknowledged and carried forward from previous milestone close: ## Session Continuity -Last session: 2026-09-29T00:28:50.425Z -Stopped at: Completed 10.1-03-PLAN.md +Last session: 2026-09-29T01:15:04.213Z +Stopped at: Completed 10.1-04-PLAN.md Resume file: None