Jonathan Sykes
27c694901d
Add upload library management and ops diagnostics
2026-10-14 03:09:12 +08:00
Jonathan Sykes
180a28d3e4
Add a paged lyrics quality queue
2026-10-14 01:56:53 +08:00
Jonathan Sykes
301fab335f
Add searchable admin audit history
2026-10-14 01:54:08 +08:00
Jonathan Sykes
58d0e6f140
Add resumable admin deep search
2026-10-14 01:47:35 +08:00
Jonathan Sykes
6cb00d5073
Add per-file asset hashes and a rollback-compatible server manifest
2026-10-07 22:57:41 +08:00
Jonathan Sykes
b6dd2be40f
Add server characterization tests for build tag, index stamping and cache headers
2026-10-07 03:28:45 +08:00
Jonathan Sykes
b77938ab4a
Queue bounded stream prewarm requests
2026-10-07 03:13:30 +08:00
Jonathan Sykes
2042c9b6fc
Recover related videos with bounded discovery and retryable fallbacks
2026-10-04 02:42:02 +08:00
Jonathan Sykes
2b38717c05
Add admin analytics, metadata collection, and grouped lyric cues
...
Queue reviewable Whisper drafts from the song list and lyrics editor. Preserve line breaks within one timed cue across editing, saving, reporting, and service views.
Add storage and listening analytics with a durable metadata collector, related-search depth, video limits, thumbnail storage, and a browsable metadata library.
2026-10-03 07:55:33 +08:00
Jonathan Sykes
5154ef5f75
Collect discovered video metadata and recommend videos from listening history
2026-10-03 07:16:51 +08:00
Claude
04a74ab45d
Redesign service-mode controls and add per-profile wrong-lyric-line reports
2026-09-30 15:15:07 +00:00
Claude
8d57a654c1
Let a device hand a file to the server for hashing and validation
2026-09-30 07:50:38 +00:00
Claude
6fa930ad62
Add the /ws/p2p presence and signalling hub and the holders endpoint
2026-09-30 07:42:35 +00:00
Claude
c629ff5836
Register devices and report verified holdings to the server
2026-09-30 07:38:47 +00:00
Claude
eb3fe45761
Count views and evict server copies by retention criteria before LRU
2026-09-30 07:25:56 +00:00
Claude
ea56d286b3
Hash every validated server copy and register it as verified content
2026-09-30 07:18:52 +00:00
Claude
167df35a97
Add P2P tables, config flags and db helpers
2026-09-30 07:11:55 +00:00
Claude
9cac21afce
Keep one long-lived yt-dlp worker process instead of spawning per call
2026-09-30 07:04:53 +00:00
Claude
556436da34
Answer searches from YouTube InnerTube directly with yt-dlp fallback
2026-09-30 06:58:05 +00:00
Jonathan Sykes
b983c6ca3c
Fetch lyrics from LRCLIB (synced when available) and serve an admin media library of uploaded video and audio with cover art and embedded lyrics
2026-09-20 05:59:50 +08:00
Jonathan Sykes
9c1ec4ac51
Add presenter view, stats, lyrics worker, watch party with voice chat, timestamp sharing, soundbites, notes, transcript search, PiP, EQ, sleep fade, gestures and external players; fix the crossfade end-of-song race
2026-09-20 00:07:12 +08:00
Jonathan Sykes
b82f17cd46
Add phone remote control: pair a phone with a 6-digit code or QR to drive a desktop instance's playback, queue, volume, sleep timer and service mode
2026-09-18 20:19:00 +08:00
Jonathan Sykes
524db986d2
Add shared synced lyrics, chapters and personal bookmarks with revision history, API tokens and an admin page
2026-09-18 18:10:10 +08:00
Jonathan Sykes
4efa1d1182
feat: convert to PWA — OPFS storage, service worker, Bun/Hono server
...
- Move native shells (Zig/src, Tauri/src-tauri, app.zon, releases) to legacy/
- Add Bun + Hono server with yt-dlp proxy endpoints (search, channel, streams,
download), libsql (concurrent SQLite fork) for fingerprint-keyed playlist/
history sync, and static file serving for the frontend
- Add Dockerfile + docker-compose.yml (single container, volume-mounted DB)
- Add frontend/sw.js: app-shell cache-first, /api/* network-only,
thumbnails stale-while-revalidate, SW_UPDATE_AVAILABLE broadcast,
SKIP_WAITING message handler for seamless auto-update
- Add frontend/manifest.webmanifest: standalone PWA, vermilion theme,
search/history shortcuts
- Add frontend/icons/icon-{192,512}.png: generated PWA icons
- Add frontend/fingerprint.js: canvas+UA djb2 fingerprint, localStorage-cached,
exposes window.getFingerprint() for server-side playlist keying
- Add frontend/opfs.js: full OPFS video store (writeFromResponse streams
directly without full-file buffering), exposes window.OPFS
- Add scripts/make-pwa-icons.js: regenerate icons without external deps
- Patch frontend/app.js: WEB mode detection, webFetch + opfs* bridge wrappers,
API object routes to WEB helpers when no native bridge present,
Player.loadVideo handles OPFS blob URLs + revokes them on next load,
SW registration + update banner in boot()
- Patch frontend/index.html: manifest link, theme-color, Apple PWA meta,
CSP blob:/worker-src, fingerprint.js + opfs.js script tags
- Patch frontend/styles.css: .toast-update + .toast-reload-btn for update banner
- Native Tauri/Zig builds unchanged — all new code is additive via WEB flag
2026-06-30 06:43:23 +08:00