feat(mobile): star channels (Slack-style favorites)#863
Merged
Conversation
Port the desktop star-channels feature to mobile. Mirrors the channel-mutes pattern: a per-channel flag with its own storage, sync manager, and Riverpod provider. - Star/Unstar from the channel long-press action sheet. - A starred channel moves into a "Starred" section pinned at the top and is removed from its normal group — Slack-style exclusivity. - State syncs across devices and with desktop via NIP-78 (kind 30078, d-tag channel-stars, nip44-encrypted to self, last-writer-wins merge). - Adds a storage unit test (parse/merge round-trips). Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co> Signed-off-by: Wes <wesbillman@users.noreply.github.com>
wpfleger96
approved these changes
Jun 4, 2026
michaelneale
added a commit
that referenced
this pull request
Jun 5, 2026
* origin/main: chore(release): release version 0.3.11 (#865) fix(mobile+desktop): cross-device read state sync + diagnostic logging (#843) feat(mobile): star channels (Slack-style favorites) (#863) feat: desktop-screenshot skill to stop agents uploading relay media to PRs (#862) feat(desktop): star channels (Slack-style favorites) (#860) fix(desktop): handle symlinked persona pack directories (#859) feat: channel muting for desktop and mobile (#838) feat(acp): default SPROUT_ACP_MEMORY to on (#854) fix(desktop): eliminate image-hover layout jump in messages (#813) chore(release): release version 0.3.10 (#849) fix(desktop): harden relay mesh connect p-tag (#834) fix(desktop): scroll activity panel to bottom on open (#848) Polish desktop profile menu interactions (#836) fix(desktop): outline thread hover targets (#845) fix(desktop): keep message actions hover-only (#844) fix(desktop): let inbox composer fill available width (#841) # Conflicts: # desktop/src/app/AppShell.tsx # desktop/src/features/workspaces/useWorkspaceInit.ts
tlongwell-block
pushed a commit
that referenced
this pull request
Jun 5, 2026
* origin/main: (39 commits) docs: add VISION_MESH.md — the compute-commons vision (#867) fix(desktop): simplify profile popover header (#853) fix(desktop): remove thread comment hover outline (#861) feat(desktop): always show channel section search/add buttons (#856) chore(release): release version 0.3.11 (#865) fix(mobile+desktop): cross-device read state sync + diagnostic logging (#843) feat(mobile): star channels (Slack-style favorites) (#863) feat: desktop-screenshot skill to stop agents uploading relay media to PRs (#862) feat(desktop): star channels (Slack-style favorites) (#860) fix(desktop): handle symlinked persona pack directories (#859) feat: channel muting for desktop and mobile (#838) feat(acp): default SPROUT_ACP_MEMORY to on (#854) fix(desktop): eliminate image-hover layout jump in messages (#813) chore(release): release version 0.3.10 (#849) fix(desktop): harden relay mesh connect p-tag (#834) fix(desktop): scroll activity panel to bottom on open (#848) Polish desktop profile menu interactions (#836) fix(desktop): outline thread hover targets (#845) fix(desktop): keep message actions hover-only (#844) fix(desktop): let inbox composer fill available width (#841) ...
tlongwell-block
pushed a commit
that referenced
this pull request
Jun 5, 2026
* origin/main: (39 commits) docs: add VISION_MESH.md — the compute-commons vision (#867) fix(desktop): simplify profile popover header (#853) fix(desktop): remove thread comment hover outline (#861) feat(desktop): always show channel section search/add buttons (#856) chore(release): release version 0.3.11 (#865) fix(mobile+desktop): cross-device read state sync + diagnostic logging (#843) feat(mobile): star channels (Slack-style favorites) (#863) feat: desktop-screenshot skill to stop agents uploading relay media to PRs (#862) feat(desktop): star channels (Slack-style favorites) (#860) fix(desktop): handle symlinked persona pack directories (#859) feat: channel muting for desktop and mobile (#838) feat(acp): default SPROUT_ACP_MEMORY to on (#854) fix(desktop): eliminate image-hover layout jump in messages (#813) chore(release): release version 0.3.10 (#849) fix(desktop): harden relay mesh connect p-tag (#834) fix(desktop): scroll activity panel to bottom on open (#848) Polish desktop profile menu interactions (#836) fix(desktop): outline thread hover targets (#845) fix(desktop): keep message actions hover-only (#844) fix(desktop): let inbox composer fill available width (#841) ... Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
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.
Star channels — mobile
Ports the desktop star-channels feature (#860) to mobile. Same model and behavior, mirroring the existing channel-mutes Flutter pattern.
Behavior
30078, d-tagchannel-stars, nip44-encrypted to self, last-writer-wins merge). Star a channel on desktop → it's starred on mobile, and vice-versa.Screenshots
Long-press action sheet — Star channel (top item)
After starring (
generalmoves into a pinned Starred section and leaves the Channels list)Implementation
Mirrors
channel_mutes/:channel_stars/channel_stars_storage.dart—ChannelStarStore+mergeStores(per-channel max-updatedAt).channel_stars/channel_stars_manager.dart— fetch/merge/subscribe/debounced-publish sync engine on d-tagchannel-stars.channel_stars/channel_stars_provider.dart—channelStarsProviderNotifier.channels_page.dart— Starred section render (excluded from custom sections + default Channels) and the action-sheet toggle.Scope
Stream channels v1 (same as desktop). Forums/DMs deferred.
Tests
flutter analyze: clean (no issues).channel_stars_storage_test.dart: 9 tests (parse/merge round-trips, last-writer-wins) — the coverage mobile mutes/sections never had.