Skip to content

Promote to production: file-transfer reconnect + branded OG/app icons - #67

Merged
slaveofcode merged 4 commits into
mainfrom
develop
Aug 1, 2026
Merged

Promote to production: file-transfer reconnect + branded OG/app icons#67
slaveofcode merged 4 commits into
mainfrom
develop

Conversation

@slaveofcode

Copy link
Copy Markdown
Owner

Syncs main with production (develop deploys live). Fixes: signaling reconnect (stuck 'waiting' peer), 1200x630 branded OG image (blank share preview), branded PWA/app icons (were black squares).

🤖 Generated with Claude Code

Kresna and others added 4 commits August 1, 2026 10:59
…ing'

Root cause: on mobile, the sender opens the tool, gets the link, then switches
apps to share it — backgrounding the browser closes the sender's signaling
WebSocket. When the receiver later opens the link it's alone in the room →
becomes host → 'Waiting for the other device to join…' forever, because there
was no reconnect.

Fix:
- Reconnect the signaling socket on close/error and on tab foreground
  (visibilitychange), until the P2P data channel is established. Robust to
  either peer being first (WebRTC role already decoupled from send/receive).
- Once the P2P channel is open, ignore signaling peer-left/close (transfer is
  independent of signaling by then); a real P2P drop after connect is terminal.
- Keepalive: client pings every 25s; the Durable Object auto-responds 'pong'
  (setWebSocketAutoResponse) without waking or relaying it — prevents idle proxy
  timeouts. Manual (serverless) mode unaffected (no reconnect needed).

DO relay + ping/pong auto-response re-verified via local wrangler dev.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Share previews (WhatsApp/Twitter/etc.) showed a blank/black box because the
default og:image was /icon-512.png — a 512x512 square that is essentially solid
black — while the card type is summary_large_image (expects ~1200x630).

Add a proper branded 1200x630 OG image (public/og.png, generated by
scripts/make-og-image.mjs via sharp — brutalist cream + violet GWT badge +
wordmark + tagline), set it as the default in Base.astro, and add
og:image:width/height/alt. Fixes previews site-wide, not just file transfer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
icon-192.png / icon-512.png were near-black squares — so the installed PWA
icon and any og:image fallback were blank. Regenerate them with the GWT brand
(full-bleed violet, white 'GWT' kept inside the maskable safe zone since the
manifest marks them purpose 'any maskable'), add a dedicated 180x180
apple-touch-icon.png, and point <link rel=apple-touch-icon> at it. Generated by
scripts/make-icons.mjs via sharp.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
fix(file-transfer): reconnect signaling + branded OG/app icons
@slaveofcode
slaveofcode merged commit 0fc5b87 into main Aug 1, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant