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.