You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add Asset.download(using:), which fetches an asset's downloadURL from the CDN and returns the bytes, plus CloudKitError.missingAssetDownloadURL. fileChecksum turned out to be a server-minted identity token rather than a digest of the file, so no client-side checksum verification is offered — check Asset.size to guard against truncation (Verify downloaded asset bytes against Asset.fileChecksum #466, Verify asset downloads against fileChecksum #473)
Add an optional zoneID: parameter to createRecord, updateRecord, deleteRecord, and uploadAssets, so writes and asset uploads can target custom and shared zones (MistDemo: zone-aware writes (CRUD + assets) #454)
Round [Date] list elements and nested Location.timestamp values to whole milliseconds on the way out, matching the scalar path, and make the list conversion an exhaustive default-free switch so a new FieldValue case fails the build instead of writing an empty list
Documentation: add the "CloudKit as Your Backend" talk as a DocC article with its screenshots, plus new guides for request signing, field type polymorphism, deploying MistKit, and the two retrospectives (What CloudKit Got Wrong, What the AI Got Wrong); re-verify every existing catalog article against current source; link the guides and talk resources from the README; remove the top-level docs/ directory (Complete iOSDevUK Talk Material #447)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
What's Changed
FieldValue.bytesasDatainstead of a base64String(Change FieldValue.bytes from String to Data #467)Asset.download(using:), which fetches an asset'sdownloadURLfrom the CDN and returns the bytes, plusCloudKitError.missingAssetDownloadURL.fileChecksumturned out to be a server-minted identity token rather than a digest of the file, so no client-side checksum verification is offered — checkAsset.sizeto guard against truncation (Verify downloaded asset bytes against Asset.fileChecksum #466, Verify asset downloads against fileChecksum #473)VALIDATEtoReference.Actionfor CloudKit Web Services reference dictionaries (Add VALIDATE to Reference.Action enum based on CloudKit Web Services Documentation #464)X-Apple-CloudKit-Web-Auth-Tokenresponse header via a newTokenManager.didReceiveRotatedWebAuthToken(_:)requirement, defaulted to a no-op so existing conformances keep compiling (Web auth token rotation (X-Apple-CloudKit-Web-Auth-Token) is never consumed #462, Consume CloudKit web auth token rotation from response headers (#462) #463)deleted,zoneTypeunmodeled andownerRecordNamenever decodes (confirmed live) #444:ZoneInfo.zoneType(a closedZoneTypeenum that throwsConversionError.unrecognizedZoneTypeon unknown wire values) andZoneInfo.deleted, so change feeds surface tombstones (Zone payloads:deleted,zoneTypeunmodeled andownerRecordNamenever decodes (confirmed live) #444)ownerRecordNamenever decoding on zone payloads —ZoneIDread the wire key asownerName, so shared-zone owners were alwaysnil(Zone payloads:deleted,zoneTypeunmodeled andownerRecordNamenever decodes (confirmed live) #444)zoneID:parameter tocreateRecord,updateRecord,deleteRecord, anduploadAssets, so writes and asset uploads can target custom and shared zones (MistDemo: zone-aware writes (CRUD + assets) #454)[Date]list elements and nestedLocation.timestampvalues to whole milliseconds on the way out, matching the scalar path, and make the list conversion an exhaustivedefault-free switch so a newFieldValuecase fails the build instead of writing an empty listMistKitConfigurationpackage and converge the examples on typed configuration keys (Create MistKitConfiguration package for shared CloudKit config glue #407, Extract MistKitConfiguration; converge all three examples on typed config keys #455)zoneName/zoneOwneron the web query panel and add zone-aware writes plus a live shared-zone round-trip phase (MistDemo web UI: add zoneName/zoneOwner inputs to query panel #438, MistDemo web: zoneName/zoneOwner on query panel (#438) #453, MistDemo: zone-aware writes (CRUD + assets) #454)docs/directory (Complete iOSDevUK Talk Material #447)Full Changelog: 1.0.0-beta.4...1.0.0-beta.5
This discussion was created from the release 1.0.0-beta.5.
All reactions