Messages and invites travel as links:
| Form | Where it works | Notes |
|---|---|---|
https://crochik.github.io/whisper/m#… and /i#… | Clickable everywhere | Opens the app directly once App Links / Universal Links are verified; otherwise a small page offers Open in the Whisper app or Open in Whisper for web. |
whisper://m/… and whisper://i/… | Android, iOS, macOS | Some mail apps (e.g. Gmail) don’t make custom schemes clickable. |
The payload never reaches a server
Everything after # is the URL fragment, which browsers do not send in
HTTP requests. When a link is opened in a browser, GitHub Pages only ever
sees a request for /whisper/m or /whisper/i. The fallback pages are
static, load nothing external, send no referrer, and hand the fragment to the
app or to Whisper for web (which reads it at startup and clears it from the
address bar).
Opening messages without links
The Read screen’s Open message from clipboard accepts a link, a whole email or chat message that contains one, or an armored block — there is no text box to paste into and no Decrypt button.
Sending
Email, Text and Share each encrypt when tapped (the same text to the same person is encrypted once, so every button hands out the same message) and open the platform’s mail app, messaging app or share sheet. Emails also include the armored block for mail apps that break links. Where there is no share sheet, the button is Copy link. Whisper itself never sends anything.