91 lines
4.1 KiB
Markdown
91 lines
4.1 KiB
Markdown
# 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
|