9 Commits

Author SHA1 Message Date
jessikitty 6aae22b648 Phase 3: AR hunt /hunt + launch page /play - shared-visual ghosts, colour lure, hauntometer 2026-06-23 11:33:00 +10:00
jessikitty efadc85195 Free hunt: only spawn ghosts that have an uploaded video
Add `AND webm_path IS NOT NULL` to the /api/freehunt pool so free-hunt
mode only selects ghosts with real media (and their derived webp/image
fallbacks), never bare procedural-wisp ghosts.
2026-06-22 10:37:52 +10:00
jessikitty 458c66a2c0 Fix: decode base64-corrupted source files (html/css/js + backend) 2026-06-19 05:06:43 +00:00
jessikitty 0c5123e3a6 Admin: accept mp4/webm uploads and auto-convert mp4 to transparent webm+webp
- Allow .mp4/.webm in addition to image types; raise upload limit to 64MB
- MP4 uploads are luma-keyed to a VP9+alpha WebM plus an animated WebP
  fallback via lib/ghost-media.js; the raw MP4 is discarded
- Pre-made .webm uploads are stored directly
- All prior media (image/webm/webp) is cleaned up on replace and on delete
- WebP doubles as the still thumbnail for converted ghosts
2026-06-18 14:27:50 +10:00
jessikitty dc5e032b3a Emit webm and webp URLs in public ghost objects
rowToGhost now returns webm/webp alongside image, so the client renderer can
select the VP9+alpha video billboard (with WebP/GIF fallback).
2026-06-18 14:22:50 +10:00
jessikitty a80b4e272e Add admin CRUD routes with image upload 2026-06-17 11:45:16 +10:00
jessikitty ed4e03712b Add public game API routes 2026-06-17 11:44:43 +10:00
jessikitty d2ce965c63 Add auth routes 2026-06-17 11:44:20 +10:00
jessikitty fd3c0f19fd Add JWT auth middleware 2026-06-17 11:44:08 +10:00