Commit Graph
68 Commits
Author SHA1 Message Date
nmemmertandClaude Sonnet 5.5 e8b46bb3aa Music: choose which Plex music library to browse
build-container / build (push) Successful in 1m54s
Lists every music library on the server, remembers the choice per server,
and shows it under the title with a picker.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:48:27 -04:00
nmemmertandClaude Sonnet 5.5 f14a726f32 Log data location and counts at startup; give the compose volume a fixed name
build-container / build (push) Successful in 1m59s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:46:55 -04:00
nmemmertandClaude Sonnet 5.5 e9397f1f21 Calendar: month grid view
build-container / build (push) Successful in 1m45s
Month view (default) with event dots on phones and event labels on
tablet/desktop, tap a day to see its events, previous/next/today.
The agenda list stays available.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:45:24 -04:00
nmemmertandClaude Sonnet 5.5 96fb6d807c Fix truncated responses from compressed upstreams
build-container / build (push) Successful in 2m21s
fetch() decompresses transparently, but the proxies forwarded the upstream
content-length, so browsers cut compressed Plex/Seafile responses short and
JSON.parse failed. Ask Plex for identity encoding and drop the stale length
whenever the upstream response was encoded.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:41:14 -04:00
nmemmertandClaude Sonnet 5.5 4227883a29 Plex: group connection failures so public/relay results are visible
build-container / build (push) Successful in 2m20s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:34:06 -04:00
nmemmertandClaude Sonnet 5.5 b5fb8b9c03 Keep the audiobooks frame alive when switching tabs
build-container / build (push) Successful in 2m12s
The frame was rebuilt with the page content on every route change, which
stopped playback. It now lives outside the view and is only shown or hidden.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:33:09 -04:00
nmemmertandClaude Sonnet 5.5 cff7e9e59c Plex: read the server identity as JSON or XML and show ids on mismatch
build-container / build (push) Successful in 2m3s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:27:42 -04:00
nmemmertandClaude Sonnet 5.5 732b73677b Plex: try the server's LAN address first, allow a manual address
build-container / build (push) Successful in 2m6s
Connecting through plex.direct names failed from the container (DNS and
hairpin NAT). Try http://<lan-ip>:<port> first, verify the server's
machine identifier before sending the token, and let the user type an
address when discovery fails.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:20:39 -04:00
nmemmertandClaude Sonnet 5.5 4456c03cd0 Office tab: create, list and edit documents in place, saved in Seafile
build-container / build (push) Successful in 2m19s
- Choose where documents are saved (library + folder picker, like Files); remembered
- New document/spreadsheet/presentation asks for a name and shows the save location
- Documents in that location are listed in the tab; opening one edits it inside the tab
  with the navigation visible and a Back to Office button
- Fix double slash in editor URLs

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:19:52 -04:00
nmemmertandClaude Sonnet 5.5 b5603d2488 Office tab: create documents, spreadsheets and presentations
build-container / build (push) Successful in 2m49s
The Office tab was just the OnlyOffice welcome page. It now offers New
document/spreadsheet/presentation, creates the file in Seafile from a valid
blank template (empty 0-byte files often will not open in the editor) and
opens it in the editor. Files > New uses the same templates.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:17:03 -04:00
nmemmertandClaude Sonnet 5.5 cd48ccf8e0 Report why each Plex connection failed
build-container / build (push) Successful in 2m25s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:11:37 -04:00
nmemmertandClaude Sonnet 5.5 943f510ec4 Use PUBLIC_URL for the passkey origin; warn on weak cookie secrets
build-container / build (push) Successful in 2m39s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 14:00:44 -04:00
nmemmertandClaude Sonnet 5.5 1b49ee6cb4 Add DNS servers to the compose service
build-container / build (push) Successful in 1m36s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:59:31 -04:00
nmemmertandClaude Sonnet 5.5 a4907e0cee Show the underlying cause when Seafile is unreachable
build-container / build (push) Successful in 2m25s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:49:10 -04:00
nmemmertandClaude Sonnet 5.5 34a8d28059 Put the environment settings in docker-compose.yml
build-container / build (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:31:01 -04:00
nmemmertandClaude Sonnet 5.5 0be9a3cd10 Build the container for x86 (amd64) only
build-container / build (push) Successful in 2m31s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:25:55 -04:00
nmemmertandClaude Sonnet 5.5 cf23472ad6 Add search, calendar, music queue/resume, file actions, More menu
build-container / build (push) Canceled after 0s
- Calendar agenda from private ICS feeds (recurrence, EXDATE, overrides, time zones, SSRF guard)
- Search across libraries, files (recursive fallback) and Plex
- Home dashboard: now playing, today's agenda, recent files
- Files: rename, move, share link, preview, create new documents
- Music: recently added, play next / add to queue, queue sheet, resume on launch
- Phone tab bar shows four tabs plus a More menu

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:24:54 -04:00
nmemmertandClaude Sonnet 5.5 55e0c39171 NE Hub: Seafile, OnlyOffice, Plex, calendar and mail in one PWA
build-container / build (push) Canceled after 4m16s
- Mobile-first PWA (phone tab bar with More menu, iPad/desktop rail)
- Passkey (WebAuthn) sign-in gates the whole app; first passkey via setup code
- Files: Seafile browse/upload/new doc/rename/move/share link/preview/delete
- In-app OnlyOffice editing with JWT-signed configs and save-back to Seafile
- Plex music player via plex.tv sign-in and a server-side proxy
- Calendar agenda from private ICS links (recurrence + time zones)
- Search, Home dashboard, webmail deep links, audiobooks frame
- Dockerfile, compose, and a Gitea Actions workflow that builds the image

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 13:22:03 -04:00