Repository navigation
feat(mobile): share text, links and files to a Bot from any app - #2401
Merged
Merged
Conversation
Enable expo-sharing's share extension (iOS) and SEND intent filters (Android). The share deep link opens a Send to screen listing the paired Host's chats; picking one appends the text to that chat's unsent draft and hands the files to its composer as attachments. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 49 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
It imports expo-sharing, whose types pull Expo's ProcessEnv into the root program, like the other excluded mobile tests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… paired Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
…are shots Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF
DoodleBears
marked this pull request as ready for review
October 20, 2026 13:40
DoodleBears
added a commit
that referenced
this pull request
Oct 20, 2026
…screenshots Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Android phone result: PASS with findings (Xiaomi, Android 16 / HyperOS 3, release build of latest main, isolated QA Host, deepseek-v4.1-flash) Screenshots: 2401-share-to-bot/phone (commit 6e4a78c)
Findings:
Generated by Claude Code |
DoodleBears
added a commit
that referenced
this pull request
Oct 21, 2026
…#2401 (#2422) * fix(mobile): Android hardware Enter with WeType, attachment ✕, flick-up and shortcut icons - Treat an input-method Enter that echoes a hardware Enter as that key, so Enter and Ctrl+Enter send with WeType and similar input methods. - Stop the hidden measuring text in the composer from taking taps meant for the attachment ✕ and the mention list. - Lower the Android flick-up speed to 0.3 dp/ms. - Use the launcher icon for Android app shortcuts, which cannot draw SF Symbols. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF * docs(changes): link #2422 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF * fix(ci): keep the recent-chats test out of the root typecheck recent-chats.ts now imports react-native, whose timer globals clash with Node's in the root program, like the other excluded mobile tests. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF * fix(mobile): show shared image thumbnails and hide the keyboard on Send to Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF * fix(mobile): send when an input method types the newline for a hardware Enter WeType on HyperOS types a newline into the field instead of sending the Enter key again. The view now watches the focused field and turns a newline typed within 500 ms of a sending hardware Enter into a send. Also recheck the clipboard once Android gives the window focus back, and name shared files that arrive as bare media ids after their type. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF * fix(mobile): keep the keyboard down while Send to is open Android can bring the keyboard back for the chat underneath after the share sheet opens. Hide it again whenever it shows or the app becomes active. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF --------- Co-authored-by: Claude <noreply@anthropic.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.
Requested by Vain · project thread
Before: there was no way to send a page, photo or file from another app to a Bot. You had to copy it, open DeepSeekBot, find the chat, then paste it or pick the file again.
After: DeepSeekBot shows up in the system share sheet on iOS and Android.
This is the last item of the native QoL batch Vain approved after #2364 and #2380.
How:
expo-sharing, already a dependency (SDK 58), can receive shares.<scheme>://expo-sharing.SEND/SEND_MULTIPLEintent filters to the main activity.app.config.jsapplies its plugin with the firstscheme. The plugin writesconfig.schemeinto the extension's Info.plist as a single string, and our dev config has three schemes.+native-intentsends that deep link to the new/shareroute (share-path.ts). This check runs before the cloud mapping, which would otherwise rewrite the bundle-id scheme.incoming-share.tsturns the resolved payloads into draft text andPickedFiles.PickedFiles, up to the composer's limit of 10.deliverShareappends the text to the chat's persisted source draft and holds the files. The conversation screen takes the held files when it mounts, through its existing mount ref.Screenshots (iOS 27 Simulator)
Release build, cold start from a share:
Notes
expo prebuildadds a new extension target and an app group. On a local signed build, the default app groupgroup.ai.botharness.deepseekbot.dev(orgroup.app.deepseekbot.mobilefor the store variant) must be registered with the team. EAS registers it on its own.pnpm lint,pnpm format:check, mobiletscand the mobile vitest suite pass. The newincoming-share.test.tscovers the payload mapping, the attachment cap, appending to a draft, the one-time file hand-off and the deep-link match.🤖 Generated with Claude Code
https://claude.ai/code/session_01TYsJ1DZQ7Vd8sKVs6MMhdF