What's Changed
- feat(sync): model-check the setup handshake, fix the crossing-ceremony dead end by @matthiasn in #4753
- fix(sync): release the relaunch target once, not per launcher by @matthiasn in #4755
- fix(sync): AI configuration changes are owed until the outbox takes them by @matthiasn in #4754
- fix(sync): deletions stick across purges, retypes, restores and backfill by @matthiasn in #4756
- feat(relationships): check-in page wears the task page's header by @matthiasn in #4758
- fix(ai): hide cost pills with no reported cost, bill the transcript correction with its transcript by @matthiasn in #4757
- fix(sync): repair instead of giving up — catch-up, settings, undecodable and oversized messages by @matthiasn in #4759
- fix(sync): repair legacy rows without asking — clockless rows, unstamped flags, fallback count by @matthiasn in #4760
- test(sync): verify two devices that start the emoji check at each other, against Dendrite by @matthiasn in #4763
- feat(relationships): check-in recorder and form match the rest of the app by @matthiasn in #4761
- fix(sync): messages without a counter are delivered by @matthiasn in #4764
- fix(sync): current builds repair what old builds left by @matthiasn in #4762
- fix(sync): removals and repairs reach every device by @matthiasn in #4767
- fix(sync): sessions, rooms and trust recover by @matthiasn in #4768
- fix(sync): ordering and restores hold by @matthiasn in #4769
- feat(speech): level bars under the orb and the meter in every recorder by @matthiasn in #4765
- feat(sync): AI configurations carry vector clocks for repair by @matthiasn in #4770
- fix(github): pull request details scroll to their end and show screenshots by @matthiasn in #4772
- feat: one elapsed-time format, 00:42, for every clock by @matthiasn in #4771
- feat(relationships): the check-in form is built like the app's forms by @matthiasn in #4766
- chore(release): 1.1.52 by @matthiasn in #4774
Full Changelog: 1.1.51+4439...1.1.52+4440