| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-05-17 | Restructure repo: move Go server into player-server/ | Paul Buetow | |
| 2026-05-17 | Add in-progress frontend actions | Paul Buetow | |
| 2026-05-09 | s1 keep scan indicator above admin modal | Paul Buetow | |
| 2026-05-09 | s1 keep scan progress visible | Paul Buetow | |
| 2026-05-09 | s1 add media rescan hotkey and progress indicator | Paul Buetow | |
| 2026-05-09 | Fix media Enter key handling (o1) | Paul Buetow | |
| 2026-05-09 | Address shuffle reshuffle review notes (q1) | Paul Buetow | |
| 2026-05-09 | Fix shuffle hotkey reshuffle behavior (q1) | Paul Buetow | |
| 2026-05-09 | Refine media browsing and set covers | Paul Buetow | |
| 2026-05-07 | Fix mobile admin permissions layout for l1 | Paul Buetow | |
| 2026-05-07 | Fix podcast browser workflows for k1 | Paul Buetow | |
| 2026-05-07 | h1 fix browser auth theme shortcuts QA | Paul Buetow | |
| 2026-05-07 | Fix podcast episode pagination arguments (p0) | Paul Buetow | |
| 2026-05-07 | b1 split player module | Paul Buetow | |
| 2026-05-07 | Task 61 extract frontend utilities | Paul Buetow | |
| 2026-05-06 | Split app.js into view modules for task 71 | Paul Buetow | |
| 2026-05-06 | Add q hotkey to stop playback and close player | Paul Buetow | |
| 2026-05-06 | Add T hotkey to regenerate thumbnail of selected item | Paul Buetow | |
| 2026-05-06 | Add crop position/anchor control hotkeys | Paul Buetow | |
| 2026-05-06 | Add PgUp/PgDn 10% seek in fullscreen mode | Paul Buetow | |
| 2026-05-06 | Add search syntax help tooltip (? key in search box) | Paul Buetow | |
| 2026-05-06 | Add Down/j hotkey to exit filter and return to thumbnail grid | Paul Buetow | |
| 2026-05-06 | Add player logo to site header | Paul Buetow | |
| 2026-05-06 | Fix music video duration display in progress bar | Paul Buetow | |
| 2026-05-06 | Add 'R' hotkey to play a random track from the current media list | Paul Buetow | |
| 2026-05-05 | Add fullscreen crop mode toggle (hotkey c) | Paul Buetow | |
| - In fullscreen, press 'c' to toggle object-fit between contain (default) and fill (stretches to fill, no aspect ratio preservation). - Adds .player.crop-mode video { object-fit: fill; } in player.css. - Adds toggleCrop() in player.js that toggles a crop-mode class and a small UI indicator (✂️) in the controls, visible only in fullscreen. - Resets crop mode back to contain when exiting fullscreen (via Escape, minimize, or fullscreenchange event). - Wires the 'c' hotkey in keyboard.js and registers toggleCrop in app.js. - Adds crop-indicator to index.html and detach.html controls, and documents the shortcut in the help modal. | |||
| 2026-05-05 | Fix podcast migration backward compatibility and login logo width | Paul Buetow | |
| 2026-05-05 | Fix podcast support critical bugs from code review | Paul Buetow | |
| - Fix boolean scanning from SQLite INTEGER columns (intToBool helper) - Fix BrowseSet LIMIT 0 returning zero episodes (use 1000 instead) - Fix checkFeed double-fetch by parsing from resp.Body directly + Add ParseFeedReader for body reuse - Fix file handle leak in DownloadEpisode (explicit Close before ImportMediaFile) - Fix incomplete rollback in DownloadEpisode (remove file + delete media row) - Fix 204 No Content handler writing 'null' body - Fix DownloadCoverImage to accept *http.Client with timeout - Deduplicate uniqueFilename into shared internal/service/filename.go - Wire frontend renderPodcastEpisodes into renderBrowse from API data - Refactor podcasts.js: remove extra API call, fix toggle toast, remove duplicate toast - Add Config.PodcastCheckMinutes + PODCAST_CHECK_INTERVAL_MINUTES env var - Start background CheckFeeds goroutine in main.go with ticker - Update NewPodcastService to accept checkInterval parameter - Log errors from CheckFeeds and episode creation instead of silently discarding | |||
| 2026-05-05 | Add frontend podcast manager UI and episode renderer | Paul Buetow | |
| 2026-05-05 | Add frontend podcast support: API wrappers, episode cards, feed manager modal | Paul Buetow | |
| 2026-05-04 | Widen logo crop to preserve full wordmark | Paul Buetow | |
| 2026-05-04 | Fix logo crop: preserve full wordmark while removing excess whitespace | Paul Buetow | |
| 2026-05-04 | Trim excess whitespace from logo PNGs | Paul Buetow | |
| 2026-05-04 | Use white-background PNG logo for README, favicon, and login | Paul Buetow | |
| - Generate logo.png (white bg) from SVG for README and login screen - Regenerate favicon.ico from white-background logo - Keep original logo.svg available for future edits - Update server routes and middleware to serve new logo.png | |||
| 2026-05-04 | Add project logo, favicon, and display logo on login screen | Paul Buetow | |
| - Add logo.svg at project root and reference it in README.md - Generate favicon.ico from logo and place in web/ - Serve logo.svg and favicon.ico as static assets - Display logo on the login page with responsive sizing | |||
| 2026-05-03 | fix(admin): fix rescan goroutine lifecycle and race on shared ScanProgress | Paul Buetow | |
| - Protect adminService scan state (cancel func + progress pointer) with sync.Mutex. - Allocate fresh ScanProgress per trigger and pass it to the scanner, eliminating races on the previously shared progress struct. - Cancel previous scan context before starting a new one. - Add tests for cancellation, fresh progress per scan, concurrent triggers, and empty progress when never started. - Fix race-prone tests by polling Running==true before waiting for completion. | |||
| 2026-05-03 | Fix media info and detached playback state | Paul Buetow | |
| 2026-05-03 | Fix: Sidebar visibility on page load | Paul Buetow | |
| 2026-05-03 | feat: hybrid cache-busting for thumbnails and covers | Paul Buetow | |
| - Add Cache-Control: no-cache headers to thumbnail and cover endpoints (GET /api/media/{id}/thumbnail, GET /api/sets/{id}/cover, GET /s/{token}/thumbnail) so browsers revalidate instead of serving stale cached images after regeneration. - Add frontend cache-busting via ?t=Date.now() after folder cover regeneration so the browser fetches the newly overwritten image. - Replace toolbar filters with inline search syntax (min:, max:, tag:, like:, type:, sort:, minsize:, maxsize:) for faster filtering. - Remove dedicated toolbar and advanced filter panel; consolidate all filtering into the search bar. - Expand filter state to support filesize_min/filesize_max. | |||
| 2026-05-02 | refine playback navigation and player modes | Paul Buetow | |
| 2026-05-02 | add playback navigation shortcuts | Paul Buetow | |
| 2026-05-02 | add player minimize toggle | Paul Buetow | |
| 2026-05-02 | show audiobook covers as cards | Paul Buetow | |
| 2026-05-02 | show buffered media progress | Paul Buetow | |
| 2026-05-02 | fix detached playback and scan progress | Paul Buetow | |
| 2026-05-02 | feat: secure shares with keyboard-first My Shares modal (hotkeys S/L) | Paul Buetow | |
| 2026-05-02 | Paul Buetow | ||
| 2026-05-02 | switch sidebar hotkey to s, always rebuild/rescan in start.sh, bump sw.js cache | Paul Buetow | |
| 2026-05-02 | fix:x | Paul Buetow | |
| 2026-05-01 | Add player stage collapse, multi-set selection, grid nav, m4b support, ↵ | Paul Buetow | |
| content-type fixes, thumbnail refresh, and verbose logging | |||
