Summary
GitWorkshop already exposes a browser-openable link for each NIP-34 repository announcement, but the Android app's “Share links” flow only copies that link to the clipboard. Add an Android system-share action so a repository's canonical https://gitworkshop.dev/<naddr> link can be sent directly to another app.
Current behavior
At dc36db64f6a2cca29d109829eabaf0a49d4bf4da, the repository About panel derives an NIP-19 address from the selected kind-30617 announcement and displays https://gitworkshop.dev/<naddr> in its Share links dialog (address generation, Share links dialog). Every row currently calls navigator.clipboard.writeText; there is no action that opens Android's Sharesheet (CopyRow).
The same HTTPS URL is the right artifact to share: the native app already accepts gitworkshop.dev App Links and routes them to the in-app repository view (native link handling, Android App Link declaration).
Expected behavior
In the native Android build, opening Share links for a repository offers a system-share action for the selected announcement's https://gitworkshop.dev/<naddr> URL. Choosing it opens Android's Sharesheet with a text/plain payload that another app can receive. Existing copy rows remain available, and the web build keeps its current behavior when native sharing is unavailable.
For repositories with multiple announcements, the shared URL must continue to represent the announcement selected by the existing maintainer-selection logic rather than silently switching identities.
Acceptance criteria
- The Android Share links flow has a clearly labelled action that opens the system Sharesheet with the exact GitWorkshop HTTPS URL already displayed in the dialog.
- The shared payload uses the selected kind-30617 announcement's NIP-19 address, including the current bounded relay hints, and contains no account secret or unrelated page state.
- Use Capacitor's maintained native Share capability for the Android boundary, gated by the existing Capacitor native-platform check and share-capability detection rather than exposing an unsupported action on the web.
- If the native share call rejects or the capability is unavailable, the dialog remains usable and the existing clipboard actions remain unchanged.
- Web and other non-native builds keep their current copy-link behavior.
- Repository pages reached through the shared link still resolve through the existing App Link/browser routing path.
Regression coverage
- Add focused component coverage in
src/components/RepoAboutPanel.test.tsx for the generated GitWorkshop URL, selected-maintainer behavior with multiple announcements, native-share visibility and payload, native-call rejection/unavailability, and web fallback.
- Replace the placeholder Android instrumentation test with a
dev.gitworkshop test under android/app/src/androidTest/ that unwraps the chooser's EXTRA_INTENT and verifies ACTION_SEND, text/plain, and EXTRA_TEXT equal to the expected https://gitworkshop.dev/<naddr> URL.
- Run the repository's normal
pnpm test gate and Android lint (pnpm android:lint).
Related work
Commit 985d119 added the existing repository Share links dialog. This request extends that established surface at the Android platform boundary; it does not replace the current copy links or request a new repository-card renderer in another client.
Summary
GitWorkshop already exposes a browser-openable link for each NIP-34 repository announcement, but the Android app's “Share links” flow only copies that link to the clipboard. Add an Android system-share action so a repository's canonical
https://gitworkshop.dev/<naddr>link can be sent directly to another app.Current behavior
At
dc36db64f6a2cca29d109829eabaf0a49d4bf4da, the repository About panel derives an NIP-19 address from the selected kind-30617 announcement and displayshttps://gitworkshop.dev/<naddr>in its Share links dialog (address generation, Share links dialog). Every row currently callsnavigator.clipboard.writeText; there is no action that opens Android's Sharesheet (CopyRow).The same HTTPS URL is the right artifact to share: the native app already accepts
gitworkshop.devApp Links and routes them to the in-app repository view (native link handling, Android App Link declaration).Expected behavior
In the native Android build, opening Share links for a repository offers a system-share action for the selected announcement's
https://gitworkshop.dev/<naddr>URL. Choosing it opens Android's Sharesheet with atext/plainpayload that another app can receive. Existing copy rows remain available, and the web build keeps its current behavior when native sharing is unavailable.For repositories with multiple announcements, the shared URL must continue to represent the announcement selected by the existing maintainer-selection logic rather than silently switching identities.
Acceptance criteria
Regression coverage
src/components/RepoAboutPanel.test.tsxfor the generated GitWorkshop URL, selected-maintainer behavior with multiple announcements, native-share visibility and payload, native-call rejection/unavailability, and web fallback.dev.gitworkshoptest underandroid/app/src/androidTest/that unwraps the chooser'sEXTRA_INTENTand verifiesACTION_SEND,text/plain, andEXTRA_TEXTequal to the expectedhttps://gitworkshop.dev/<naddr>URL.pnpm testgate and Android lint (pnpm android:lint).Related work
Commit
985d119added the existing repository Share links dialog. This request extends that established surface at the Android platform boundary; it does not replace the current copy links or request a new repository-card renderer in another client.