Jonathan Sykes
c8601c5953
Merge remote-tracking branch 'github/claude/friendly-dirac-hz5pje' into resume-downloads
2026-10-03 00:28:45 +08:00
Jonathan Sykes
11ddb8a970
Uploads library on the USB drive with a nightly stable-disk copy; Topic channels resolve by name
...
- UPLOAD_DIR moves to the USB drive; reads fall back to UPLOAD_BACKUP_DIR on the
ytplayer-data volume, and while the drive is offline new uploads land there
- scripts/ops/uploads-backup.sh (homelab cron, 03:30) copies both ways, never
deletes; the server removes a deleted upload from both places
- /api/channel resolves a bare channel name ('Artist - Topic') to its id via a
search, and the client falls back to the channel name for old saved entries
2026-10-02 22:38:05 +08:00
Jonathan Sykes
1f9a97a6ae
Media cache on the homelab USB drive with an offline guard; Topic channels list their tracks
...
- MEDIA_DIR moves to /mnt/data/ytplayer (bind-mounted at /app/bulk); DB, lyrics,
notes and uploads stay on the ytplayer-data volume
- MEDIA_VOLUME_MARKER: while the marker on the drive is missing the cache writes,
serves and deletes nothing, so playback streams and an unmounted drive never
fills the disk under its mountpoint or loses its index on a reboot
- Budget 250 GiB, keep 20 GiB free on the drive
- /api/channel falls back to the uploads playlist and the channel home page when
a channel has no Videos tab (auto-generated '- Topic' music channels)
2026-10-02 21:21:23 +08:00
Jonathan Sykes
53da71ceb9
Service mode: one view button (default, lyrics, video, visualizer, album art) and a text-size box
...
- A single dock button cycles the service view; video is skipped in audio-only mode
- Visualizer reacts to the audio where the EQ graph is available and falls back
to an ambient pulse on iOS so background playback is never routed through Web Audio
- Album art shows the song artwork with the letterbox cropped
- A-/A+ box steps lyrics, title and channel size from -2 to +2 in every theme
- Glass Stage dock is slightly more compact
2026-10-02 21:11:15 +08:00
Jonathan Sykes
985063648f
Icon-only playlist header and filter-row actions, one-row transport, resumable update download
...
- Playlist title wraps within 90% of the width; rename and share are icons beside it,
and tapping the title opens the rename box showing the full name
- Offline, pin, select and delete are icon buttons to the right of the filter input
- Transport is one row again: prev, back 10, play, forward 10, next
- Update download stages each file as it arrives so a retry only fetches what is
missing, keeps 4 requests in flight and allows 5 minutes
2026-10-02 20:59:51 +08:00
Jonathan Sykes
236c129b90
Pin PyAV below 19 so faster-whisper can open audio again
2026-10-02 19:19:20 +08:00
Claude
0d92accd1d
Run SHA-256 as WebAssembly with JS fallback; note ffmpeg.wasm as deferred
2026-10-02 11:10:51 +00: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
883c9e7ba0
Document search library, server search cache and versioned static caching
2026-10-02 02:15:36 +00:00
Claude
ee248d2303
IndexedDB search library (1000x100, 15-day copies, Update search), server video metadata for instant local results
2026-10-02 02:15:28 +00:00
Claude
1b10a994dd
Version-stamped static URLs cached forever, thumbnail cache 25000 with throttled trimming
2026-10-02 02:11:38 +00:00
Claude
c69cc3a4bc
Persistent server search cache: 200 results per query, 250k queries, 15-day stale-while-revalidate, refresh=1
2026-10-02 02:10:39 +00:00
Claude
14e2307a92
Keep search results with thumbnails until cleared in Settings; add stale-while-revalidate search and longer asset caching
2026-10-01 22:04:51 +00:00
Claude
61a8f63385
Make the channel name a visible link directly under the title
2026-10-01 21:54:39 +00:00
Claude
fecb824c9a
Style the A-B group, Fullscreen and More buttons like the mockup
2026-10-01 21:54:17 +00:00
Claude
8c463f3834
Rebuild the Glass Stage A-B quick row and restyle the title block with a verified badge
2026-10-01 21:51:38 +00:00
Claude
6bf2636864
Bring Glass Stage closer to the mockup: HUD chips, sleep card, chapter badge, A-B group, playlist banner and P2P strip
2026-10-01 21:45:44 +00:00
Claude
19973c75c0
Add the Glass Stage layout theme with overlay controls, 10 s skips, quick chips and stacked tiles
2026-10-01 21:40:20 +00:00
Claude
36fc5ff9e4
Merge Queue and Playlist into one Add button and put Service mode in the common actions
2026-10-01 21:17:37 +00:00
Claude
859ecd2255
Move speaker and playback mode beside the volume slider with a volume-aware icon
2026-10-01 21:13:27 +00:00
Claude
9be4844b48
Show only the dots on More controls while A-B markers are present
2026-10-01 21:09:59 +00:00
Claude
b3a43c66db
Label the fullscreen button, add a mini fullscreen icon and show A-B markers beside it
2026-10-01 21:09:00 +00:00
Claude
25e7a28b6a
Merge shuffle, repeat list and loop one into one playback mode button
2026-10-01 21:03:48 +00:00
Claude
f9cb7edeb2
Replace transport emoji with centred SVG icons and distinguish loop-one from repeat-list
2026-10-01 21:02:23 +00:00
Claude
9f313f61af
Move secondary player controls into a More controls sheet
2026-10-01 20:58:15 +00:00
Claude
88f878b8eb
Move rarely used video actions into a More actions sheet
2026-10-01 20:55:04 +00:00
Claude
47826536a6
Make the refresh button 10% of the row width
2026-10-01 20:43:41 +00:00
Claude
9eb5e98048
Add Gallery action beside Save and an icon-only refresh beside Play all
2026-10-01 20:39:17 +00:00
Claude
02b337fcbc
Add save-to-device export, server export route and an On other devices P2P list
2026-10-01 18:53:00 +00:00
Claude
08e95814e5
Support hour-long uploads and videos: raise body limit, stream uploads to disk, cache up to 3 h, add deferred-ideas note
2026-10-01 18:48:37 +00:00
Claude
9d74769029
Add deck tabs, uniform action buttons, lyric reports in the player panel and a song list in the lyrics studio
2026-09-30 15:57:11 +00:00
Claude
e64880c163
Redesign playlist header, player deck, now-playing actions and lyrics panel layout
2026-09-30 15:29:44 +00:00
Claude
3fb1d29d5a
Redesign admin as a tabbed lyrics studio with undo, tap-sync pad and reported-line triage
2026-09-30 15:21:11 +00:00
Claude
04a74ab45d
Redesign service-mode controls and add per-profile wrong-lyric-line reports
2026-09-30 15:15:07 +00:00
Claude
0d68e7e72f
plan: record commit hashes in the queue index
2026-09-30 08:05:17 +00:00
Claude
84cd00368d
Add a P2P panel to the admin page
2026-09-30 08:02:52 +00:00
Claude
c55cf1f651
plan: start 019-admin-p2p-panel-4dc623
2026-09-30 07:58:43 +00:00
Claude
60a28fc593
Restore an evicted server copy from an online holder
2026-09-30 07:58:42 +00:00
Claude
6d3cefa874
plan: start 018-server-rehydrate-from-peer-4fb8bd
2026-09-30 07:54:34 +00:00
Claude
c8837befed
Download a verified file from another device over WebRTC
2026-09-30 07:54:34 +00:00
Claude
458aff757a
plan: start 017-peer-transfer-1faaa7
2026-09-30 07:50:38 +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
30e61de36f
plan: start 016-intake-and-server-verification-cfe031
2026-09-30 07:45:13 +00:00
Claude
61d0274896
Show peer availability with stale markers and add Sharing settings
2026-09-30 07:45:13 +00:00
Claude
780624347f
plan: start 015-availability-ui-and-settings-3b9397
2026-09-30 07:42:35 +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
ef7d08f16a
plan: start 014-p2p-presence-hub-ceced8
2026-09-30 07:38:47 +00:00
Claude
c629ff5836
Register devices and report verified holdings to the server
2026-09-30 07:38:47 +00:00
Claude
76e0d2f72d
plan: start 013-device-identity-and-holdings-3ba493
2026-09-30 07:31:18 +00:00
Claude
6af96622dd
Add the on-device IndexedDB file registry and hash saves while downloading
2026-09-30 07:31:18 +00:00