Jonathan Sykes
9a37715da4
Unify transport controls with themed SVG symbols and accessible playback states
2026-10-09 15:54:22 +08:00
Jonathan Sykes
4ba5130c80
Merge Phase 6 and reconcile offline completion, response capture and contract tests
2026-10-09 15:12:14 +08:00
Jonathan Sykes
2001e77cee
Use theme-aware SVGs for download and offline actions
2026-10-09 14:28:42 +08:00
Jonathan Sykes
4b1f5204f8
Restore native boot scheduling without an extra core request
2026-10-08 11:25:03 +08:00
Jonathan Sykes
a86fa1cebe
Cache the page-owned app response before starting the worker
2026-10-08 09:04:20 +08:00
Jonathan Sykes
e7a7cdc6b9
Preload classic layout CSS before the blocking head loader
2026-10-08 08:50:51 +08:00
Jonathan Sykes
b335f95f45
Load Stats view separately from listening-stat tracking
2026-10-08 04:46:40 +08:00
Jonathan Sykes
0475a1826c
Load sharing and external-player tools on demand
2026-10-08 04:44:35 +08:00
Jonathan Sykes
94ea211605
Lazy-load watch-party sessions behind synchronous playback hooks
2026-10-08 04:42:35 +08:00
Jonathan Sykes
8e7fa1959a
Load remote UI on intent and preserve synchronous host hooks
2026-10-08 04:41:30 +08:00
Jonathan Sykes
5fb9564468
Load the presenter client only on presenter entry
2026-10-08 04:39:52 +08:00
Jonathan Sykes
3c9a24ae45
Extract eager shell and shared view renderers before app boot
2026-10-08 04:38:37 +08:00
Jonathan Sykes
fab444b7b8
Start font preloads before the layout bootstrap
2026-10-08 04:12:16 +08:00
Jonathan Sykes
c1a546a5c6
Keep shared layout visibility defaults in eager styles
2026-10-08 03:56:47 +08:00
Jonathan Sykes
40b92ebc0d
Request selected layout styles before common CSS blocks the bootstrap
2026-10-08 03:50:57 +08:00
Jonathan Sykes
5d6a1545df
Load layouts and optional features from staged asset caches
2026-10-08 01:29:50 +08:00
Jonathan Sykes
54a07a0a2a
Synchronize verified assets incrementally and guard update activation
2026-10-07 23:40:20 +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
233bf94e4c
Pause non-playback UI timers while the page is hidden
2026-10-07 03:30:57 +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
4e5b1584c6
Restore Bento theme integration lost during recovery
2026-10-04 22:47:33 +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
3c0adb2577
Keep Glass Stage section navigation and panel content clear of playback chrome
2026-10-03 21:45:34 +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
08ff8398b5
Transfer saved songs directly between paired devices with resumable OPFS writes
2026-10-03 20:32:45 +08:00
Jonathan Sykes
5e78374efb
Explain save failures and keep download diagnostics available
2026-10-03 19:23:07 +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
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
Jonathan Sykes
0374e19396
Add lazy piano transcription and optional leased server worker
2026-10-03 15:47:53 +08:00
Jonathan Sykes
d4354d220e
Preserve and display bilingual and phonetic lyric cues
2026-10-03 15:20:52 +08:00
Jonathan Sykes
c8ab741d72
Upgrade to ten-band EQ with migrated curves and headphone widening
2026-10-03 15:16:09 +08:00
Jonathan Sykes
0b3e82a768
Add voice search and large-control Car mode
2026-10-03 15:10:30 +08:00
Jonathan Sykes
172e8231f0
Import worship setlists with confirmed song matches and keys
2026-10-03 15:09:51 +08:00
Jonathan Sykes
de89508bf4
Add centre-panned vocal reduction to live and saved audio
2026-10-03 14:59:44 +08:00
Jonathan Sykes
7d84fdb3dc
Add transparent OBS lyrics output through presenter pairing
2026-10-03 14:58:20 +08:00
Jonathan Sykes
05e05ebace
Add learnable MIDI pedal controls with hot-plug support
2026-10-03 14:56:06 +08:00
Jonathan Sykes
b72d2e36a6
Add floating synced lyrics with picture-in-picture fallback
2026-10-03 14:54:23 +08:00
Jonathan Sykes
d7721045fb
Add host-approved party suggestions and live upvotes
2026-10-03 14:52:10 +08:00
Jonathan Sykes
75dbc468cc
Add download controls and device storage breakdown
2026-10-03 14:47:57 +08:00
Jonathan Sykes
09ae6a2a85
Organize settings into searchable sections with responsive navigation
2026-10-03 14:42:39 +08:00
Jonathan Sykes
5d94acf3f0
Chapter picker: tap the chapter badge to jump to any chapter
...
The CH badge by the scrubber is now a button opening a list of every chapter
(number, title, start time); the playing one is highlighted and scrolled into
view, a tap seeks there (and resumes if paused). Works with shared chapters and
YouTube's.
2026-10-03 07:50:15 +08:00
Jonathan Sykes
ea9e11d054
Loudness levelling (EBU R128, -14 LUFS) measured in the browser with WebAssembly
...
- frontend/wasm/loudness.c → loudness-wasm.js (1.5 KB, base64-embedded; built by
scripts/build-loudness-wasm.sh with clang or Zig's clang): K-weighting + 100 ms
energy steps. loudness.js does the 400 ms gating (abs -70 LUFS, rel -10 LU)
with an identical JS fallback. EBU Tech 3341 sine cases measure -23.0/-33.0
on both engines; a real track reads -21.7 vs ffmpeg ebur128 -21.8.
- The device measures from audio it already has (saved copy or the server
cache's m4a sidecar, songs up to 12 min, decoded natively at 22.05 kHz) and
reports the number to /api/loudness, so each song is measured once for
everyone; the server stores numbers only, no audio processing.
- The EQ graph gains a level stage (gain -> limiter) that eases each track
toward -14 LUFS (-12..+9 dB). Settings -> Playback -> Level volume: on by
default on Android/desktop, opt-in on iPhone (Web Audio stops sound when the
screen locks there).
2026-10-03 07:44:44 +08:00