Repository navigation
Long press a Remotes row for the web's menu: pin, stash, mute, block, leave - #116
Merged
Merged
Conversation
… leave A long press on a row in the Remotes inbox opens the web's row menu, in its order, words and Lucide icons: View profile, Pin or Unpin, Stash or Pop, Mute or Unmute, then Block @handle, or Leave org on an org. A tap still opens the thread. The menu uses the new :context-menu on pressable from mobile-air, drawn by mobile-ui. Pinned rows sort to the top as devnull sorts them and wear the web's pin. Mute asks how long for in a sheet with the web's dialog wording, and a muted row wears a crossed-out bell. Block and Leave org ask first, as the web does. Every change shows at once and goes to devnull from the background. The kept inbox is patched too, and a poll that lands before devnull answers keeps the change. If devnull says no, the row goes back and a toast says so in the web's words. The thread's own menu also gets Pin and Mute, as the web's thread header has them. Lucide::Pin now draws the web's pin, so Pin to profile in a commit's menu and the pinned marker on a profile change from the system glyph to it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 28, 2026
NativePHP/mobile-air#621 and NativePHP/mobile-ui#179 are merged, so the Remotes row menu now has the attribute and its renderers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 task
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.
Long press a row in the Remotes inbox to get the web's row menu, in its order, words and Lucide icons:
A tap still opens the thread. This covers items 5 (pin whole chats), 6 (the row menu) and 10 (muting).
Pinning uses
PUT .../pin. Pinned rows go to the top as devnull sorts them (pinned first, then latest message) and show the web's small pin above the time.Muting uses
PUT .../mute. Mute opens a sheet with the web's dialog wording and its four durations (one hour, until tomorrow, one week, forever). Unmute goes straight away. A muted row shows a crossed-out bell next to where the pin goes.Block and Leave org ask first with the web's dialog text, then the row goes. Block is
POST users/{handle}/block, leave isDELETE remotes/orgs/{org}/members/{me}. The full org settings screen is in the org-members PR, not here.Every change shows on the row at once and goes to devnull in the background through
WritesInBackground, as Stash already did in the thread. The kept inbox is patched too, so going back or reopening the app shows it. A 15-second poll that lands before devnull answers doesn't undo it. If devnull says no, the row goes back and a toast says so in the web's words ("Could not update the pin. Try again." and so on). Mute and Stash also get the web's success toasts.The thread's own
...menu gets Pin and Mute too, since the web's thread header has them. I kept that edit small because the message-pins PR is changingConversation.phpat the same time. It doesn't add Block or Leave to the thread menu.Lucide::Pinnow draws the web's pin instead of the SF/Material one, so Pin to profile in a commit's menu and the pinned marker on a profile change slightly too.Depends on
:context-menuon pressable)Both are merged, and the second commit here bumps the
nativephp/mobileandnativephp/mobile-uilocks to them.Worth a look
Testing
tests/Feature/Screens/RemotesMenuTest.phpcovers the menu for each row type, pin and unpin with the re-sort and the kept inbox, a poll landing before the pin's answer, mute with the sheet, unmute, stash, block and leave with their confirmations, each failure putting the row back with its toast, and Pin and Mute in the thread menu. Three existing tests now expect the Lucide pin.I tried it on an iOS 26.2 simulator and an Android 15 emulator against a local dev-null.sh at production, with the two framework branches through path repos. On both, a long press opens the menu, its items reach devnull, and a tap still opens the thread.
Screenshots
long-press
Recordings: Android dark, after, Android light, after, iOS dark, after, iOS light, after
menu
mute-sheet
remotes
🤖 Generated with Claude Code