jessikitty
458c66a2c0
Fix: decode base64-corrupted source files (html/css/js + backend)
2026-06-19 05:06:43 +00:00
jessikitty
327b37babb
Fix: decode base64-corrupted admin html/css/js
2026-06-19 01:21:26 +00:00
jessikitty
3fa50c4c2f
Admin UI: style video row thumbnails like image thumbnails
...
Add .thumb-cell video to the existing .thumb-cell img rule so WebM-only
ghost thumbnails render at the same 34px size.
2026-06-19 09:54:25 +10:00
jessikitty
8e8e259b4c
Admin UI: video-aware preview + table thumbnails
...
- openGhost() previews stored media, preferring WebM video over still image
- showPreview/hidePreview swap between <img> and <video> elements
- Live local preview on file pick (handles mp4/webm)
- Ghost-table row thumbnail renders <video> when only a WebM exists
2026-06-19 09:52:24 +10:00
jessikitty
2fe4d67518
Admin UI: allow MP4/WebM in billboard upload + video preview element
...
- Widen file input accept to include .webm/.mp4
- Add a <video> preview element alongside the <img> preview
- Update label and help text to mention server-side MP4 conversion
2026-06-19 09:46:29 +10: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
22983caa18
Add webm_path and webp_path columns to ghosts (idempotent migration)
...
ALTER TABLE guarded by a column-existence check so existing production
databases gain the columns without data loss.
2026-06-18 14:20:50 +10:00
jessikitty
9866e44445
Add server-side ghost media converter (mp4 -> transparent webm + webp)
...
Shells out to system ffmpeg with the same luma-key pipeline as ghostify.sh.
Produces a VP9+alpha WebM (browser-decoded primary) and an animated WebP
fallback. No new npm dependency; fails gracefully if ffmpeg is absent.
2026-06-18 14:18:50 +10:00
jessikitty
ec4442d4ce
Add WebM (VP9+alpha) VideoTexture ghost billboards with GIF/WebP fallback
...
- Detect VP9-alpha WebM support once at load; iOS Safari falls back to <img>
- addGhost prefers data.webm via THREE.VideoTexture (browser-decoded, no
per-frame needsUpdate pump) when supported
- On video error, gracefully swap the billboard to the GIF/image texture
- Pause + release ghost <video> elements on capture and on hunt teardown to
avoid leaking decoders
2026-06-18 13:15:54 +10:00
jessikitty
00cd1696c6
Add iOS motion-gate overlay styles
2026-06-18 08:41:39 +10:00
jessikitty
ee3dace9b1
Add iOS Enable Motion overlay to hunt screen
2026-06-18 08:40:29 +10:00
jessikitty
0da74fb2dc
Fix iOS gyro: explicit Enable Motion gate; spawn ghosts near center, reveal on spawn
2026-06-18 08:39:37 +10:00
jessikitty
bf719a1dda
Update setup docs for dotenv + default port 33033
2026-06-17 22:26:11 +10:00
jessikitty
cc0803b09f
Point nginx upstream at 127.0.0.1:33033
2026-06-17 22:25:17 +10:00
jessikitty
ad5fd90b60
Default port 33033; note dotenv auto-loads .env
2026-06-17 22:24:59 +10:00
jessikitty
bf7930fc20
Load .env in seed script (ADMIN_USER/PASS/UPLOAD_DIR)
2026-06-17 22:24:38 +10:00
jessikitty
2c71a6bd39
Load .env via dotenv; default port to 33033
2026-06-17 22:23:57 +10:00
jessikitty
010558d104
Add dotenv dependency
2026-06-17 22:23:39 +10:00
jessikitty
af4fd70e39
Add About/Tribute page styles
2026-06-17 22:02:50 +10:00
jessikitty
3a9dff06fe
Wire up About screen routing and button
2026-06-17 22:00:50 +10:00
jessikitty
60d5844894
Add About/Tribute info page (words-only homage explanation)
2026-06-17 21:58:19 +10:00
jessikitty
00441f5787
Add step-by-step setup guide to README
2026-06-17 16:41:48 +10:00
jessikitty
35a2777dcb
Add admin console client logic
2026-06-17 16:40:06 +10:00
jessikitty
e1f18303a6
Add game client logic (scan, AR hunt, roster)
2026-06-17 16:39:18 +10:00
jessikitty
f3c450092a
Add admin panel page
2026-06-17 16:38:05 +10:00
jessikitty
5dbbefc032
Add main game page (title, scan, AR hunt, roster)
2026-06-17 16:37:40 +10:00
jessikitty
13906e9bf2
Add admin panel CSS
2026-06-17 16:37:15 +10:00
jessikitty
261e8c1275
Add game CSS (title, scanner, AR HUD, roster)
2026-06-17 16:36:50 +10:00
jessikitty
0a0f04f72b
Add shared CSS
2026-06-17 16:36:10 +10:00
jessikitty
5627c1f3bc
Add nginx reverse-proxy example
2026-06-17 16:35:51 +10:00
jessikitty
b21d10c0d8
Add ghosts seed data (111 ghosts with full stats)
2026-06-17 11:49:15 +10:00
jessikitty
6355b02782
Add abilities seed data (common + boss)
2026-06-17 11:47:18 +10:00
jessikitty
188242a23a
Add sets seed data (boss-to-set references)
2026-06-17 11:46:48 +10:00
jessikitty
dc408d0929
Add DB seed script with admin bootstrap
2026-06-17 11:46:13 +10:00
jessikitty
a17504a16e
Add xlsx -> JSON extractor
2026-06-17 11:45:47 +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
jessikitty
d13aaf894f
Add SQLite schema and connection
2026-06-17 11:43:49 +10:00
jessikitty
3c817eeb67
Add Express server entry point
2026-06-17 11:43:31 +10:00
jessikitty
79782aa565
Keep uploads dir
2026-06-17 11:43:18 +10:00
jessikitty
4e3ffcf084
Add .env.example
2026-06-17 11:43:13 +10:00
jessikitty
8cf848830f
Add .gitignore
2026-06-17 11:43:06 +10:00
jessikitty
ebf006b4e5
Add package.json
2026-06-17 11:43:01 +10:00
jessikitty
ce81534bdc
Add project README
2026-06-17 11:42:50 +10:00
jessikitty
6fc4d62342
Initial commit
2026-06-17 11:42:05 +10:00