2 Commits
2 changed files with 26 additions and 22 deletions
+4 -2
View File
@@ -33,8 +33,10 @@ Status: TODO / IN PROGRESS / DONE / BLOCKED.
`FavouriteFuelPriceIntent`: TOP favourite per fuel (first in the manual `FavouriteFuelPriceIntent`: TOP favourite per fuel (first in the manual
Favourites order — `SiriCheapestLookup.topFavourite`, refresh-vs-dump with Favourites order — `SiriCheapestLookup.topFavourite`, refresh-vs-dump with
offline cached-snapshot fallback); no location required (distance shown only offline cached-snapshot fallback); no location required (distance shown only
when the saved fix exists). Also `DirectionsToFavouriteFuelIntent` (Maps when the saved fix exists). `DirectionsToFavouriteFuelIntent` (Maps
hand-off, station announced first). 4+4 App Shortcuts (generic + per-fuel). hand-off, station announced first) stays in code but carries no voice
phrases — every favourite price card has the interactive Directions button
(`6d7254e`), and the voice slots went to Directions-to-Cheapest (`8a4c472`).
*DONE — favourites already carried station snapshots, so no `StationEntity` *DONE — favourites already carried station snapshots, so no `StationEntity`
dependency.* dependency.*
- [ ] **Siri: on-screen awareness (View Annotations + StationEntity)** — iOS - [ ] **Siri: on-screen awareness (View Annotations + StationEntity)** — iOS
+22 -20
View File
@@ -578,41 +578,43 @@ struct FuelBoardShortcuts: AppShortcutsProvider {
systemImageName: "star.fill" systemImageName: "star.fill"
) )
// Directions — only the FAVOURITE directions carry App Shortcut // Directions — per-fuel CHEAPEST directions carry the App Shortcut
// phrases: Apple caps app shortcuts at 10 (the metadata processor // phrases (the user's "directions to the cheapest X" asks). Apple caps
// hard-fails past that), and the per-fuel cheapest-price + favourite // app shortcuts at 10 (the metadata processor hard-fails past that);
// price/directions entries cover the user's actual asks. The cheapest- // the favourite-directions path no longer needs phrases because every
// directions and generic favourite intents below remain in code — // favourite price card carries the interactive Directions button
// still runnable from the Shortcuts action list, just without Siri // (OpenDirectionsIntent, zero slots) — so the favourite directions
// phrases. Phrases use direction verbs ("directions to", "get // intents below remain in code, still runnable from the Shortcuts
// directions") so they never collide with the price shortcut phrases. // action list and via the card button, just without Siri phrases.
// Phrases use direction verbs ("directions to", "get directions") so
// they never collide with the price shortcut phrases.
AppShortcut( AppShortcut(
intent: DirectionsToFavouriteFuelIntent(fuel: .e10), intent: DirectionsToCheapestFuelIntent(fuel: .e10),
phrases: [ phrases: [
"Ask \(.applicationName) for directions to my favourite unleaded station", "Ask \(.applicationName) for directions to the cheapest unleaded near me",
"Get directions to my favourite petrol station \(.applicationName)", "Get directions to the cheapest petrol near me \(.applicationName)",
], ],
shortTitle: "Directions to Favourite Unleaded", shortTitle: "Directions to Cheapest Unleaded",
systemImageName: "map" systemImageName: "map"
) )
AppShortcut( AppShortcut(
intent: DirectionsToFavouriteFuelIntent(fuel: .e5), intent: DirectionsToCheapestFuelIntent(fuel: .e5),
phrases: [ phrases: [
"Ask \(.applicationName) for directions to my favourite premium station", "Ask \(.applicationName) for directions to the cheapest premium near me",
"Get directions to my favourite super unleaded station \(.applicationName)", "Get directions to the cheapest super unleaded near me \(.applicationName)",
], ],
shortTitle: "Directions to Favourite Premium", shortTitle: "Directions to Cheapest Premium",
systemImageName: "map" systemImageName: "map"
) )
AppShortcut( AppShortcut(
intent: DirectionsToFavouriteFuelIntent(fuel: .diesel), intent: DirectionsToCheapestFuelIntent(fuel: .diesel),
phrases: [ phrases: [
"Ask \(.applicationName) for directions to my favourite diesel station", "Ask \(.applicationName) for directions to the cheapest diesel near me",
"Get directions to my favourite diesel station \(.applicationName)", "Get directions to the cheapest diesel near me \(.applicationName)",
], ],
shortTitle: "Directions to Favourite Diesel", shortTitle: "Directions to Cheapest Diesel",
systemImageName: "map" systemImageName: "map"
) )
} }