docs: insert Phase 12.2 admin form fields with deferred binding (v0.1.1)

This commit is contained in:
Jakub Zych
2026-10-02 14:36:41 +02:00
parent 6649763590
commit 44526f0bca
2 changed files with 25 additions and 3 deletions

View File

@@ -654,6 +654,27 @@ Plans:
Plans:
- [ ] TBD (run /gsd-plan-phase 12.1 to break down)
### Phase 12.2: Admin form fields: date, file upload, relation editing with deferred binding (INSERTED)
**Goal:** A plugin's admin forms cover the three gaps a downstream project on SummerCMS v0.1 hit: a date/datetime field, a file upload field, and creating, editing and deleting related records inside the parent form (WinterCMS RelationController parity). Uploads and related-record changes on a record that is not saved yet use Winter-like deferred binding: they are held against a session key and committed with the parent's first save, or discarded with it.
**Requirements**: TBD
**Depends on:** Phase 9 (cabana form schema and relation-manager), Phase 12 plan 12-01 (`lagoon/attach` public URLs, webp, image-dimension guard)
**Repos:** summercms.go only (`modules/cabana`, `modules/lagoon/attach`, the admin SPA); framework READMEs and `docs/` updated in the same change
**Release:** ships as tag v0.1.1
**Ordering:** urgent; independent of Phase 12.1 and Phase 13, and Phase 12.1's relation managers can use it
**Success Criteria** (what must be TRUE):
1. `fields.yaml` accepts `type: datepicker` with Winter's `mode` (date, datetime, time) and stores date, timestamp and time columns without a plugin defining its own date types.
2. `type: fileupload` handles `attachOne` and `attachMany` relations: upload with size and MIME limits from the field config, image preview and thumbnail, remove, and reorder for `attachMany`. It works on both saved and unsaved records.
3. The relation manager creates, updates and deletes `hasMany` (and `belongsToMany` with pivot) related records in a modal driven by the related model's `fields.yaml`, alongside the existing link and unlink. Every child endpoint is scoped to its parent record, so a child of another parent can be neither read nor changed.
4. Deferred binding: on an unsaved parent, uploads and related-record changes bind to a session key, are committed in the parent's create transaction, and are discarded with the session. Orphaned deferred bindings and their files are purged.
5. The new code has unit tests, delivered in the phase's last plan, and the docs checker passes.
**Plans:** 0 plans
Plans:
- [ ] TBD (run /gsd-plan-phase 12.2 to break down)
### Phase 13: Płytarium API — wishlist, notifications, CSV, credentials, public routes
**Goal**: The remaining core API surface — wishlist, notifications, CSV import/export, per-user/org credentials, and onboarding/public/invitation routes — is ported with byte-compatible shapes and their own public rate-limit buckets.

View File

@@ -5,12 +5,12 @@ current_phase: 12
current_phase_name: Płytarium API — Collections and Albums
status: executing
stopped_at: Completed 12-03-PLAN.md
last_updated: "2026-10-02T11:18:14.935Z"
last_updated: "2026-10-02T12:36:15.774Z"
last_activity: 2026-10-02
last_activity_desc: Phase 12 execution started
state_head: 6f37a3782f59f1d786016197f485c6d8f466e38e
state_head: 66497635906aea588e28ba6d34afc6576423a662
progress:
total_phases: 20
total_phases: 21
completed_phases: 10
total_plans: 101
completed_plans: 99
@@ -168,6 +168,7 @@ Progress: [██████░░░░] 60%
- Phase 11.3 inserted after Phase 11.2: Newsletter plugin and signup on summercms.io (split out of the original 11.2)
- Phase 11.3 deferred to the backlog as Phase 999.1 (2026-10-02): the Journal plugin and delivering Płytarium take priority
- Phase 12.1 inserted after Phase 12: User plugin admin screens (sm-user-plugin): Users, User Groups, Organisations admin, before Phase 15 cutover
- Phase 12.2 inserted after Phase 12: Admin form fields: date picker, file upload and relation-manager create/update/delete with Winter-like deferred binding (RelationController parity); framework only, ships as tag v0.1.1; blocks a downstream project on v0.1 (URGENT)
### Decisions