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