The shared message carries the code, because an iPhone cannot open the app

An Android phone opens the link in the installed app (the manifest's scope
covers the site, so its WebAPK claims these URLs). An iOS home-screen app can
claim nothing, so the link always opens in Safari — which keeps its own storage
and knows nothing about the name picked inside the app. Four letters in the same
message is the whole fix: a friend who has it installed types them instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-15 16:46:08 +02:00
1 parent 425c18dcb6
commit 89b2488d3c
2 files changed
+10 -4

No files matched your search

+1 -1
View File
@@ -645,6 +645,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') {
</div>
</div>
</div>
<script type="module" src="src/main.js?v=266"></script>
<script type="module" src="src/main.js?v=267"></script>
</body>
</html>
+9 -3
View File
@@ -193,11 +193,17 @@ vsCode.addEventListener('keydown', e => { if (e.key === 'Enter') vsGo(true); });
// SHARE, then COPY. navigator.share is the phone's own sheet (WhatsApp, Signal, wherever the
// friend actually is) and is exactly the "easier setup" — the clipboard is the desktop fallback,
// and the code stays on screen for the two of them in the same room reading it aloud.
// THE CODE RIDES THE MESSAGE, not just the link. An Android phone opens the link in the INSTALLED
// app (the manifest's scope covers the whole site, so its WebAPK claims these URLs) — but an iPhone
// home-screen app can claim nothing, so the link always opens in Safari, which keeps its own
// storage and therefore knows nothing about the name they picked inside the app. Four letters in
// the same message is the whole fix: a friend who has it installed opens their app and types them.
document.getElementById('vsShare').addEventListener('click', async () => {
const url = vsLink(G.net && G.net.code || '');
const code = G.net && G.net.code || '';
const url = vsLink(code), text = 'COME AND PLAY ME — ROOM CODE ' + code;
try {
if (navigator.share) await navigator.share({ title: 'SPLATTER TENNIS', text: 'COME AND PLAY ME', url });
else { await navigator.clipboard.writeText(url); vsSay('vsMsg', 'LINK COPIED — SEND IT TO THEM'); }
if (navigator.share) await navigator.share({ title: 'SPLATTER TENNIS', text, url });
else { await navigator.clipboard.writeText(text + ' ' + url); vsSay('vsMsg', 'COPIED — SEND IT TO THEM'); }
} catch { /* a cancelled share sheet is not an error */ }
});
const vsQuit = () => { endNetVs(); vsOpen(); }; // a room you walked out of must give its socket back