What's Changed
- fix(sync): retry unsettled own counters without restarting by @matthiasn in #4498
- feat(provenance): add the signing core — canonical JSON, domain hashes, Ed25519 envelopes by @matthiasn in #4499
- spec(tla): model provenance envelope chains before building them by @matthiasn in #4501
- fix(sync): discover and repair lost final updates by @matthiasn in #4500
- fix(sync): protect the cursor before admitting limited SDK slices by @matthiasn in #4502
- fix(sync): recover exact attachments beyond the saved cursor by @matthiasn in #4503
- fix(tasks): make saved task filters reach every device by @matthiasn in #4506
- fix(sync): isolate mixed payload identities and verify fork successors by @matthiasn in #4508
- fix(sync): persist received settings atomically and retry failures by @matthiasn in #4507
- revert(sync): drop the limited-slice admission barrier (#4502) — unbreaks Matrix tests by @matthiasn in #4515
- fix(tasks): model-check checklist membership and stop stale writes and crashes losing items by @matthiasn in #4504
- fix(sync): resolve equal-stamp preference updates deterministically by @matthiasn in #4509
- ci: scope integration tests by path and drop build-only macOS/Android jobs by @matthiasn in #4518
- ci: drop the per-PR manual capture check by @matthiasn in #4520
- feat(design-system): roll the hour with the minutes in every time drum by @matthiasn in #4516
- chore(release): 1.1.28 by @matthiasn in #4521
Full Changelog: 1.1.27+4410...1.1.28+4411