Wave

Web — Public destination viewer

CORRECTED 2026-08-05 against the code — the original goal was flatly false and is preserved at the end for provenance. CURRENT STATE: apps/web/app/t/[hash]/route.ts dispatches ALL 14 canonical destination types. Coverage is mechanically gated in CI by check (b) of tests/unit/destination-type-parity.test.ts, which derives the type set from the Postgres enum on disk and fails if any type lacks a branch. The misleading contact-card fallback is gone: the contact path is guarded by `if (destType === "contact")` and the terminal branch returns unsupportedDestinationHtml() with a 404 for any unrecognized type. Nobody should re-implement a viewer. WHAT REMAINED, and its status after the feature/web session (2026-08-05): · DONE — deleted ~109 lines of unreachable code: handleVideoDestination and handleAudioDestination were shadowed by the 302 redirects to /v/[hash] and /a/[hash] that fire earlier in the dispatch, so neither function nor its orphan branch could ever run. · DONE — fixed a silent environment bug: every apps/web viewer route reads NEXT_PUBLIC_API_ORIGIN, but staging config set NEXT_PUBLIC_API_URL (apps/web-mobile's name) in THREE places — wrangler.jsonc, .env.staging.example and package.json's dev:staging. Nothing read it, so the STAGING viewer silently served PRODUCTION data. All three renamed. · DONE — wifi/bluetooth brought to iOS viewer parity per Matthew's 2026-08-05 call: per-credential copy buttons, password/PIN masked behind a reveal toggle (copy works while masked), monospaced values. Matches apps/ios .../Viewers/WifiViewer.swift + BluetoothViewer.swift. · HANDED TO BACKEND — https://staging.tactile.to is missing from STATIC_ALLOWED_ORIGINS in apps/api/tactile-api/src/utils/cors.ts, so the form's submit preflight gets a 403 from staging. Tracked as t_a615a44c in wave w_bbbef29e. · STILL OPEN — a real form submission has never been proven to store a row. Split out as t_557d52d9 (blocked on t_a615a44c). It is the only acceptance criterion in this wave never verified by anything but `tsc --noEmit`. VERIFIED-FALSE ORIGINAL GOAL (kept so nobody re-derives it): "app/t/[hash]/route.ts handles only 5 of 14 types. A customer scanning a live website, gallery, payment, video, audio, wifi, bluetooth, form, or link-hub tag hits a contact-card fallback that reads as 'this card link is no longer active.' The product silently fails for 9 of 14 types." — false as of commit b184285f.

TacTileLaunch TacTileWebWeb — Public destination viewer
13/15 done2 open1 open blocker
Selected taskclear

Render bluetooth destinations on /t/

DoneOwner · Vivt_697999bc
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it