Commit Graph

  • c629ff5836 Register devices and report verified holdings to the server Claude 2026-09-30 07:38:47 +00:00
  • 76e0d2f72d plan: start 013-device-identity-and-holdings-3ba493 Claude 2026-09-30 07:31:18 +00:00
  • 6af96622dd Add the on-device IndexedDB file registry and hash saves while downloading Claude 2026-09-30 07:31:18 +00:00
  • 8b7b2a62bd plan: start 012-device-file-registry-288d55 Claude 2026-09-30 07:27:31 +00:00
  • b56be586ee Add an incremental SHA-256 library for the browser and node tests Claude 2026-09-30 07:27:31 +00:00
  • a27788a80a plan: start 011-browser-sha256-e1793d Claude 2026-09-30 07:25:56 +00:00
  • eb3fe45761 Count views and evict server copies by retention criteria before LRU Claude 2026-09-30 07:25:56 +00:00
  • f12ca87131 plan: start 010-views-and-retention-d0c6ca Claude 2026-09-30 07:18:52 +00:00
  • ea56d286b3 Hash every validated server copy and register it as verified content Claude 2026-09-30 07:18:52 +00:00
  • b19193841c plan: start 009-server-content-hash-186e7f Claude 2026-09-30 07:11:55 +00:00
  • 167df35a97 Add P2P tables, config flags and db helpers Claude 2026-09-30 07:11:55 +00:00
  • 2d98b25340 plan: start 008-p2p-schema-and-config-127966 Claude 2026-09-30 07:04:53 +00:00
  • 9cac21afce Keep one long-lived yt-dlp worker process instead of spawning per call Claude 2026-09-30 07:04:53 +00:00
  • b8658f3a9d plan: start 007-ytdlp-worker-045800 Claude 2026-09-30 06:58:05 +00:00
  • 556436da34 Answer searches from YouTube InnerTube directly with yt-dlp fallback Claude 2026-09-30 06:58:05 +00:00
  • d61809f5c4 plan: start 006-innertube-search-48066b Claude 2026-09-30 06:53:48 +00:00
  • b24366d6c0 Warm the stream cache for likely next plays Claude 2026-09-30 06:53:48 +00:00
  • 67c2f6e46c plan: start 005-warm-streams-on-intent-47b3d3 Claude 2026-09-30 06:50:31 +00:00
  • e2a60792b9 Coalesce concurrent resolveStreams calls for the same video Claude 2026-09-30 06:50:31 +00:00
  • 617df320c7 plan: start 004-coalesce-stream-resolves-a92d40 Claude 2026-09-30 06:47:04 +00:00
  • 663a33573a Self-host the three web fonts and drop the render-blocking Google Fonts CSS Claude 2026-09-30 06:47:04 +00:00
  • 1001b85f40 plan: start 003-self-host-fonts-89466b Claude 2026-09-30 06:45:11 +00:00
  • 794410916a Serve the app shell gzip/brotli-compressed with ETags Claude 2026-09-30 06:45:11 +00:00
  • 7229ca16b9 plan: start 002-compress-and-etag-shell-bd459c Claude 2026-09-30 06:41:54 +00:00
  • 7781e0a116 Add startup, search and play timing marks plus yt-dlp duration logs Claude 2026-09-30 06:41:50 +00:00
  • 7b818baf8d plan: start 001-perf-timing-marks-105acc Claude 2026-09-30 06:39:48 +00:00
  • c17bd4c9ac Queue executable speed and peer-to-peer sharing plans with tested patches and harnesses Claude 2026-09-29 19:03:12 +00:00
  • a0ffc1b493 Refocus the improvement plan on speed and new features Claude 2026-09-29 17:40:57 +00:00
  • 92985d209a Add a phased improvement plan for the app Claude 2026-09-29 17:35:45 +00:00
  • 56d0838391 support shareable search links via a ?q= URL parameter Jonathan Sykes 2026-09-30 00:19:20 +08:00
  • 74777ef87f show a lightning icon on recent searches that will load instantly Jonathan Sykes 2026-09-30 00:18:22 +08:00
  • 6ff9f86bd8 cache /api/search results for 3 minutes to skip repeat yt-dlp spawns Jonathan Sykes 2026-09-30 00:17:44 +08:00
  • 4f0ee45980 cache recent search results locally so re-running one is instant Jonathan Sykes 2026-09-30 00:16:35 +08:00
  • 6480b314d5 remember recent searches on-device and show them under the search box Jonathan Sykes 2026-09-29 22:08:16 +08:00
  • b6fdff2438 drop the boxed background on the saved-offline card badge Jonathan Sykes 2026-09-28 20:30:13 +08:00
  • ba697e5d11 floor service-mode lyric font size and space out verses Jonathan Sykes 2026-09-26 02:11:07 +08:00
  • 05e85a0a3f Give untimed lyrics one uniform line size in service mode Jonathan Sykes 2026-09-24 08:34:09 +08:00
  • d64c5f2613 Lift the section rail clear of the floating mini player Jonathan Sykes 2026-09-22 14:58:31 +08:00
  • f411e49e4c Floor the party panel and rail above the bottom nav in CSS so a bad measurement cannot hide their controls Jonathan Sykes 2026-09-22 14:44:30 +08:00
  • aa92fb1f05 Count a bottom bar that stops above the home indicator when placing the rail Jonathan Sykes 2026-09-22 14:33:31 +08:00
  • c9e021a045 Keep the watch party panel above the bottom bars so its leave button is reachable Jonathan Sykes 2026-09-22 14:23:39 +08:00
  • 6c4571cb33 Measure the bottom bars so the section rail is never hidden behind the mini player Jonathan Sykes 2026-09-22 14:09:03 +08:00
  • 530d07d920 Add a mobile section rail that follows the scroll, jumps between cards and folds the one you are on Jonathan Sykes 2026-09-22 13:47:26 +08:00
  • 987697e759 Paint saved playlists before the launch sync and swap a background-downloaded update instantly Jonathan Sykes 2026-09-22 13:27:12 +08:00
  • 691e204d61 Pass an effort level to agy and default it to the one that actually finishes Jonathan Sykes 2026-09-21 23:53:02 +08:00
  • 2a4526578f Show lyrics in place of the video for watch parties and sing-alongs Jonathan Sykes 2026-09-21 21:03:46 +08:00
  • 0aa6c95494 Time correct lyrics from a machine transcript by aligning the two word streams Jonathan Sykes 2026-09-21 20:16:02 +08:00
  • e6d14b9eb4 Find lyrics with agy when LRCLIB has nothing, keeping the best of several non-deterministic answers Jonathan Sykes 2026-09-21 11:44:43 +08:00
  • 808306ffce Keep the five transport buttons grouped on one line at every screen width Jonathan Sykes 2026-09-21 10:33:06 +08:00
  • 1ce3cb8949 Document the admin lyric editor, the lyrics skills and the LRCLIB matching guards Jonathan Sykes 2026-09-20 18:07:08 +08:00
  • 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 Jonathan Sykes 2026-09-20 18:06:04 +08:00
  • 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 Jonathan Sykes 2026-09-20 17:55:49 +08:00
  • 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 Jonathan Sykes 2026-09-20 05:59:50 +08:00
  • 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 Jonathan Sykes 2026-09-20 00:07:12 +08:00
  • ca07e1fdf1 Add gapless and crossfade playlist transitions with a mode toggle, and a waveform seek bar for audio-only playback Jonathan Sykes 2026-09-19 16:12:33 +08:00
  • 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 Jonathan Sykes 2026-09-19 08:33:00 +08:00
  • 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 Jonathan Sykes 2026-09-18 20:19:00 +08:00
  • 524db986d2 Add shared synced lyrics, chapters and personal bookmarks with revision history, API tokens and an admin page Jonathan Sykes 2026-09-18 18:10:10 +08:00
  • a20dd0a3a6 Replace saved copies that fail to play, reject truncated saves, and re-check the device cache when the app returns to the foreground Jonathan Sykes 2026-09-18 10:11:20 +08:00
  • 64f45a102d Check the playlist inbox when the app returns to the foreground and every two minutes while open Jonathan Sykes 2026-09-18 09:28:01 +08:00
  • e4ac04cb5c Sample two short windows before re-encoding a cached video and skip the full encode when HEVC will not save 15 percent Jonathan Sykes 2026-09-14 00:51:14 +08:00
  • 8b0060d42a Re-encode cached videos to HEVC when it saves at least 15 percent and serve them only to devices that can decode HEVC Jonathan Sykes 2026-09-13 21:09:15 +08:00
  • 91dab289c3 Show the update banner only when the running build differs from the server and make Refresh UI land the new shell on flaky links Jonathan Sykes 2026-09-13 17:42:50 +08:00
  • 5fb863ba25 Cache every played or saved video on the server via background jobs with a validation gate and a Broken re-download button Jonathan Sykes 2026-09-13 09:45:01 +08:00
  • 292a0c7e29 Show the video inline in service mode and keep audio alive in the background Jonathan Sykes 2026-09-08 17:36:55 +08:00
  • a3089dde74 Add a service mode shortcut to the now-playing bar and a video panel toggle Jonathan Sykes 2026-09-08 16:59:43 +08:00
  • 3e1b56610f Let a shared playlist be sent to another user by name Jonathan Sykes 2026-09-08 15:52:46 +08:00
  • 9366b1749c Keep service mode full-bleed on iOS and hide the player chrome behind it Jonathan Sykes 2026-09-08 11:55:15 +08:00
  • 765a00b412 Drop the old Windows desktop build artifacts from the tree Jonathan Sykes 2026-09-08 11:44:14 +08:00
  • e91fe83cc7 Fill the phone screen in service mode and open it on the playing song Jonathan Sykes 2026-09-08 06:51:03 +08:00
  • 06f80debc0 Prefer h264 formats for saves so cached copies play on every device Jonathan Sykes 2026-09-01 07:02:57 +08:00
  • a159c1e642 Note deferred cookies-jar work for the YouTube bot gate in the backlog Jonathan Sykes 2026-08-27 10:28:48 +08:00
  • d073d20060 Retry yt-dlp against alternate player clients when YouTube demands sign-in Jonathan Sykes 2026-08-27 07:22:02 +08:00
  • 94fff8f862 Report live streams as unsupported instead of an empty quality list Jonathan Sykes 2026-08-24 01:07:18 +08:00
  • c141959654 Serialize saves, disable idle timeout, cap savable length at 3h Jonathan Sykes 2026-08-24 00:21:18 +08:00
  • 04c419d151 Coalesce save downloads, kill them on disconnect, refuse live and over-long videos Jonathan Sykes 2026-08-23 23:50:10 +08:00
  • ea9e372c1e Rate-limit save downloads so they no longer starve playback Jonathan Sykes 2026-08-23 23:13:45 +08:00
  • d1ba9d1e9c Fix play proxy cancel crashing the server on client disconnect Jonathan Sykes 2026-08-23 22:54:31 +08:00
  • 831063125d Enable bun as yt-dlp JS runtime to avoid throttled stream URLs Jonathan Sykes 2026-08-23 22:41:37 +08:00
  • 8177f5c665 Chunk playback proxy at 10MB and merge adaptive streams for saves Jonathan Sykes 2026-08-23 15:43:01 +08:00
  • c8a9755e93 Restrict playback proxy to direct https streams, prefer adaptive Jonathan Sykes 2026-08-23 15:15:02 +08:00
  • defc8a7f1a Proxy YouTube playback through server to fix intermittent 403s Jonathan Sykes 2026-08-23 15:01:28 +08:00
  • ee78c8561b fix playlist name overflow with 2-line clamp Jonathan Sykes 2026-08-17 02:13:51 +00:00
  • c08558cfb4 Enhance 5 layout themes with structural CSS — topbar, nav accents, mini-bar, ambient layers Jonathan Sykes 2026-08-17 00:29:52 +00:00
  • 9c2146aef8 Fix layout theme grid overrides breaking mobile — wrap in min-width:861px Jonathan Sykes 2026-08-17 00:21:50 +00:00
  • eb6ed215fe Add 6 selectable layout themes to Settings (Appearance) Jonathan Sykes 2026-08-16 16:33:26 +00:00
  • d01aedd4b2 Record the new playlist and set-list features in the backlog Jonathan Sykes 2026-08-16 13:58:41 +00:00
  • 8ef16a8b38 Add per-song notes on playlist entries Jonathan Sykes 2026-08-16 13:58:22 +00:00
  • 14e1d8e3dd Add service mode set-list view with screen wake lock Jonathan Sykes 2026-08-16 13:51:27 +00:00
  • c5f47514ad Show per-playlist offline status and add a keep-offline pin Jonathan Sykes 2026-08-16 13:45:19 +00:00
  • b868dabe27 Add bulk import of a YouTube playlist URL Jonathan Sykes 2026-08-16 13:39:02 +00:00
  • 27b28f767b Add shareable single-playlist links with additive import Jonathan Sykes 2026-08-16 13:32:18 +00:00
  • 57413a07a1 Hide the list pane on the home view until the first search Jonathan Sykes 2026-08-16 12:58:05 +00:00
  • 5a9304780a Give the empty-home playlist grid the full pane height instead of a clipped 16:9 box Jonathan Sykes 2026-08-16 08:52:18 +00:00
  • 4fd68ae88e Document cache layout, offline thumbnails and test invocation Jonathan Sykes 2026-08-16 08:48:50 +00:00
  • 49198ff239 Cache video thumbnails for offline use Jonathan Sykes 2026-08-15 07:26:56 +00:00
  • fa9ef000b9 Show playlists instead of the branding hero on the empty home Jonathan Sykes 2026-08-15 07:19:46 +00:00
  • b2154bd9c4 Add shareable profile link to settings and sidebar Jonathan Sykes 2026-08-15 06:58:43 +00:00
  • 70460232f0 feat: Add scrubber with A/B markers for video editing/downloading Claude Worker 2026-07-18 17:59:20 +00:00
  • 046aa67108 feat: Add visual scrubber to video editor Claude Worker 2026-07-18 17:50:27 +00:00