What's Changed
- test: read German modal passives as planned work in claim matching by @matthiasn in #4300
- fix(goals): allow recovering and achieved as words in goal reports by @matthiasn in #4301
- test(goals): give compaction wakes production's forced report retry by @matthiasn in #4302
- fix(daily-os): tell the drafter an open-window plan cannot be empty by @matthiasn in #4303
- fix(query): tolerate invalid JSON escapes in model answers by @matthiasn in #4304
- test: read more German deferrals and claim-match the workflow identified ban by @matthiasn in #4305
- docs: record the 2026-09-16 full-gym baselines for three models by @matthiasn in #4306
- fix(ai): recover forced tool retries on models that answer in prose by @matthiasn in #4307
- docs: record the 2026-09-16 full-catalog gym results by @matthiasn in #4309
- fix(query): escape raw control characters in model answers by @matthiasn in #4310
- fix(gym): retry a transient provider preflight failure by @matthiasn in #4308
- feat(nav): make the Navigate launcher the only mobile navigation by @cyberk1ng in #4311
- test(query): let a time edit restate the field it leaves unchanged by @matthiasn in #4312
- fix(daily-os): link plan blocks to their tasks and state the day's edges by @matthiasn in #4313
- fix(daily-os): stop losing drafts to a blank day id and an undocumented reason by @matthiasn in #4314
- feat(daily-os): lay out overlapping blocks on the Day timeline by @cyberk1ng in #4316
- feat(daily-os): let a plan block state the minutes it leaves for later by @matthiasn in #4315
- fix(daily-os): recover a draft from the parts models get wrong by @matthiasn in #4318
- fix(daily-os): keep the timeline block stripe inside the card's corners by @cyberk1ng in #4319
- chore(release): 1.1.17 by @matthiasn in #4320
Full Changelog: 1.1.16+4395...1.1.17+4396