- Represent
FieldValue.bytesasDatainstead of a base64String(#467) - Add
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 (#466, #473) - Add
VALIDATEtoReference.Actionfor CloudKit Web Services reference dictionaries (#464) - Consume rotated web auth tokens from the
X-Apple-CloudKit-Web-Auth-Tokenresponse header via a newTokenManager.didReceiveRotatedWebAuthToken(_:)requirement, defaulted to a no-op so existing conformances keep compiling (#462, #463) - Model the zone payload fields confirmed live in #444:
ZoneInfo.zoneType(a closedZoneTypeenum that throwsConversionError.unrecognizedZoneTypeon unknown wire values) andZoneInfo.deleted, so change feeds surface tombstones (#444) - Fix
ownerRecordNamenever decoding on zone payloads —ZoneIDread the wire key asownerName, so shared-zone owners were alwaysnil(#444) - Add an optional
zoneID:parameter tocreateRecord,updateRecord,deleteRecord, anduploadAssets, so writes and asset uploads can target custom and shared zones (#454) - Round
[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 list - Extract the shared CloudKit credential configuration glue into a separate
MistKitConfigurationpackage and converge the examples on typed configuration keys (#407, #455) - MistDemo: expose
zoneName/zoneOwneron the web query panel and add zone-aware writes plus a live shared-zone round-trip phase (#438, #453, #454) - 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 (#447) - Add a repeatable release runbook, address code review fixes, coverage, and lint tooling, and fix the MistDemo Integration static build for Swift 6.4 (#460, #461, #475)
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-beta.4...1.0.0-beta.5
- Add changes/database and changes/zone endpoints; deprecate zones/changes (#401, #47, #46) by @leogdion in #429
- modifyZones per-zone failures (#431) + zones/changes metaSyncToken (#430) by @leogdion in #443
- Add confirmed zone metadata (syncToken, atomic) to zone schemas (#386) by @leogdion in #427
- Add custom/shared zone support to the query path (#146) by @leogdion in #426
- Add records/resolve and records/accept share operations (#41, #42) by @leogdion in #428
- Remove deprecated API, model server error codes, refactor FieldValue conversion, add cloud toolchain (#424, #421, #378, #358, #295) by @leogdion in #424
- Add phone-number support to MistDemo web users/discover (#398, #399) by @leogdion in #425
- Clear two Linux build warnings (#433) by @leogdion in #442
- Xcode 26.6 / simulator 26.5, and Swift 6.4 in the ubuntu matrix by @leogdion in #432
- Add Xcode 27 / OS 27.0 platform lanes alongside the 26.x lanes by @leogdion in #434
- Cancel superseded runs on the five unguarded workflows by @leogdion in #435
- Beta.4 housekeeping: CodeFactor removal, example subrepo/CI pins (Swift 6.4 nightly), sharee auth-tokens, custom-zone query hardening (#445), CelestraCloud Swift 6.4 migration, and BushelCloud CodeQL drop by @leogdion in https://github.com/brightdigit/MistKit/commit/c5a4cd04f9512964596411c80589984d24b4e1b8
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-beta.3...1.0.0-beta.4
- Add documented request options to query/modify/changes (#383 #384 #385) by @leogdion in #412
- Validate complex/list response type tags against value shape (#376) by @leogdion in #411
- Reduce cyclomatic complexity in
FieldValue+Codable, drop lint disable (#154) by @leogdion in #414
- Remove vendored ConfigKeyKit subrepo; depend on it remotely by @leogdion in #417
- Adopt configkeykit in CelestraCloud by @leogdion in #406
- Skip windows-2025 Swift 6.1/6.2 in CI matrix (MSVC 14.51 STL needs Clang 20) by @leogdion in #418
- Drop obsolete scheme input from example workflows (#403) by @leogdion in #413
- Removing Scheme from Workflow by @leogdion in #404
- Fix MistDemoApp build: explicit inits for
NoteEditView&RecordDetailViewby @leogdion in #420 - docs(mistdemo): note Apple 2FA "Allow shows no code" workaround by @leogdion in #422
- Docs: record content-based CloudKit subscription uniqueness finding (#387) by @leogdion in #416
- Docs: APNs token endpoints route under
/device/not/database/(#382) by @leogdion in #415 - Small Correction by @leogdion in #355
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-beta.2...1.0.0-beta.3
- Push Notifications & Subscriptions epic —
listSubscriptions,lookupSubscriptions,modifySubscriptions,createAPNsToken,registerAPNsTokenby @leogdion in #381
- Zone API:
createZone,deleteZone,fetchAllZoneChangesby @leogdion in #367 list-zones,modify-zones, discover, and validate by @leogdion in #368
- Implement
assets/rereferenceendpoint and API by @leogdion in #393
- Auto-chunking conveniences for batch operations (
lookupAllRecords,discoverAllUserIdentities(lookupInfos:batchSize:)) by @leogdion in #389
- Tag and validate ambiguous
FieldValuescalar types (TIMESTAMP,BYTES,DOUBLE) by @leogdion in #377 - Make response→domain conversion failures loud; add
RecordResultby @leogdion in #372 - Pre-1.0.0 correctness & safety hardening by @leogdion in #357
- Style & error audit: explicit import access + scoped flake gates by @leogdion in #363
- Scaffold MistDemo (CLI + App + Web) for v1.0.0-beta.2 endpoints by @leogdion in #371
- Wire landed MistKit endpoints into the MistDemo web app by @leogdion in #396
setup-mistkit: pin to resolved revision by @leogdion in #380- Enable MistDemo integration workflow on
claude/**branches by @leogdion in #374
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-beta.1...1.0.0-beta.2
- Add query pagination support with continuation markers by @leogdion in #306
- Add operation classification and batch sync result tracking by @leogdion in #296
paginationLimitExceedednow carries accumulated records by @leogdion in #326
- Refactor AuthenticationMiddleware so each Authenticator applies itself by @leogdion in #294
- Strengthen environment and database configuration validation by @leogdion in #293
- Add public + web-auth user-identity endpoints (
fetchCaller,discoverAllUserIdentities,lookupUsersByEmail,lookupUsersByRecordName) by @leogdion in #315
- Improve error handling: typed TokenManagerError and safe RecordOperation conversion by @leogdion in #305
- Move CloudKitResponseType default implementations to protocol extension by @leogdion in #292
- Replace custom AsyncChannel with swift-async-algorithms by @leogdion in #280
- MistDemo: --database flag + demo-errors command by @leogdion in #282
- Refactor IntegrationTestRunner into protocol-based phase pipeline by @leogdion in #283
- MistDemo improvements: test split, CRUD, auth fix, native app by @leogdion in #271 / #273
- Interactive MistDemo: web toggle + native app refresh by @leogdion in #332
- First draft revision of docs by @leogdion in #268
- Docs refresh + CI fixes by @leogdion in #309
- Test suite improvements for v1.0.0-beta.1 by @leogdion in #286 / #287
- CI Updates for May 2026 by @leogdion in #277
- Fail lint job when any command fails, not only in STRICT mode by @leogdion in #303
- Fix CI failures + review nits from PR #298 by @leogdion in #322
- Add MistDemo-Integration workflow for live CloudKit runs by @leogdion in #345
- v1.0.0-beta.1 follow-ups + CI fixes by @leogdion in #343
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-alpha.5...1.0.0-beta.1
- Add lookupZones, fetchRecordChanges, and uploadAssets operations by @leogdion in #204
- Fix QueryFilter IN/NOT_IN serialization by @leogdion in #205
- Migrate server-side CloudKit tutorial content by @leogdion in #248
Full Changelog: https://github.com/brightdigit/MistKit/compare/1.0.0-alpha.4...1.0.0-alpha.5