Commit Graph

11 Commits

Author SHA1 Message Date
Myron Blair 4397617cf1 Add mobile navigation menu
Nav links (Library/Series/Shelf/Music/Wishlist/Admin) were hidden below the
md breakpoint with no mobile alternative — there was no way to navigate the
app at all on a phone besides the logo link and search/settings icons.
Adds a hamburger toggle and slide-down menu with the same links plus
Upload/Settings/Sign Out, closing automatically on navigation.
2026-07-27 19:24:19 -05:00
Myron Blair e54803abb0 Add app version number, shown in Navbar next to the logo
New backend/VERSION file (starts at 1.0.0) served via GET /api/version,
displayed as a small "v1.0.0" next to the StreamHoard wordmark. Going
forward I'll bump this on meaningful changes -- patch for fixes, minor
for new features, major for big/breaking redesigns.
2026-07-27 00:01:04 -05:00
Myron Blair 43340c0f49 Remove redundant nav entries; parallelize cleanup file checks
- Navbar: drop the Users link (already reachable from Admin's quick-links)
- Admin quick-links: drop Settings (already reachable from the navbar
  for every user)
- library_cleanup.py: parallelize the missing-file stat checks across a
  small thread pool instead of one file at a time — sequential NAS round
  trips were taking minutes for a library of any real size, even after
  moving them off the event loop.
2026-07-26 23:05:53 -05:00
Myron Blair 514cbad4ab Add filesystem Library Scan (movies/tv/music) and a full Music library
- New admin Library Scan page walks the NAS mounts directly for movies,
  TV, and music not already in Radarr/Sonarr/local storage, and imports
  them with storage_type=scan (fully integrated: streamable, transcodable,
  listed in Admin) — Radarr/Sonarr import flows are untouched.
- New Music section (nav tab, album-grid browse, per-album track list,
  persistent bottom player with queue/seek) backed by a Track model and
  range-request audio streaming endpoint.
- MusicBrainz + Cover Art Archive integration (free, no API key) to fill
  in album art for scanned tracks, paced to their 1 req/sec rate limit.
- Mounted the NAS music share into CT104 (new mp2 LXC mountpoint,
  CIFS read-only) alongside the existing video mount.
- Optional Bluetooth/output-device picker on the player bar via the Audio
  Output Devices API (setSinkId) for already-paired speakers — Chrome/Edge
  only, since browsers can't pair new BT devices directly.
2026-07-26 20:25:41 -05:00
Myron Blair f7626ced2e Merge watch profiles into user accounts — one profile per login, no picker
- Removed the "Who's Watching" sub-profile picker entirely: ProfileProvider now
  auto-resolves the single profile tied to the account immediately after login
- Backend: removed POST/DELETE /profiles (no more creating/deleting extra
  profiles — lifecycle is entirely driven by user create/delete, already wired
  in the admin Users CRUD); kept GET (internal) and PATCH (edit your own
  profile's avatar/kids-mode/rating cap)
- Deleted ProfileSelect page and the now-unused ProtectedRoute component
- Navbar: removed the "switch profile" action, account avatar is now just a
  static display
- api.js: dropped the now-dead X-Profile-Id header logic (backend already
  falls back to the account's single profile when the header is absent)
2026-07-26 19:40:12 -05:00
Myron Blair 5b191da471 Add user management (CRUD + admin toggle), make Settings available to all users
- New /admin/users page: create/delete users, toggle admin role, guarded against
  self-demotion/self-deletion
- Backend: GET/POST/PATCH/DELETE /api/admin/users, admin-only
- Settings moved from /admin/settings to /settings (all logged-in users); the
  password-change section shows for everyone, integration/API-key sections only
  render (and only fetch) for admins, since those endpoints stay admin-gated
- Navbar: Settings link now visible to all users; added Users nav link for admins
2026-07-26 19:21:50 -05:00
Myron Blair e27bb37f7b Rebrand StreamHoard, strip Emergent.sh platform artifacts
- Remove .emergent/ state dir, tracked .gitconfig, @emergentbase/visual-edits
  dep + craco wiring, emergent.sh script/meta tags, PostHog telemetry snippet
- Rename UI/docs branding Kino -> StreamHoard (README, DEPLOY.md, Navbar,
  Login, Register, AdminShowEpisodes, FastAPI title, health check response)
- Rename docker-compose container/network names to streamhoard-*
- Default admin email domain -> admin@streamhoard.local
2026-07-23 20:20:29 -05:00
emergent-agent-e1 bd8480bd14 auto-commit for 0175172f-4f7e-4804-ad7f-68312dcdad0d 2026-07-23 22:23:41 +00:00
emergent-agent-e1 22d8479b39 auto-commit for b082c1c8-f6e3-4cfd-82ee-0396c70d1a00 2026-07-23 22:18:08 +00:00
emergent-agent-e1 cdc8c8955f auto-commit for 14921357-f5e2-4aba-b4c1-a07a52c800cc 2026-04-29 16:01:20 +00:00
emergent-agent-e1 356aa13063 auto-commit for df4b0748-985b-4592-8c48-1e56102f3613 2026-04-29 14:49:07 +00:00