Patina 0.5.17 brings Apple Calendar into the app as a native local source, gives the Home calendar widget more control, and smooths a handful of first-run, file-reading, and connection edges. The release is especially useful if your schedule lives partly in iCloud or the macOS Calendar app, or if you rely on Home as the quick daily view of what is happening.
If you're on 0.5.16, install 0.5.17 directly. Existing chats, files, connections, subscriptions, automations, and synced Home data carry over.
Patina can now connect to Apple Calendar through the system calendar permission on macOS. Once connected, Patina can read iCloud calendars and any other calendars visible in the Calendar app, then use them in briefings, digests, schedule questions, and upcoming-week checks.
The new Apple Calendar tool returns event times, titles, locations, calendar color metadata, attendees when available, and common video meeting links. It sits alongside Google Calendar, so users with both sources connected can still ask natural schedule questions without having to remember where each event lives.
The Connections screen now includes Apple Calendar health checks, and the app ships the required calendar usage description and entitlement so the system permission prompt appears cleanly.
Up Next Calendar Control
The Up Next widget now has a compact three-dot calendar picker. It stays tucked into the widget chrome at rest, then opens into a popover with grouped calendar rows, color swatches, checkmarks, and a stable Show All Calendars action.
Turning a calendar off hides its events from Up Next; turning it back on restores those events immediately. Patina keeps the full upcoming event window in memory, applies the selected-calendar filter, and then picks the next visible events, so hiding one noisy shared, family, work, or subscribed calendar reveals the next relevant events instead of leaving empty slots.
Calendar choices are saved locally. For people with multiple Google accounts connected, calendar labels include the account email where useful, making similarly named calendars like Personal, Work, Family, Holidays, and Birthdays easier to tell apart.
Home Dashboard
The weather card now gives a clear next action when Patina cannot use your current location. If location access has not been decided yet, Home can ask for permission from the card; if access was denied or restricted, it offers a direct path to system settings. Profile-location fallback still works for users who prefer not to share device location.
Files And Markdown
File detail pages now show a last-updated subtitle under the document title, so it is easier to tell whether an iCloud or background-sync update has landed.
The markdown renderer gets a spacing pass for headings, paragraphs, and compact metadata blocks.
Chat blockquotes now render as normal text instead of visually demoting draft copy with a quote rail. That keeps generated options and reusable snippets from looking like quoted evidence when the agent is simply drafting language for you.
First-Run And Connection Reliability
The onboarding handoff chat now materializes in the sidebar immediately, with a stable "Getting started" title and a running state while the hidden setup prompt is thinking. That prevents the first setup conversation from becoming hard to find if you navigate away before the hidden turn finishes.
Slack MCP OAuth token responses are now parsed in Slack's authed_user shape, including user access and refresh tokens. Slack error responses with ok: false surface the actual Slack error code instead of a generic malformed-response message.
Full Disk Access priming now touches a stable system TCC probe before the user TCC database and includes an additional Time Machine protected path. This gives macOS a better chance to show Patina in the Full Disk Access list before the user opens System Settings.
Fixes And Reliability
- Apple Calendar is exposed through connection setup tools, status tools, the agent prompt, and the client tool cache.
- Up Next event filtering preserves join links, locations, all-day labels, day grouping, meeting-prep actions, and deterministic fallback calendar colors.
- Empty calendar states now distinguish between "nothing on the calendar" and "no events on selected calendars."
- Calendar title shortening no longer leaves dangling connectors like "and", "&", "+", or "@" at the end of Home prompt pills.
- Markdown rendering is covered for readable headings, last-updated subtitles, and adjacent metadata line spacing.
- Onboarding handoff materialization is covered so hidden setup turns keep a visible sidebar row.
- Slack MCP OAuth parsing is covered for both successful
authed_user responses and ok:false token errors.