Repository navigation
Conversation
Collaborator
Author
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Two circular iOS lock screen widgets: New chat, and the current community's Bestie drawn from its avatar. A tap opens buzz://home-shortcut/<type>, which the scene delegate routes through the Home Screen quick action handling, cold or warm. Home publishes the Bestie's name and avatar to the app group whenever it changes, fenced so a replaced Bestie's avatar never lands, and clears it on sign out. With no Bestie the widget shows the generic agent and opens the agents list. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Tom Brow <[email protected]>
…rministic The Bestie widget test now holds a replaced Bestie's avatar render and waits for it to finish before asserting it never lands, and waits on published state instead of a fixed real-time budget. Removing the generation fence fails it. The native save writes the avatar before the name and reports a failed write, so the widget never pairs one Bestie's name with another's image, and Home forgets the snapshot so the next Bestie reload retries. The README lists the .BuzzWidgets identifier to provision. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Tom Brow <[email protected]>
brow
force-pushed
the
mobile-lock-screen-widgets
branch
from
November 12, 2026 04:21
f589bd7 to
04db69a
Compare
brow
added a commit
that referenced
this pull request
Nov 12, 2026
…9388) Follow-up to review notes on [#9360 Home Screen shortcuts](#9360). These are fixes for rare races, with no visible change. - **The member picker can't wedge.** UIKit ignores a dismiss that arrives mid-transition (the sheet still animating in, or during an interactive swipe-down) and never runs its completion. The picker coordinator queues every later present behind that completion, so New DM and Add members then opened nothing for the rest of the session. Dismiss now waits for the transition to finish, then dismisses whatever is still presented. - **A shortcut tap reaches Dart once.** The native bridge both buffered a tap and sent it, so a tap during cold launch could arrive twice and run again after Home had already handled it. Now a tap is buffered only until Dart first takes the pending one, and after that it is sent directly. - **Signing out drops a waiting tap.** Removing Home clears a tap that is still waiting (for example on a Bestie that is still loading), so it can't run in the next account's Home. Not included: carrying the Bestie's pubkey in the shortcut item, so a stale "Message Alice" falls back to Agents rather than opening the current Bestie. It's optional, and it would change the bridge's payload shared with the lock screen widgets in [#9373 lock screen widgets](#9373). ### Validation - The Home shortcut journey gains a step: a tap waiting while the app is inactive is cleared when Home goes away. The step fails with the teardown guard removed. - Automated simulator run (iPhone 17 Pro, iOS 27, signed in to a Builderlab test community), driving the app icon's quick actions on the Home Screen: - New DM from a conversation opens the picker. New DM again, with the picker already open, replaces it. New chat over the picker closes it and opens a draft, and New DM after that opens the picker again (it doesn't get stuck). - Message (Bestie) opens the Bestie conversation. - Cold launch through New chat opens exactly one New chat screen. Back returns to Messages. buzz-review-completed Signed-off-by: Tom Brow <[email protected]> Co-authored-by: Tom Brow <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>
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.
Stacked on #9360 Home Screen quick actions. Review that first; this PR's own change is the top commit.
Adds two circular iOS lock screen widgets:
The widget follows whichever community was active when the app was last used and updates when you switch. There is no per-widget setting.
How it works
BuzzWidgetsWidgetKit extension (iOS 16+) reads the Bestie's name and avatar PNG from the app group. The app writes them through the existingbuzz/home_screen_shortcutschannel (setBestie) and reloads the widget's timeline.buzz://home-shortcut/<type>. The scene delegate routes it into the same handling as the quick actions, both on cold launch and while running, and passes every other URL through to app links as before.nativeAvatarImagegains adimensionparameter (default 72, unchanged for existing callers). The widget uses 228 px.iOS draws lock screen widgets in monochrome, so the Bestie appears as a tinted silhouette of its avatar, not in full color.
Release signing
The extension's bundle identifier is
$(BUNDLE_IDENTIFIER).BuzzWidgetsand it uses the existing app group. Release builds signed with manual profiles need a provisioning profile for the new identifier; the release pipeline needs a matching change to sign it. A failed avatar save leaves the previous Bestie intact (image written before name) and is retried on the next Bestie reload.What gets better, and what doesn't get worse
Lock screen access to the two most common starts, without opening the app first. The widgets stay confined to themselves: the extension only reads two keys and one file from the app group, and the app's only new work is one small avatar render and write when the Bestie or its profile changes (never on reconnect). Links other than
buzz://home-shortcut/...take the same path as before.Validation
flutter test(full suite) passes. The Home shortcut journey now also checks that the widget gets the Bestie's name and avatar, that reconnects don't republish it, that a Bestie replaced mid-render never reaches the widget, that a community without a Bestie shows the generic agent, and that signing out clears it. The replaced-Bestie case holds that render and waits for it to finish before asserting, and the other waits poll published state, so a slow runner can't pass it vacuously. Removing the generation fence fails it.buzz://home-shortcut/new-chatcold (app killed), which landed on New chat. Openedbuzz://home-shortcut/message-bestiewith New chat open, which returned to Home and opened the Bestie DM.Before merge
Before / after
🤖 Generated with Claude Code