What's Changed
- fix(database): disable prepared statements to stop cross-query result mixups by @ridafkih in #610
- fix(caldav): write VTIMEZONE and isolate unreadable resources by @ridafkih in #604
- fix(ics): recover event-level timezones instead of failing whole feeds by @ridafkih in #606
- feat(database): declare the calendar sync-range checks in the schema by @ridafkih in #611
- fix(api): return 400 for recurrence budget errors on all event reads by @ridafkih in #590
- fix: cap the error and UID arrays carried on sync wide events by @ridafkih in #591
- ci: run checks on pull requests to any base branch by @ridafkih in #607
- fix(sync): unify supersession on a preempting waiter by @ridafkih in #596
- fix(database): declare the live constraints in schema metadata by @ridafkih in #592
- fix: stop Google deletes doubling and hiding rate-limit usage by @ridafkih in #597
- perf(calendar): skip recurring series whose UNTIL precedes the window by @ridafkih in #594
- fix(api): record configured sync ranges for on-demand ICS ingest by @ridafkih in #595
- test(database): execute the migration runner against postgres in CI by @ridafkih in #598
- fix(database): seed the coverage upgrade test before the check exists by @ridafkih in #612
Full Changelog: v2.14.6...v2.14.7