Jonathan Sykes
236c129b90
Pin PyAV below 19 so faster-whisper can open audio again
2026-10-02 19:19:20 +08:00
Jonathan Sykes
3f8c9fc365
Stop the lyrics worker from filling the disk: skip long audio, sweep stale temp files, back off after a crash
2026-10-02 15:06:10 +08:00
Claude
663a33573a
Self-host the three web fonts and drop the render-blocking Google Fonts CSS
2026-09-30 06:47:04 +00:00
Jonathan Sykes
691e204d61
Pass an effort level to agy and default it to the one that actually finishes
2026-09-21 23:53:02 +08:00
Jonathan Sykes
0aa6c95494
Time correct lyrics from a machine transcript by aligning the two word streams
2026-09-21 20:16:02 +08:00
Jonathan Sykes
e6d14b9eb4
Find lyrics with agy when LRCLIB has nothing, keeping the best of several non-deterministic answers
2026-09-21 11:44:43 +08:00
Jonathan Sykes
89d35562d3
Match LRCLIB on the song title when the channel is not the artist, and stop generic words like Christian or worship from vouching for an artist
2026-09-20 18:06:04 +08:00
Jonathan Sykes
2987f46037
Add a scrubbable timed lyric editor to the admin page, LRCLIB regeneration tooling with lyrics skills, and keep the five playback buttons on one row on phones
2026-09-20 17:55:49 +08: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
71fc51fb50
Add a lyrics-only service mode view with the sung line centred and auto-sized, and a free local faster-whisper script to transcribe saved songs
2026-09-19 08:33:00 +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
Jonathan Sykes
3ad2e40606
Refresh Windows release artifacts and sync build outputs
2026-06-21 16:15:30 +08:00
Jonathan Sykes
63560a8e61
Add offline cache & preload, Save/add-to-playlist UI, Settings page; player stream fallback + progressive-first ordering; protocol-asset feature; refresh Windows installers
2026-06-14 11:36:01 +08:00
Jonathan Sykes
bac6665b3d
Add Windows support via a Tauri (WebView2) shell
...
zero-native has no Windows target yet, so add a parallel Tauri shell
for Windows that reuses the same frontend:
- src-tauri/: Rust commands (yt_search, yt_streams, store_load,
store_save) mirroring the Zig bridge; spawns bundled yt-dlp.exe with
CREATE_NO_WINDOW; data stored in app_data_dir
- frontend bridge now auto-detects window.__TAURI__ vs window.zero and
routes accordingly; CSP updated for Tauri IPC
- tauri.conf.json bundles yt-dlp.exe as a resource and builds nsis/msi
- scripts/make-icon.js generates appicon.png for 'tauri icon'
- README: native Windows build steps + WSLg fallback note
2026-06-14 10:04:27 +08:00
Jonathan Sykes
a171cae417
Add ad-free YouTube player built on zero-native
...
Desktop YouTube player with no login and no ads. Extracts direct
video/audio streams with yt-dlp and plays them in a native window via
zero-native (Zig + system WebView) for a tiny footprint vs Electron.
- Dual-stream engine: muted video synced with separate audio track for
high quality without ffmpeg muxing; progressive fallback
- On-device playlists, watch history, audio-only mode
- Full custom controls: seek, volume, speed, quality, fullscreen, queue
- Zig bridge handlers spawn yt-dlp and return slimmed JSON to the web UI
- Cinematic dark UI: Bricolage/Hanken/JetBrains Mono, vermilion accent
2026-06-13 23:33:16 +08:00