I sat down and did the unglamorous thing: opened the web app and the native iPhone app side by side and wrote down every feature the first had that the second didn’t. Fourteen gaps. Weather only showed a temperature, not the hourly forecast with rain chance and sunrise/sunset the web version already had. Leads on the Ventures row were view only on the phone, when the web app let me confirm or delete each one. The Workbench context integration board wasn’t rendered at all, even though the API was already sending the data, the SwiftUI model had just never grown a card for it.
By the 27th, 13 of the 14 were closed. The calendar week view became a real hour by day time grid instead of a list. Sun mode landed, a daylight readable contrast lift with the grid and scanlines switched off, which meant making roughly 250 colour token call sites dynamic without touching most of them individually. Quiet hours arrived too, 22:00 to 07:00 by default with wrap around handling, and a deliberate exception: calendar reminders still fire during quiet hours, because a meeting alert is not the same as a notification you can sleep through. DESK, the notes tab, got category filter chips and Project/Priority pickers on the compose sheet, both things the underlying data model already supported and nobody had wired up.
The one gap I left open on purpose was the DESK kanban board, because that deserved its own build rather than a bolt on during a parity sprint. That shipped separately.
Also this week: the JARVIS product page went live at /ospina-labs/jarvis/, dark HUD design and a sample data screen gallery, backed by a real public waitlist endpoint with its own rate limiting and a honeypot field.