docs(10): capture phase context
This commit is contained in:
90
.planning/phases/10-admin-vue-spa/10-DISCUSSION-LOG.md
Normal file
90
.planning/phases/10-admin-vue-spa/10-DISCUSSION-LOG.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user