Files
summercms/.planning/phases/10-admin-vue-spa/10-DISCUSSION-LOG.md
2026-09-26 23:21:43 +02:00

4.1 KiB

Phase 10: Admin Vue SPA - Discussion Log

Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.

Date: 2026-09-26 Phase: 10-admin-vue-spa Areas discussed: Packaging & serving, UI kit & look, Types & relation options, Session & UX details


Packaging & serving

Option Description Selected
summercms.go/admin, embedded Vite project in framework repo, dist embedded and served by the binary ✓
summercms.go/admin, served separately Static deploy, CORS
fonoteka.go/admin SPA in the app repo

User's choice: Embedded, with the admin path configurable per project (e.g. /plytadmin, /manage) for security, as in WinterCMS.

Option Description Selected
Commit dist go build stays pure Go, drift check ✓
Build via summer build dist gitignored, Node needed at every build

User's choice: Commit dist, after clarification. The user asked twice whether plugin changes (and Winter's partial field, addJs/addCss) need a rebuild. Resolved: they need a Go binary rebuild (plugin assets are embedded), never a framework SPA Node rebuild once the 10.1 extension point exists; Node is only for framework SPA changes.

Option Description Selected
Both SPA and API move with backend.uri Nothing reveals the admin location ✓
Only the SPA moves Fixed /_admin/api/v1

User's choice: Both move, conditional on it being safe; confirmed non-breaking (no external admin API consumer yet).

Option Description Selected
Seam now, build later Renderer registry + unsupported fallback now ✓
Build it in Phase 10 Assets, widgets, partials now
Only AdminAssets now

User's choice: Seam now, full implementation in Phase 10.1.


UI kit & look

The user generated three directions in claude.ai/design from a prompt Claude wrote, and chose Direction C v2 (handoff zip reviewed and copied to design/).

Question Options Selected
Mock vs real YAML Real YAML only / Extend Płytarium YAML Real YAML only
Nav icons Lucide + Winter map / Lucide only / Winter names mapped Lucide + Winter map
Format badge icons Plain text now / Badge column now Plain text now
Per-controller copy Config keys + generic fallback / Generic only User asked for the best solution beyond Winter's toolbar partial; Claude proposed messages: with CLDR plural forms chosen client-side via Intl.PluralRules plus declarative toolbar.buttons; locked

Types & relation options

Question Options Selected
OpenAPI source Framework-owned admin doc / Fonoteka's doc Framework-owned admin doc
Record typing Generic schema-driven / Per-controller DTOs Generic schema-driven
Relation field options Options endpoint / Embed in schema / Hybrid Options endpoint
Relation save payload Field name with ids / Raw columns Field name with ids

Session & UX details

Question Options Selected
Token storage httpOnly cookie / sessionStorage bearer / localStorage bearer httpOnly cookie
SPA chrome strings Server phrasebook bundle / Bundled in SPA Server phrasebook bundle
Extras in scope Settings screen / Filter bar / Playwright e2e Settings screen, Filter bar

Claude's Discretion

State management, router, HTTP client, dev loop, messages vocabulary and default wording, refresh timing, per-page options, dirty-form handling, redirects, removal of admin paths from the fonoteka OpenAPI doc, package layout.

Deferred Ideas

  • Phase 10.1 runtime extension point (AdminAssets, type: widget, type: partial, custom toolbar actions, dev-mode disk assets)
  • Ctrl+K command palette
  • Badge/icon column type
  • Playwright e2e for the admin SPA
  • User/media plugin admin navigation