Write-ups from building AI Cockpit for macOS, iOS and watchOS.
Mostly defects: what broke, what actually caused it, and what was done about it.
Written for people who work on the same platforms — you should get something out
of these whether or not you ever install the app.
A Date field in a Codable struct joined the
synthesized Equatable, so every poll looked like a change and the
app asked WidgetKit to reload thousands of times a day — against a documented
allowance of 40 to 70. WidgetKit throttles silently, and the tile stops moving.
How the comparison went wrong, why the test that covered it was green anyway,
and why the fix is a projection rather than a custom ==.