9 Commits

Author SHA1 Message Date
Scarriffle
cf1a1a26ff fix: de-duplicate the continue-listening row
ABS returns items-in-progress once per in-progress podcast episode (same item id),
which rendered duplicate cards. Collapse to one card per library item.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 12:30:00 +02:00
Scarriffle
85bd428df7 fix: modal stole input focus on every keystroke
The focus/scroll-lock effect depended on onClose (a new function each render), so it
re-ran on every keystroke and refocused the panel. Split focus-on-open from the Escape
listener so inputs in modals keep focus while typing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:42:26 +02:00
Scarriffle
4086c132cb feat: rename podcast episodes
Add a per-episode rename action (pencil, permission-gated) backed by
PATCH /api/podcasts/:id/episode/:episodeId; also add deleteEpisode API helper.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:39:19 +02:00
Scarriffle
ded05e18f4 ui: make player, top bar and bottom nav opaque
Drop the semi-transparent backgrounds and backdrop blur for a cleaner, solid look.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 21:33:05 +02:00
Scarriffle
a4ef9d4ba8 installer: build with devDependencies (npm ci --include=dev)
Fixes the tsc-not-found build error when NODE_ENV=production omits build tooling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 21:10:00 +02:00
Scarriffle
e570390902 ui: keep sidebar controls visible during playback; move collapse to header
- PlayerBar no longer overlaps the sidebar on desktop (offsets by sidebar width),
  so Settings/collapse stay reachable while playing.
- Sidebar collapse toggle moved onto the header logo icon; remove bottom button.
- Prod server: catch-all proxy so any non-SPA, non-asset request is forwarded to
  ABS — only Shelfless needs to be exposed, ABS stays internal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 21:00:49 +02:00
Scarriffle
757a6fab63 installer: accept ABS_URL/PORT as positional args, default REPO_URL
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:31:23 +02:00
Scarriffle
1e2b56e863 Stop tracking agent state and build info
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:23:37 +02:00
Scarriffle
83d8b7b99d Initial commit: Shelfless – alternative Audiobookshelf frontend
React + Vite + TypeScript SPA covering the full ABS feature set (library
browsing, item detail, metadata/cover editing, podcasts, player with session
sync, admin: users/libraries/scanner/server settings). Dev uses a dynamic
CORS proxy; production is served by server/index.mjs (static + reverse proxy
to ABS_URL). Includes systemd unit and installer under deploy/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 20:23:04 +02:00