nmemmert and Claude Sonnet 5.5
a3010299d0
Mail: folder unread counts refresh at once after a change, read state survives a late list, no wrong message after quick clicks, mark unread keeps the message in the list
...
build-container / build (push) Successful in 21m39s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 13:19:45 -04:00
nmemmert and Claude Sonnet 5.5
89fd595809
Home: header with date and quick actions, compact app launcher, two-column cards on wide screens, apps first on phones
...
build-container / build (push) Successful in 20m46s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 13:11:46 -04:00
nmemmert and Claude Sonnet 5.5
924a024b0b
PWA: install button, one icon badge for Signal, mail and tasks due, share target for files, manifest launch handler
...
build-container / build (push) Successful in 22m24s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 13:06:19 -04:00
nmemmert and Claude Sonnet 5.5
5c5a7b5155
Plex: edit a title's details (fields locked on save) and choose its poster or background, owner only, through a narrow write rule in the proxy
...
build-container / build (push) Successful in 19m31s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 12:42:32 -04:00
nmemmert and Claude Sonnet 5.5
b171f35be6
Plex Home: the owner's PIN is asked for and checked by plex.tv when switching back, wrong guesses are slowed down
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 12:39:24 -04:00
nmemmert and Claude Sonnet 5.5
d813884074
Calendar: several NE Hub calendars with colors, per-person view/edit sharing and per-calendar subscribe links; Movies & TV: converted video keeps the right time and seeks inside what the stream has
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 12:38:15 -04:00
nmemmert and Claude Sonnet 5.5
d25eae5920
Movies & TV: scrubbing the bottom-bar line previews and seeks once on release, Space on a focused button no longer toggles twice, skip updates the bar at once
...
build-container / build (push) Successful in 20m6s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:26:39 -04:00
nmemmert and Claude Sonnet 5.5
79dcd5cdf3
Movies & TV: the video controls live in the bottom bar like Music; the floating picture has no controls; tools along the top of the player page
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:24:05 -04:00
nmemmert and Claude Sonnet 5.5
2bde697955
Office: search, kind filter, sorting, pinned and recent documents, saved list, upload and drag-and-drop, document menu; Movies & TV mini player keeps its controls visible
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:18:48 -04:00
nmemmert and Claude Sonnet 5.5
1f08443c38
Mail: moving between messages no longer rebuilds the whole page (only the reader and the selected row change)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:12:59 -04:00
nmemmert and Claude Sonnet 5.5
0f324bbf60
Movies & TV: the video keeps playing in a mini player when you leave the player page, and comes back to the full player without restarting
...
build-container / build (push) Successful in 22m14s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:07:01 -04:00
nmemmert and Claude Sonnet 5.5
f232dc32d3
Movies & TV: custom player controls (seek bar, skip 10 s, previous and next episode, volume, speed, picture in picture), breadcrumbs and library pills on every page
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:04:11 -04:00
nmemmert and Claude Sonnet 5.5
2b79026157
Movies & TV: own full-screen button with a full-window fallback, first-episode button for unstarted shows; Plex sign-in survives plex.tv taking over the tab
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 11:00:20 -04:00
nmemmert and Claude Sonnet 5.5
f3216b2f3b
Movies & TV: browse and play your Plex movies and shows (resume, progress to Plex, next episode, quality, audio and subtitles, direct play or HLS conversion)
...
build-container / build (push) Successful in 20m38s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 10:49:53 -04:00
nmemmert and Claude Sonnet 5.5
84a0ea10e9
Mail: instant first paint from the last saved accounts, folders and list; Outlook folders in one batched call; gzip for app files and large mail responses
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 10:39:40 -04:00
nmemmert and Claude Sonnet 5.5
fb7aabff61
Mail opens faster: the page draws at once from a no-network status, the list, folders and unread counts load side by side, unread counts are cached and time-limited per account, IMAP keeps connections warmer and limits folder counting, messages are prefetched on hover
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 10:33:25 -04:00
nmemmert and Claude Sonnet 5.5
833342fced
Podcast Admin is now a built-in link on the Links page instead of its own menu entry
...
build-container / build (push) Successful in 19m43s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 09:36:31 -04:00
nmemmert and Claude Sonnet 5.5
dae19176cd
Music: use Plex as another person in your Plex Home (list, PIN, switch back), shown as Playing as <name>
...
build-container / build (push) Successful in 19m30s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 09:31:47 -04:00
nmemmert and Claude Sonnet 5.5
cedd6845ce
Files: sturdier Seafile pass-through (timeouts, retries, stop on disconnect), in-place sign-in, saved folder lists, upload name clashes, undo and recycle bin, library search, zip downloads, share link options, text viewer and editor
...
build-container / build (push) Successful in 20m19s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 09:16:40 -04:00
nmemmert and Claude Sonnet 5.5
004209ed4f
Mail: Gmail and iCloud (IMAP/SMTP with app passwords) alongside Outlook.com, several accounts per person with an account switcher, From choice and combined unread
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 09:06:52 -04:00
nmemmert and Claude Sonnet 5.5
4173d2c058
Planner: one compact toolbar (title, Calendar | Tasks, view switch, agenda range, Add event)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:59:29 -04:00
nmemmert and Claude Sonnet 5.5
b8ab84a009
Planner: Add event sits on the same row as the Calendar | Tasks switch
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:57:18 -04:00
nmemmert and Claude Sonnet 5.5
8d38584d37
Planner: Calendar and Tasks in one menu entry, due tasks shown on the calendar; menu, More sheet and Home tiles grouped by kind
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:56:31 -04:00
nmemmert and Claude Sonnet 5.5
b305ccac51
Reminders: style the morning time box like the other inputs (it was unreadable in dark mode)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:53:01 -04:00
nmemmert and Claude Sonnet 5.5
7ac843fea8
Settings: fix a stray closing tag that made the lower sections wider than the rest
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:52:11 -04:00
nmemmert and Claude Sonnet 5.5
5f639eec3c
Mail: fix opening messages (contentId is not selectable on the attachment list; fetch inline pictures whole)
...
build-container / build (push) Successful in 20m42s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:43:27 -04:00
nmemmert and Claude Sonnet 5.5
2d8d4f4d82
Mail setup inside the app: admins save the Microsoft app ID, secret and expiry in Settings, with the redirect address to copy, an expiry warning, and plain-language Microsoft errors
...
build-container / build (push) Successful in 20m34s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:17:40 -04:00
nmemmert and Claude Sonnet 5.5
5c224521d3
Add step-by-step Microsoft app registration guide for Mail
...
build-container / build (push) Successful in 21m40s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:12:18 -04:00
nmemmert and Claude Sonnet 5.5
a9c277b497
Mail: Outlook.com inside the app through Microsoft Graph (folders, reader, compose, reply, unread badge); Cypht webmail removed
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 08:09:11 -04:00
nmemmert and Claude Sonnet 5.5
1564941ea5
Split app.js into one script per feature; versioning covers every public file; README for the new features
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:57:51 -04:00
nmemmert and Claude Sonnet 5.5
c1f4a220f9
Web Push reminders for tasks and events (Settings -> Reminders)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:56:01 -04:00
nmemmert and Claude Sonnet 5.5
a0f1efc4ef
Version history in the file row menu too
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:54:10 -04:00
nmemmert and Claude Sonnet 5.5
70d69e7441
File version history (list, download, restore) for Seafile files
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:54:06 -04:00
nmemmert and Claude Sonnet 5.5
561b6181a0
Audit log (admin Activity list) and passkey recovery codes
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:53:41 -04:00
nmemmert and Claude Sonnet 5.5
c8399ccaa7
Plex playlists you can edit (create, add, remove, rename, delete, save queue), sleep timer
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:52:29 -04:00
nmemmert and Claude Sonnet 5.5
fa1452d23d
Calendar week and day views
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:50:38 -04:00
nmemmert and Claude Sonnet 5.5
e26b38a119
Repeating tasks and subtasks
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:49:03 -04:00
nmemmert and Claude Sonnet 5.5
4625848048
Offline shell (precache, offline notice) and accessibility layer (skip link, button names, sheet focus and Escape)
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:46:10 -04:00
nmemmert and Claude Sonnet 5.5
df8c6ce586
Command palette (Ctrl/Cmd-K), quick add with natural dates, links in search; links.js split out of app.js
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:45:33 -04:00
nmemmert and Claude Sonnet 5.5
1f8c9493b7
Harden the server and add a Links page
...
Security headers, cross-site write refusal, atomic JSON writes, admin backup download, /healthz and Docker health check, OnlyOffice requires a JWT secret, npm test, CI audit, arm64 hub image. New Links tab for personal bookmarks, saved with per-person settings.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-22 07:43:34 -04:00
nmemmert and Claude Sonnet 5.5
b0d3aec811
Home dashboard: live Now Playing card; report playback to Plex so it shows in the Plex dashboard
...
build-container / build (push) Successful in 12m40s
The Home Now Playing block is now the same live card as the Music tab.
The player sends Plex timeline updates (playing/paused/stopped, position every 10 s).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 15:14:34 -04:00
nmemmert and Claude Sonnet 5.5
fc0ae05415
Lyrics and karaoke for the music player
...
build-container / build (push) Successful in 12m8s
- full-screen lyrics view that follows the song: highlighted current line with a colour sweep (word by word when the source has word timing), tap a line to jump, text size, timing nudge, 'Wrong lyrics?' search
- Karaoke mode: the current line large and centered
- lyrics from Plex first, then the bundled Lyrica service (LRCLIB, Musixmatch via Lrcmux, NetEase, Megalobiz); YouTube captions never used; wrong-length recordings refused; answers kept in /data/lyrics
- lyrica/: Lyrica pinned to one commit, built by the workflow as hub-lyrica; compose service sharing the hub's network
- tools/lyrics-test.js
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 11:13:00 -04:00
nmemmert and Claude Sonnet 5.5
bfd37967c3
Signal: keep messages that arrive glued together, one chat per person, receipts by time, faster reconnect; edit contacts, clear and remove chats; debug list
...
build-container / build (push) Successful in 7m31s
- read every JSON value in a frame (lines, arrays), binary frames too
- a person seen by number and by private id is one conversation (merged)
- delivery/read receipts match on message time, not on who sent them
- reconnect every 1-5 s; the chat list says when the link was down
- /api/signal/debug: kinds of messages seen lately (no text)
- edit a contact (kept in the app and sent to Signal), clear messages, remove a chat; right-click menu in the list; name for a new number
- tests: 54 checks
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 11:00:34 -04:00
nmemmert and Claude Sonnet 5.5
522fdba4cd
Now Playing card on the Music tab; Signal alerts (chime, desktop notification, unread count in tab title and app icon)
...
build-container / build (push) Successful in 7m4s
- Music: a card with art, seek bar and controls above the albums, artists and playlists
- Signal: chime, optional desktop notification when the app is in the background, (n) in the tab title, app badge; Settings -> Signal alerts (per device)
- README, player test stand-in updated
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 10:47:15 -04:00
nmemmert and Claude Sonnet 5.5
d0070aa0bb
Signal chats in the app (desktop only) with a chat button on every screen
...
build-container / build (push) Successful in 6m44s
- signal.js: talks to signal-cli-rest-api (a linked device of your Signal account); keeps conversations in /data/signal; live updates; send/receive text, files, replies, reactions, groups, receipts
- Signal tab and a floating chat panel on every screen, shown only on desktop-class windows; new Signal permission per person
- compose: signal bridge container sharing the hub's network
- tools/signal-test.js (fake bridge), README
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 10:18:02 -04:00
nmemmert and Claude Sonnet 5.5
5157e42bc4
Mail opens the provider shortcuts by default; the webmail is one button away
...
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 10:03:34 -04:00
nmemmert and Claude Sonnet 5.5
f0df84bc5e
Cypht shares the hub's network so the hub reaches it at 127.0.0.1 on any network mode
...
Fixes 'cannot reach the webmail: ENOTFOUND' on hosts (ZimaOS/CasaOS) that keep network_mode: bridge, where container names do not resolve.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 09:46:21 -04:00
nmemmert and Claude Sonnet 5.5
7823bbcb03
Webmail is now Cypht (several accounts in one place) instead of Roundcube
...
build-container / build (push) Successful in 6m58s
- cypht/: official Cypht 2.13.0 on a SQLite file, served under /webmail/; workflow builds git.necloud.us/nate/hub-cypht
- the hub passes /webmail/ through behind the passkey sign-in and signs in to Cypht for you (CYPHT_PASSWORD)
- provider sign-in pages (Google, Microsoft) open in the whole window and return to the Mail tab; other links open in a new tab
- Gmail / Outlook.com / Office365 OAuth settings (Microsoft permissions patched to the current ones)
- Roundcube removed; README, compose and webmail tests updated
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 09:28:50 -04:00
nmemmert and Claude Sonnet 5.5
a7a5b155e3
Roundcube as its own image built by the workflow (no config file or newer Compose needed)
...
build-container / build (push) Successful in 6m6s
- roundcube/: official Roundcube plus hub.php settings
- workflow builds and pushes git.necloud.us/nate/hub-roundcube, and runs the player and webmail tests
- compose uses the image instead of an inline config
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 08:59:50 -04:00
nmemmert and Claude Sonnet 5.5
cdf862427e
Bundled Roundcube webmail in the Mail tab, optional Microsoft 365 OAuth sign-in, collapsible menu
...
build-container / build (push) Successful in 2m42s
- docker-compose: roundcube service with inline config (Gmail/iCloud/Yahoo presets, framing allowed, persistent key); only reachable through the hub
- hub passes /webmail/ through to Roundcube behind the passkey sign-in; Microsoft's sign-in page opens in the whole window and returns to the Mail tab
- M365_* settings add 'Login with Microsoft 365' (README has the Entra app registration steps)
- Side menu collapses to icons or hides completely (remembered per device, Ctrl/Cmd+B)
- tools/webmail-test.js
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-21 08:56:13 -04:00