mirror of
https://github.com/tiennm99/loto.git
synced 2026-10-14 06:17:46 +00:00
Apply the policy stated in plans/todo.md ("all prior plan folders
have been deleted") that had drifted: remove three completed plan
folders (auto-call-countdown, both-mode-state-consistency,
switch-deploy-to-github-pages) and the reports tied to them.
Also remove pre-shipping audits that referenced the now-deleted
Cloudflare _headers / CSP setup, plus the just-actioned
cloudflare-legacy cleanup audit. Keep the evergreen Lô Tô rules
researcher report.
Refresh todo.md hand-off header to reflect the GitHub Pages target.
2.9 KiB
2.9 KiB
Next-session TODO
Hand-off list as of 2026-05-10. Deploy target is GitHub Pages
(/loto/ base). All prior plan folders + their reports have been
swept after shipping; residual / new items live here directly.
Highest leverage (start here)
PWA install verification (manual, post-deploy)
Needs production deploy on GitHub Pages + physical Android Chrome + iOS Safari. No code; verification only.
Lighthouse — GitHub Pages (/loto/ base)
- Open
https://tiennm99.github.io/loto/in incognito Chrome. - DevTools → Lighthouse → PWA + Perf + Best Practices + a11y.
- PWA score = 100. No mixed-content warnings.
- Confirm SW URL
/loto/sw.js, manifest/loto/manifest.webmanifest, icons/loto/icons/...resolve.
Android Chrome (physical or emulator)
- "Add to Home Screen" → install → launch.
- Splash uses theme color (
#1565c0light /#0a0f1fdark, seeapp.html:9-10). Status bar matches. - Standalone display (no Chrome chrome).
- Airplane mode → reload from home → app shell + default voice work.
- Maskable icon: long-press app icon, ensure mask doesn't crop the centered glyph. Verify in DevTools "Show maskable preview" too. May need to drop safe-zone 70% → 65% if mask crops tight.
iOS Safari
- Share → Add to Home Screen.
- Icon uses
apple-touch-icon(/icons/icon-192.png) — round-ish glyph, no white bars. - Launch standalone, fonts legible under translucent status bar.
- Airplane mode → app shell + default voice play.
Common gotchas
- Manifest paths break under
/loto/base → checkvite.config.jsPWAmanifest: false+app.htmluses%sveltekit.assets%. - iOS install shows wrong icon → ensure
icons/icon-192.pngis 192×192 actual size.
UX polish (carried over)
MasterEmptyState↔ PlayerBoard ghost-grid duplication. Two near-identical decorative components — extract a shared<GhostBoardPreview rows={N} />only if a third use appears. (Rule-of-three not met yet.)
Tech debt
cookieandserialize-javascriptoverrides are temporary. Remove theoverridesblock inpackage.jsononce@sveltejs/kitandworkbox-buildship releases that pullcookie >= 0.7.0andserialize-javascript >= 7.0.5upstream.- Voice list growth. If we add voices > 2 (esp. > 10), revisit the precache strategy — currently we precache only the default voice. The 7d runtime cache covers the rest, but cold-start cost on alternate voices grows linearly.
New features (parking lot)
- Multiple cards per player.
- Long-press hero to undo last call (master).
- Spacebar to draw next number (master power-user shortcut).
- Internationalization (English UI). Vi default; en strings in a flat
map. Maybe pick
paraglide-jsor roll our own minimal map. - "New version available" reload toast for SW autoUpdate. Today the swap is silent; if users complain about content jumping mid-game, add a non-blocking notice.