The invitation is four letters, not a link

A URL only opens the installed app on Android; on an iPhone it opened a second
copy of the game in Safari, with its own storage and none of the name picked in
the app. So the share sheet now sends "JOIN ME IN SPLATTER TENNIS — THE CODE IS
ABCD" and nothing else, and the button says SEND THE CODE.

The #net-ABCD door stays — it is exactly what a deep link will carry the day
this is a real app with universal links. Nothing sends it in the meantime.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-15 16:56:25 +02:00
1 parent 89b2488d3c
commit 2b7eb04e19
3 files changed
+21 -19

No files matched your search

+10 -6
View File
@@ -430,12 +430,16 @@ screen (`#vs`, `index.html` + THE LOBBY in `main.js`); the protocol underneath i
the kit/tour selection `start()` performs is already done when the `look` message reads it.
Two more hooks join `intoSplatter`: `room` (the code landed) and `lost` (returns true when the
lobby said so itself, which is what suppresses the card). Headless leaves them null.
- **SHARE THE LINK, then the code.** `navigator.share` is the phone's own sheet — the friend is in
WhatsApp, not in a room reading letters aloud — with `clipboard.writeText` as the desktop
fallback and the four letters still big on screen for when they are in the same room. The link is
the URL door that already existed (`#net-ABCD`): it opens the lobby with the code prefilled,
ONE tap from the court. Deliberately not an auto-join — that tap is where the joiner sees, and
can change, the name the other phone will call them.
- **SEND THE CODE — and no link (settled same day).** `navigator.share` is the phone's own sheet —
the friend is in WhatsApp, not in a room reading letters aloud — with `clipboard.writeText` as
the desktop fallback. It shipped as SHARE THE LINK for an hour and the link came straight back
out: **a URL only opens the INSTALLED app on Android** (the manifest's scope covers the site, so
its WebAPK claims these URLs), while **an iOS home-screen app can claim nothing**, so on an
iPhone the invitation opened a second copy of the game in Safari — its own storage, none of the
name they picked in the app. Four letters typed into the app they already have is the honest
version until this is a real app with universal links; the `#net-ABCD` door still exists and is
exactly what a deep link will carry the day there is one, nothing merely sends it now. That door
prefills the lobby rather than auto-joining, so the joiner still sees the name they will wear.
- **ONE NAME PER PLAYER.** The field is prefilled from `stats.savedName()` and written back through
the new `stats.saveName` (which `submit` now shares), so the world board's name and the netplay
name cannot become two things. It crosses on the EXISTING `look` message as `n` — no new message