Seafile sign-in follows the person across devices; sturdier Plex player; audiobooks frame with server-side secret sign-in
build-container / build (push) Successful in 3m16s

- Seafile token is saved on the server (encrypted) so Settings shows the real signed-in state everywhere
- Player: whole-track cache for current and next two, stall recovery, instant track changes, shuffle/repeat, Plex play counts, transcode fallback, Plex request timeout
- Audio tab: toolbar, full-height kept-alive frame; /api/audiobooks/enter adds the secret login link on the server

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-21 08:26:18 -04:00
1 parent 1a29d500d3
commit bc3710807d
8 files changed
+263 -44

No files matched your search

+9 -1
View File
@@ -199,7 +199,11 @@ body.inedit #view { padding: 0; display: flex; flex-direction: column; }
#audiowrap.off { position: fixed; left: -9999px; top: 0; width: 360px; height: 480px; overflow: hidden; }
#audiowrap.on { flex: 1; min-height: 0; padding: 0 calc(var(--sar) + 16px) 16px calc(var(--sal) + 16px); }
#audiowrap iframe { width: 100%; height: 100%; border: 1px solid var(--line); border-radius: 16px; background: var(--panel); }
body.onaudio #view { flex: none; overflow: visible; padding-bottom: 8px; }
body.onaudio #view { flex: none; overflow: visible; padding-bottom: 0; }
.abbar { display: flex; align-items: center; gap: 4px; padding: 6px calc(var(--sar) + 16px) 6px calc(var(--sal) + 16px); }
.abbar .grow { min-width: 0; display: flex; flex-direction: column; }
.abbar small { color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.abbar a.ibtn { display: inline-flex; align-items: center; justify-content: center; color: inherit; }
@media (min-width: 768px) { #audiowrap.on { padding-right: 32px; padding-left: 32px; padding-bottom: 24px; } }
/* Month calendar */
@@ -252,3 +256,7 @@ input, textarea, [contenteditable], .sheet p, .card p, #view .sub { -webkit-user
background: var(--text); color: var(--bg); padding: 8px 8px 8px 16px; border-radius: 14px; box-shadow: 0 6px 24px rgba(0,0,0,.35); max-width: 92vw; }
#upd .btn { min-height: 36px; background: var(--accent); color: var(--accent-t); }
@media (min-width: 768px) { #upd { bottom: 24px; } }
.np .ibtn.on { color: var(--accent); }
.np .ibtn[data-r="1"]::after { content: '1'; position: absolute; font-size: 10px; font-weight: 700; margin: 0 0 -14px 14px; }
.np .ibtn { position: relative; }