summaryrefslogtreecommitdiff
path: root/web/js
AgeCommit message (Collapse)Author
2026-05-17Restructure repo: move Go server into player-server/Paul Buetow
2026-05-17Add in-progress frontend actionsPaul Buetow
2026-05-09s1 keep scan indicator above admin modalPaul Buetow
2026-05-09s1 keep scan progress visiblePaul Buetow
2026-05-09s1 add media rescan hotkey and progress indicatorPaul Buetow
2026-05-09Fix media Enter key handling (o1)Paul Buetow
2026-05-09Address shuffle reshuffle review notes (q1)Paul Buetow
2026-05-09Fix shuffle hotkey reshuffle behavior (q1)Paul Buetow
2026-05-09Refine media browsing and set coversPaul Buetow
2026-05-07Fix podcast browser workflows for k1Paul Buetow
2026-05-07h1 fix browser auth theme shortcuts QAPaul Buetow
2026-05-07Fix podcast episode pagination arguments (p0)Paul Buetow
2026-05-07b1 split player modulePaul Buetow
2026-05-07Task 61 extract frontend utilitiesPaul Buetow
2026-05-06Split app.js into view modules for task 71Paul Buetow
2026-05-06Add q hotkey to stop playback and close playerPaul Buetow
2026-05-06Add T hotkey to regenerate thumbnail of selected itemPaul Buetow
2026-05-06Add crop position/anchor control hotkeysPaul Buetow
2026-05-06Add PgUp/PgDn 10% seek in fullscreen modePaul Buetow
2026-05-06Add search syntax help tooltip (? key in search box)Paul Buetow
2026-05-06Add Down/j hotkey to exit filter and return to thumbnail gridPaul Buetow
2026-05-06Fix music video duration display in progress barPaul Buetow
2026-05-06Add 'R' hotkey to play a random track from the current media listPaul Buetow
2026-05-05Add 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-05Fix podcast support critical bugs from code reviewPaul 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-05Add frontend podcast manager UI and episode rendererPaul Buetow
2026-05-05Add frontend podcast support: API wrappers, episode cards, feed manager modalPaul Buetow
2026-05-03fix(admin): fix rescan goroutine lifecycle and race on shared ScanProgressPaul 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-03Fix media info and detached playback statePaul Buetow
2026-05-03Fix: Sidebar visibility on page loadPaul Buetow
2026-05-03feat: hybrid cache-busting for thumbnails and coversPaul 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-02refine playback navigation and player modesPaul Buetow
2026-05-02add playback navigation shortcutsPaul Buetow
2026-05-02add player minimize togglePaul Buetow
2026-05-02show audiobook covers as cardsPaul Buetow
2026-05-02show buffered media progressPaul Buetow
2026-05-02fix detached playback and scan progressPaul Buetow
2026-05-02feat: secure shares with keyboard-first My Shares modal (hotkeys S/L)Paul Buetow
2026-05-02more on thisPaul Buetow
2026-05-02switch sidebar hotkey to s, always rebuild/rescan in start.sh, bump sw.js cachePaul Buetow
2026-05-02fix:xPaul Buetow
2026-05-01Add player stage collapse, multi-set selection, grid nav, m4b support, ↵Paul Buetow
content-type fixes, thumbnail refresh, and verbose logging
2026-05-01add readme and so onPaul Buetow
2026-05-01Add support for audiobook/cover images with ancestor lookup and fix keyboard ↵Paul Buetow
navigation Backend: - Add UpdateMediaThumbnail to MediaRepo for efficient thumbnail-only updates - Update ScannerStore interface to include thumbnail update capability - Update mock implementations across repository and API layers for interface changes - Enhance scanner to detect image files in ancestor directories for audio covers - Add background goroutine for async rescan to avoid HTTP timeout Frontend: - Fix hjkl cursor keys to navigate grid properly - Implement ancestor directory cover image lookup for audiobooks Infrastructure: - Add start.sh helper script for quick server startup during development
2026-05-01Add cover image detection for audio files in scannerPaul Buetow
During scanning, when an audio file is found in a directory that also contains an image file (jpg/png/gif), the scanner now assigns that image as the audio file's thumbnail_path. This is common for audiobooks which have cover.jpg alongside the audio files. Changes: - scanner: two-pass walk to collect sibling images, then pair with audio - CSS: add .row-cover style for audio items with covers - JS: render audio rows with cover images when thumbnail_path is set
2026-05-01Minimalist UI: hide all elements until activated; add help modal and ↵Paul Buetow
keyboard shortcuts - Redesign UI to be invisible by default: only header + '?' button shown - Press m to show sidebar, t for toolbar, / for search, ? for help - Add help modal with all keyboard shortcuts - Fix scanner to skip corrupt/unprobeable files instead of aborting - Fix scanner to skip thumbnail errors instead of aborting - Fix rescan to use background context so it completes after HTTP response - Rename project from KISS Media Player to Player
2026-04-30mobile: responsive layout, touch-friendly progress bar, collapsible filtersPaul Buetow
- Add mobile breakpoints (860px/520px) with compact header, full-width sidebar overlay, flexible search bar, and adaptive toolbar. - Player now spans full width on mobile and has reduced stage height. - Progress bar gains touch-drag support (touchstart/move/end) for mobile seeking. - Collapse advanced filters (tags/duration/filesize) behind a 'Filters' toggle to keep the default toolbar KISS. Only type and favorites remain always visible.
2026-04-30task la: finish admin SPA workflows (permissions matrix UI, trash restore, ↵Paul Buetow
self-delete UX)
2026-04-30[ma] Add missing SPA controls: download, tags, thumbnail/cover regen, ↵Paul Buetow
upload, filesize display, duration/filesize/tag filters, favorites
2026-04-30na: Remove inline styles and non-theme color literals from frontendPaul Buetow