Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Lume Pro users can start playback by voice and from Shortcuts: "Play in Lume", "Start in Lume", "Play in Lume" (next unwatched episode, resuming if started) and "Continue watching in Lume". Titles are matched by name against the active profile's unlocked playlists, with favorites/recents ranked first, then the active playlist, then exact names; Siri asks only on a tie. An unknown, restricted or Pro-locked title gets a spoken "not found" without opening the app.
Implementation
New
Lume/Services/Intents/holds the channel/movie/seriesAppEntitys and their queries (fresh background context on the catalog container,fetchLimit, ranking in memory, prefix-stripped display titles), the four intents,LumeShortcuts(phrases in the newAppShortcuts.xcstrings) and an in-memory pending slot (IntentRouter).perform()resolves throughWidgetLinkResolver, queues the request, then foregrounds the app;SiriIntentDraininMainTabViewplays it once the launch gate, profile picker and PIN pad are clear, re-checking against the now-active profile. If a player is already open, the stream is swapped in place (PlayerSwapRequests+PlayerSwapRequestHost, built onPlayerMediaSwapper; macOS viaMacPlayerWindowRouter.pendingMedia); Multi-View and the tvOS quick-switch close first. The cold-launch auto-sync waits while a Siri-started stream plays (SiriLaunchSyncDeferral). Settings on iOS gets a Pro-only Siri section (SiriTipView+ShortcutsLink).ContentRestriction.fromCatalogis extracted and now also used byWidgetSnapshotExporter.Decisions
PremiumFeature.siri): a free user gets the app plus the.siripaywall (it waits for an open player to close); the request replays only if they upgrade and is dropped on dismiss. Pro-locked playlists are never searchedrequestToContinueInForeground); 26+ continues directlySeriesEpisodeProgress.nextEpisodeand falls back to opening the series page;ProfileManageris registered viaAppDependencyManager; the PIN pad counts as a blocking sheet inScreenOccupancy; "Continue watching" while a player is open keeps the current playerTesting
linkdrejects the ad-hoc-signed app ("Unable to get teamId … requiresValidBundle"), so shortcuts fail with "Couldn't find AppShortcutsProvider" and the Siri tip row stays blankmain:MediaServerLocalizationTests,SportsHubStringsTests,SportsResolveCacheTests;TextEmbedderTestsneeds simulator language assetsIntentCatalogResolverTests,IntentEntityTests,PlayerSwapRequestsTests,ResumeSnapshotCheckTests,SiriLaunchSyncDeferralTests,SiriLocalizationTests,SiriSwapDecisionTests; extendedContentRestrictionTests,DeepLinkTests,WidgetSnapshotTestsPlatforms
maintoo (PremiumManager.purchase,AirPlayRouteButton,GlassEffectCompat); nothing from this branch