| Age | Commit message (Expand) | Author |
| 2026-05-03 | refactor(api): extract Remuxer interface and move ffmpeg/MPEG-TS/mime logic t... | Paul Buetow |
| 2026-05-03 | test: raise coverage above 60% in cmd/mediaplayer, model, and probe | Paul Buetow |
| 2026-05-03 | fix(admin): fix rescan goroutine lifecycle and race on shared ScanProgress | Paul Buetow |
| 2026-05-03 | Fix media info and detached playback state | Paul Buetow |
| 2026-05-03 | feat: hybrid cache-busting for thumbnails and covers | 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 | more on this | Paul Buetow |
| 2026-05-02 | fix:x | Paul Buetow |
| 2026-05-01 | api: remux MPEG-TS files to MP4 on the fly | Paul Buetow |
| 2026-05-01 | fix(gc): pass cancellable context to GCWorker.run() to avoid goroutine leak (#5) | Paul Buetow |
| 2026-05-01 | task 4: DRY permission checking by extracting checkSetPermission helper | Paul Buetow |
| 2026-05-01 | Task 1: Create AuthService and route handleBootstrap/handleLogin through it | Paul Buetow |
| 2026-05-01 | refactor(api): split monolithic handlers.go into domain-specific files (task 3) | Paul Buetow |
| 2026-05-01 | service: split media.go (745 lines) into 5 focused files | Paul Buetow |
| 2026-05-01 | Split MediaService interface into role-specific interfaces to fix ISP/OCP vio... | Paul Buetow |
| 2026-05-01 | Add player stage collapse, multi-set selection, grid nav, m4b support, conten... | Paul Buetow |
| 2026-05-01 | add readme and so on | Paul Buetow |
| 2026-05-01 | Add support for audiobook/cover images with ancestor lookup and fix keyboard ... | Paul Buetow |
| 2026-05-01 | Make rescan asynchronous in background goroutine | Paul Buetow |
| 2026-05-01 | Add cover image detection for audio files in scanner | Paul Buetow |
| 2026-05-01 | Rename Go module from codeberg.org/snonux/play to codeberg.org/snonux/player | Paul Buetow |
| 2026-05-01 | Minimalist UI: hide all elements until activated; add help modal and keyboard... | Paul Buetow |
| 2026-04-30 | fix: permissions matrix UI now returns proper shape from backend | Paul Buetow |
| 2026-04-30 | pa: raise aggregate test coverage to 81.5% | Paul Buetow |
| 2026-04-30 | Wire playback resume end to end (task ka) | Paul Buetow |
| 2026-04-30 | task oa: Add SECURE_COOKIES config to control session cookie Secure flag | Paul Buetow |
| 2026-04-30 | task ia: fix media listing/filtering semantics (favorites bool, filesize filt... | Paul Buetow |
| 2026-04-30 | task ha: enforce upload limits, role checks, probing, thumbnails, cleanup | Paul Buetow |
| 2026-04-30 | ga — implement thumbnail and set cover regeneration end to end | Paul Buetow |
| 2026-04-30 | ja: implement public share landing page and improve error mapping | Paul Buetow |
| 2026-04-30 | task ea: wire filesystem scanner into app and admin rescan endpoint | Paul Buetow |
| 2026-04-30 | task da: enforce media access and owner/admin role permissions | Paul Buetow |
| 2026-04-30 | Rename module to codeberg.org/snonux/play (task aa) | Paul Buetow |
| 2026-04-30 | fix(ca): translate sql.ErrNoRows to nil,nil for optional lookups | Paul Buetow |
| 2026-04-30 | fix: allow static assets during bootstrap when no users exist | Paul Buetow |
| 2026-04-30 | refactor: use filepath.Join + filepath.Clean for filesystem paths | Paul Buetow |
| 2026-04-30 | refactor: extract query param parsing from handleListMedia | Paul Buetow |
| 2026-04-30 | refactor: extract nil service check into helper | Paul Buetow |
| 2026-04-30 | refactor: split repository.Store into focused interfaces | Paul Buetow |
| 2026-04-30 | fix: exclude soft-deleted media from GetMediaByID | Paul Buetow |
| 2026-04-30 | fix: seed random source in thumbnail generator | Paul Buetow |
| 2026-04-30 | fix: add explicit permission checks to StreamMedia and DownloadMedia | Paul Buetow |
| 2026-04-29 | fix: correct LIKE escape in ListMedia | Paul Buetow |
| 2026-04-29 | fix: prevent GCWorker.Stop panic on nil ticker or double stop | Paul Buetow |
| 2026-04-29 | fix: prevent path traversal in UploadMedia | Paul Buetow |
| 2026-04-29 | feat: implement filesystem scanner | Paul Buetow |
| 2026-04-29 | feat(n9): Implement MediaService, AdminService, ProgressService, GCWorker | Paul Buetow |
| 2026-04-29 | feat(q9): implement REST handlers, streaming, uploads, shares, notes, progres... | Paul Buetow |
| 2026-04-29 | q9: add table-driven httptest coverage for REST handlers | Paul Buetow |