Skip to content

Adopt the calendar and reminders App Intent schemas - #5660

Open
bgoncal wants to merge 4 commits into
feature/xcode-27-runnersfrom
siri-calendar-reminders-schemas
Open

Adopt the calendar and reminders App Intent schemas#5660
bgoncal wants to merge 4 commits into
feature/xcode-27-runnersfrom
siri-calendar-reminders-schemas

Conversation

@bgoncal

@bgoncal bgoncal commented Sep 6, 2026

Copy link
Copy Markdown
Member

AI Policy

Select exactly one option that describes AI usage in this contribution:

  • I have not used AI for this contribution.
  • AI assistance was used for this contribution.
  • AI fully generated the code for this contribution, but I've reviewed and understood it before submitting and will respond without AI during review.

Summary

Apple Intelligence can only reason about an app's data when the app describes it in a shape the system already knows. Home Assistant has calendars and to-do lists, but exposes them as ordinary app entities, so Siri can match a name and nothing more.

This adopts two App Intent schemas:

  • Calendar — calendars and their events, with start and end, all-day, location and notes.
  • Reminders — to-do lists and their items, with due date, completion and notes.

Fields Home Assistant does not carry are left empty rather than guessed at. An event has no attendees, organizer, alarms or travel time; a to-do item has no flag, tags, URLs or location trigger. Those types still exist because the schema fixes the shape of the property, but they are never populated.

The existing HACalendarAppEntity is left alone. Annotating it in place would raise the availability of its query, its three intents and the Spotlight extension to iOS 27, so the schema types are separate.

Screenshots

No new UI.

Link to pull request in Documentation repository

Documentation: home-assistant/companion.home-assistant#

Any other notes

Based on #5665, which moves CI to Xcode 27 — the iOS 27 SDK these types need. It will retarget to main once that merges.

@bgoncal
bgoncal force-pushed the siri-calendar-reminders-schemas branch 2 times, most recently from 25fc134 to 99dea09 Compare September 6, 2026 18:24
@bgoncal
bgoncal changed the base branch from main to feature/xcode-27-runners September 6, 2026 18:24
@bgoncal
bgoncal marked this pull request as ready for review September 6, 2026 19:35
Apple Intelligence can only act on an app's data when the app describes it in
the shape the system already knows. Home Assistant has calendars and to-do
lists, but exposed them as ordinary app entities, so Siri could not reason
about an event's time or a reminder's due date.

This maps calendars and calendar events onto the calendar schema, and to-do
lists and their items onto the reminders schema. Fields Home Assistant does
not carry are left empty rather than guessed at.

The existing calendar entity is left untouched: annotating it would raise the
availability of its query, its three intents and the Spotlight extension to
iOS 27.
The schema entities describe Home Assistant's calendars and to-do lists, but
nothing could act on them: an entity without an intent has no entry point, so
Siri could match a name and go no further.

This adds the six intents the two domains define that Home Assistant can
actually back — create, update and delete for both events and reminders —
along with the `calendar/event/update` command, which the app did not wrap yet.

Creating a list or a section is left out: to-do lists come from integrations
and there is no service to create one, and the todo domain has no sections.

Fields Home Assistant does not carry are accepted and ignored rather than
folded into the note, so nothing the user did not dictate ends up on their
list. Events whose integration supplies no uid can be listed but not changed,
and say so instead of failing server-side.
The reminders schema has no read action — Apple only defines create, update
and delete — so listing a to-do list is a plain intent. It returns the entity
the update and delete intents take, so a Shortcut can read a list and act on
what it finds.

Cached calendar events are now indexed for Spotlight. Calendars and to-do
lists already reach the index as ordinary entities, so only events are added
here; indexing their schema counterparts would list the same thing twice. The
event indexer is separate because the entity is iOS 27 and holding one would
raise the whole indexer to match.
The availability branch for event indexing pushed reindex(reason:) from ten
to eleven, so it moves to its own method.
@bgoncal
bgoncal force-pushed the siri-calendar-reminders-schemas branch from 99dea09 to dd36961 Compare September 6, 2026 23:14
@codecov

codecov Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 466 lines in your changes missing coverage. Please review.
✅ Project coverage is 36.85%. Comparing base (9e03742) to head (dd36961).

Files with missing lines Patch % Lines
...lities/AppIntentSchemas/ReminderSchemaEntity.swift 0.00% 48 Missing ⚠️
...s/AppIntentSchemas/CalendarEventSchemaEntity.swift 0.00% 39 Missing ⚠️
...ities/AppIntentSchemas/CalendarSchemaSupport.swift 0.00% 34 Missing ⚠️
...ies/AppIntentSchemas/UpdateEventSchemaIntent.swift 0.00% 34 Missing ⚠️
...IntentSchemas/CalendarEventSchemaEntityQuery.swift 0.00% 29 Missing ⚠️
...ilities/AppIntentSchemas/RecurrenceRuleRRULE.swift 0.00% 29 Missing ⚠️
...ies/AppIntentSchemas/CreateEventSchemaIntent.swift 0.00% 27 Missing ⚠️
...ties/AppIntentSchemas/RemindersSchemaSupport.swift 0.00% 27 Missing ⚠️
.../AppIntentSchemas/UpdateReminderSchemaIntent.swift 0.00% 25 Missing ⚠️
Sources/Shared/API/HomeAssistantAPI+Calendar.swift 0.00% 20 Missing ⚠️
... and 16 more
Additional details and impacted files
@@                     Coverage Diff                      @@
##           feature/xcode-27-runners    #5660      +/-   ##
============================================================
- Coverage                     37.35%   36.85%   -0.51%     
============================================================
  Files                          1064     1084      +20     
  Lines                         73885    74272     +387     
============================================================
- Hits                          27603    27370     -233     
- Misses                        46282    46902     +620     
Files with missing lines Coverage Δ
...tilities/AppIntentSchemas/EventLocationCases.swift 0.00% <0.00%> (ø)
...ilities/AppIntentSchemas/EventSpanSchemaEnum.swift 0.00% <0.00%> (ø)
...p/Utilities/Spotlight/SpotlightEntityIndexer.swift 0.00% <0.00%> (ø)
...ppIntentSchemas/CalendarAttendeeSchemaEntity.swift 0.00% <0.00%> (ø)
...lities/AppIntentSchemas/CalendarSchemaEntity.swift 0.00% <0.00%> (ø)
...AppIntentSchemas/LocationTriggerSchemaEntity.swift 0.00% <0.00%> (ø)
...AppIntentSchemas/ReminderSectionSchemaEntity.swift 0.00% <0.00%> (ø)
...AppIntentSchemas/DeleteRemindersSchemaIntent.swift 0.00% <0.00%> (ø)
...s/AppIntentSchemas/CalendarSchemaEntityQuery.swift 0.00% <0.00%> (ø)
...ies/AppIntentSchemas/DeleteEventSchemaIntent.swift 0.00% <0.00%> (ø)
... and 16 more

... and 21 files with indirect coverage changes

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bgoncal bgoncal added the iOS beta Issues that occur on iOS betas label Sep 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed iOS beta Issues that occur on iOS betas

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant