Summary
Extend MistDemo web create/update/delete (and asset upload) to honor a zone selection, building on ZoneSelector from #438 / #453.
Library conveniences already accept zoneID: ZoneID? = nil on createRecord / updateRecord / deleteRecord — the remaining gap is the demo request/backend/browser stack.
Scope
- Reuse
ZoneSelector on WebRequests.Create / Update / Delete (flat zoneName/zoneOwner wire format, same decode rules as query).
- Thread through
WebBackend / CloudKitService+WebBackend / mocks / WebServer+CRUD.
- Assets —
UploadAsset must carry the same zone; create-in-custom-zone after a default-zone upload fails at CloudKit.
- Browser UX — prefer reusing the query toolbar zone for writes (label clearly) over a second set of inputs; CloudKit JS writes use per-record
record.zoneID (saveRecords / deleteRecords), which is a different shape from query.
Out of scope
Depends on
Summary
Extend MistDemo web create/update/delete (and asset upload) to honor a zone selection, building on
ZoneSelectorfrom #438 / #453.Library conveniences already accept
zoneID: ZoneID? = niloncreateRecord/updateRecord/deleteRecord— the remaining gap is the demo request/backend/browser stack.Scope
ZoneSelectoronWebRequests.Create/Update/Delete(flatzoneName/zoneOwnerwire format, same decode rules as query).WebBackend/CloudKitService+WebBackend/ mocks /WebServer+CRUD.UploadAssetmust carry the same zone; create-in-custom-zone after a default-zone upload fails at CloudKit.record.zoneID(saveRecords/deleteRecords), which is a different shape from query.Out of scope
deleted,zoneTypeunmodeled andownerRecordNamenever decodes (confirmed live) #444 evidence caveats).Depends on
ZoneSelector+ query panel zone inputs)ownerRecordName) already onv1.0.0-beta.5