Repository navigation
feat(widgets): Add Control Center controls and interactive widgets - #2800
Draft
karlitschek wants to merge 3 commits into
Draft
karlitschek wants to merge 3 commits into
karlitschek wants to merge 3 commits into
Conversation
…ect file Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Frank Karlitschek <karlitschek@users.noreply.github.com>
Control Center, Lock Screen and Action button controls (iOS 18): - Mute in call: mutes or unmutes the microphone in the ongoing call, and shows whether it is muted - Do not disturb: switches the user status between Do not disturb and Online - New conversation: opens the app to create or join a conversation Interactive widgets (iOS 17): - The large conversations widget gets a button to mark a conversation as read. The widget shows it as read right away, the real state follows once the server answered and the rooms were updated. - New small Status widget, showing the current status with buttons to switch between Online, Away, Do not disturb and Invisible. The widget extension has no access to the server, so the actions are LiveActivityIntents, which are performed in the app's process (it is launched in the background when needed). Their types are compiled into both targets (TalkWidgetIntents.swift). The app keeps a small state in the app group, whether there's a call, whether the microphone is muted, and the user status (TalkControlsState.swift), and reloads the controls and the status widget when it changes. It is removed on logout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Frank Karlitschek <karlitschek@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Frank Karlitschek <karlitschek@users.noreply.github.com>
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.
Controls for Control Center, Lock Screen and Action button (iOS 18):
Interactive widgets (iOS 17):
The widget extension has no server access, so the actions are
LiveActivityIntents performed in the app's process (launched in the background if needed). Their types are compiled into both targets (TalkWidgetIntents.swift). The app keeps a small state in the app group (call/mute state, user status,TalkControlsState.swift) and reloads controls and the status widget on changes; it is removed on logout.Also contains a commit letting Xcode sort the widget entries of the project file (same commit in the Apple Watch PR).
Notes
Based on feat: Widgets, Spotlight, haptics, double tap reactions and thermal aware calls #2788 (widgets, haptics, double tap reactions, thermal aware calls). GitHub retargets this PR to
mainonce feat: Widgets, Spotlight, haptics, double tap reactions and thermal aware calls #2788 is merged.Part of a set of independent feature PRs, each can be reviewed, merged or dropped on its own. Where several of them add a switch to Settings, the later one needs a trivial rebase.
LiveActivityIntentshould be verified on a device.Testing
UnitInteractiveWidgetsTest; App Intents metadata of app and widget extension contain the new intentsgeneric/platform=iOS(iPhone, iPad, Mac "Designed for iPad") and for watchOS hardware🤖 Generated with Claude Code