Jonathan Sykes
6cb00d5073
Add per-file asset hashes and a rollback-compatible server manifest
2026-10-07 22:57:41 +08:00
Jonathan Sykes
be1d939afd
Merge branch 'codex/prewarm-next'
...
# Conflicts:
# frontend/index.html
2026-10-07 22:44:11 +08:00
Jonathan Sykes
d65b9e032a
Prewarm upcoming queue streams
2026-10-07 16:30:15 +08:00
Jonathan Sykes
fcd98b6a4d
Add queue prewarm candidate selection
2026-10-07 16:30:01 +08:00
Jonathan Sykes
233bf94e4c
Pause non-playback UI timers while the page is hidden
2026-10-07 03:30:57 +08:00
Jonathan Sykes
722df3125f
Add visibility-aware interval helper
2026-10-07 03:30:22 +08:00
Jonathan Sykes
2e58924971
Add shell consistency test between index.html and the service worker
2026-10-07 03:29:24 +08:00
Jonathan Sykes
2b286ae146
Stop the last song from restarting and freezing service-mode lyrics
2026-10-07 02:12:07 +08:00
Jonathan Sykes
128f8e95e3
Respect the notch in the Framework7 top bar, sidebar and full sheet
2026-10-06 09:16:49 +08:00
Jonathan Sykes
63ff2173d8
Lift player to body for iOS fullscreen so the app never shows around it
2026-10-06 09:14:06 +08:00
Jonathan Sykes
a143c8331d
Stop video seek loop when returning from background
2026-10-06 09:14:06 +08:00
Jonathan Sykes
3be7a7b194
Fix fullscreen fit gesture clash and double swipe-remove in Framework7 layout
2026-10-06 04:19:01 +08:00
Jonathan Sykes
605d21a3e2
Use native icons in the Framework7 sidebar
2026-10-06 04:13:55 +08:00
Jonathan Sykes
cc4fb0d5c9
Simplify fullscreen playback controls
2026-10-06 04:12:28 +08:00
Jonathan Sykes
af38affdbe
Make fullscreen video fill the viewport
2026-10-06 04:12:25 +08:00
Jonathan Sykes
034b3df7ae
Complete Framework7 swipe gestures
2026-10-06 04:12:15 +08:00
Jonathan Sykes
d4497b0c05
Restyle the Framework7 layout
2026-10-06 04:12:09 +08:00
Jonathan Sykes
a81f4ffa51
Refine fullscreen control overlay
2026-10-06 02:32:43 +08:00
Jonathan Sykes
1cad18826b
Fill viewport in fullscreen playback
2026-10-06 02:32:36 +08:00
Jonathan Sykes
1ba3f8704b
Style Framework7 swipe layout
2026-10-06 02:32:36 +08:00
Jonathan Sykes
0bda242a98
Add Framework7 Swipe layout with swipeout rows, up-next sheet and mini-bar gestures
2026-10-06 02:01:56 +08:00
Jonathan Sykes
1754933f7e
Polish Bento scrolling and controls with full screen coverage
2026-10-04 23:44:51 +08:00
Jonathan Sykes
4e5b1584c6
Restore Bento theme integration lost during recovery
2026-10-04 22:47:33 +08:00
Jonathan Sykes
9589c38773
Apply Bento tiles to Settings, sheets and empty states
2026-10-04 22:46:23 +08:00
Jonathan Sykes
3baf67349f
Bring Bento playback and Service mode into the new theme
2026-10-04 22:44:54 +08:00
Jonathan Sykes
e100d47143
Style Bento library rows and download recovery controls
2026-10-04 22:42:22 +08:00
Jonathan Sykes
838798ca9b
Build the new Bento Hub shell and browsing tiles
2026-10-04 03:09:15 +08:00
Jonathan Sykes
04b620e3c7
Polish download action buttons in Classic and Glass Stage
2026-10-04 02:48:08 +08:00
Jonathan Sykes
2042c9b6fc
Recover related videos with bounded discovery and retryable fallbacks
2026-10-04 02:42:02 +08:00
Jonathan Sykes
df4acfc9f1
Keep iPhone audio playing through background handoffs
2026-10-04 02:29:10 +08:00
Jonathan Sykes
536555e12d
Add selectable fullscreen orientation and an iPhone landscape overlay
2026-10-04 02:26:54 +08:00
Jonathan Sykes
25ae810463
Glass Stage: float the section rail again, centred above the mini player
2026-10-04 02:17:48 +08:00
Jonathan Sykes
49ba470740
Keep the Glass Stage notes toolbar on one row at every player width
2026-10-03 21:58:03 +08:00
Jonathan Sykes
3c0adb2577
Keep Glass Stage section navigation and panel content clear of playback chrome
2026-10-03 21:45:34 +08:00
Jonathan Sykes
90ef21297a
Keep resume preparation and final verification outside connection timeouts
2026-10-03 20:49:08 +08:00
Jonathan Sykes
d78b06ff4b
Close unconfirmed transfer paths and reject binary signalling envelopes
2026-10-03 20:45:04 +08:00
Jonathan Sykes
5661eea6e6
Preview compatible fragmented MP4 transfers while saving the verified copy
2026-10-03 20:43:03 +08:00
Jonathan Sykes
795a5aaed4
Prefer direct copies for playback, saves and exports within verified device groups
2026-10-03 20:38:51 +08:00
Jonathan Sykes
08ff8398b5
Transfer saved songs directly between paired devices with resumable OPFS writes
2026-10-03 20:32:45 +08:00
Jonathan Sykes
88e2e67eeb
Authorize direct file invitations within paired rooms and parties
2026-10-03 20:26:07 +08:00
Jonathan Sykes
d93fc0d70f
Use Glass Stage icons for playlist and offline controls
2026-10-03 20:14:19 +08:00
Jonathan Sykes
79a3c28c8e
Center Glass Stage tab icons above their labels
2026-10-03 20:11:10 +08:00
Jonathan Sykes
5e78374efb
Explain save failures and keep download diagnostics available
2026-10-03 19:23:07 +08:00
Jonathan Sykes
f341b0c76e
Restart failed saves through a guarded server retry
2026-10-03 19:16:08 +08:00
Jonathan Sykes
cdc367a972
Restore the playing playlist when returning to Now Playing
2026-10-03 18:28:58 +08:00
Jonathan Sykes
f2c9459a54
Unify Glass Stage navigation and page controls with Now Playing
2026-10-03 18:19:56 +08:00
Jonathan Sykes
8ea92c1aac
Report phone playback metadata once per browser session
2026-10-03 17:56:01 +08:00
Jonathan Sykes
9e960cf70f
iPhone background audio in every playback mode; Classic playlist card actions; export sheet bar
...
- Dual mode (separate video + audio, used by adaptive streams and the iPhone EQ
copies): going to the background now makes the audio the master, so progress,
Now Playing and auto-advance keep working while iOS has the video suspended
(the paused video used to be the only source of "ended", so playback stopped
after the current song). The picture is re-synced on return.
- A track that starts while the app is in the background (auto-advance, the
lock-screen Next button) starts as audio — iOS will not start a <video> there —
and gets its picture back at the same position when the app returns.
- The handoff also runs on pagehide and when iOS pauses the master video while
the page is hidden, for when visibilitychange arrives too late.
- Classic: playlist cards place their three actions as a 2x2 block (note + add
on top, remove below) instead of the note button wrapping to the bottom-left.
- Save to this device: hide the full progress bar once the file is ready; it
read as a squashed, broken button above "Save to Photos / Files".
2026-10-03 17:46:23 +08:00
Jonathan Sykes
ca836e0cd2
Align saved video actions and confirm storage removal
2026-10-03 16:10:46 +08:00
Jonathan Sykes
cf9b6f4133
Clarify download states and make the empty page useful
2026-10-03 16:05:42 +08:00