| update readme | +1 | -1 |
| update readme | +2 | -2 |
| update demo link | +1 | -1 |
| update default styling | +149 | -17 |
| only register service worker when launched as PWA | +12 | -4 |
| freeze cache after first install | +24 | -70 |
| make URLs absolute relative to service worker location | +2 | -3 |
| cache non-audio files in /mix (fonts, images, etc.) | +10 | -4 |
| marquee: use smoothstep for speed ramping | +50 | -72 |
| keep progress bar height fixed on vertical resize | +2 | -0 |
| reorder: capture playlist width before mutating DOM | +1 | -1 |
| QR codes: use half-block characters | +12 | -5 |
| bugfix: when first track tapped immediately after opening, play it | +5 | -0 |
| serve.py: use ThreadingTCPServer | +2 | -1 |
| first pass at track reordering when running locally | +516 | -55 |
| Create FUNDING.yml | +1 | -0 |
| host.py -> serve.py; update readme | +4 | -4 |
| don't use cache on localhost; improve offline reliability | +21 | -6 |
| update readme | +2 | -2 |
| update readme: add link to PWA installation guide | +1 | -1 |
| update readme | +2 | -2 |
| update readme | +13 | -13 |
| catalog.py -> scan.py; remove manifest.json from staticFiles in script.js | +4 | -5 |
| get PWA bg color from custom.css if available | +18 | -19 |
| build.py -> catalog.py; generate_manifests.py -> build.py | +300 | -491 |
| remove resource-manifest; tracks instead of songs; load static files first | +308 | -257 |
| use cache: 'no-cache' during sw install | +1 | -1 |
| replace control icon pngs with svgs | +177 | -23 |
| use repeat.svg icon; clean up generate_manifests.py | +63 | -43 |
| Update readme.md | +1 | -1 |
| disable caching during local dev | +6 | -2 |
| disable pinch zoom and double-tap zoom | +1 | -1 |
| cleanly loop marquee when title overflows | +37 | -60 |
| update play/pause button on bluetooth disconnect | +4 | -0 |
| generate_manifests.py: auto-increment cache version | +29 | -1 |
| host.py: exit cleanly | +4 | -1 |
| fall back gracefully if optional packages not available | +26 | -28 |
| buy.py: automatically add purchased songs to /mix | +52 | -4 |
| update readme | +2 | -2 |
| renamed scan.py -> build.py | +4 | -4 |
| remove safety from scan.py | +0 | -7 |
| use var(--background) for shadow-overlay | +2 | -2 |
| fix host.py venv creation and pip installation | +26 | -10 |
| fix scan.py venv creation and pip installation | +26 | -10 |
| update readme | +5 | -6 |
| pre-cache optional mix/ files | +19 | -13 |
| set default page title when manifest not available | +12 | -9 |
| support optional custom.css and custom.js; rename tracks/ to mix/ | +59 | -48 |
| broaden support for different audio file formats | +43 | -28 |
| add buy.py; make scripts executable | +125 | -5 |
| just mixapps. it's cleaner. | +11 | -11 |
| reduce timeout for checking if we need to play the next song | +1 | -1 |
| update spacing on controls | +2 | -2 |
| add spacing below controls | +1 | -1 |
| don't generate manifest when testing locally with host.py | +1 | -31 |
| fix PWA icon path to use absolute URL for subdirectory deployments | +1 | -1 |
| update link to pwa installation guide | +3 | -3 |
| restructure readme | +34 | -23 |
| restructure | +1475 | -1475 |
| set page title from manifest | +9 | -1 |
| support localhost installation/caching | +99 | -45 |
| move tracks.json to /tracks; host.py: print server addresses last | +13 | -10 |
| add rip.py; scan.py: strip preceeding track numbers | +411 | -1 |
| update readme.md | +4 | -4 |
| update requirements.txt to use any version of mutagen | +1 | -1 |
| update .gitignore | +3 | -4 |
| Fix cache detection for tracks with spaces in filenames | +8 | -11 |
| cache first, only hit server on cache miss; remove hardcoded strings | +95 | -53 |
| update readme.md | +11 | -10 |
| update readme.md | +1 | -1 |
| reference license from readme | +193 | -193 |
| add license | +674 | -0 |
| update readme.md | +1 | -6 |
| add lock_sreen.jpeg | +2 | -1 |
| update readme.md | +3 | -3 |
| add readme.md | +65 | -0 |
| specify BASE_PATH & APP_NAME fields in generate_manifests.py | +18 | -8 |
| parse styles.css to set PWA theme color | +30 | -2 |
| add padding to app icon | +0 | -0 |
| fix iOS safari bug where next song wouldn't reliably play if PWA was in background | +37 | -0 |
| fix "now playing" flicker; fix album art url | +9 | -117 |
| set theme color | +3 | -4 |
| fade in tracks when cached | +317 | -33 |
| wip pwa support | +213 | -4 |
| don't open web browser on server start | +0 | -3 |
| console log total filesize of all mp3s | +6 | -1 |
| print QR code in terminal using block characters | +97 | -5 |
| make shadow-overlay use background color | +3 | -3 |
| increase progress bar vertical hitbox | +12 | -0 |
| add optional shuffle flag | +12 | -1 |
| remove album_art from git tracking | +0 | -0 |
| update .gitignore | +1 | -0 |
| add temp album art | +42 | -32 |
| improve mobile layout when playlist doesn't overflow | +4 | -2 |
| increase padding to avoid unscrollable playlist items | +1 | -1 |
| responsive button sizing | +20 | -11 |
| wrap control-buttons to avoid accidentally clicking tracks | +20 | -7 |
| add scrolling marquee on text overflow | +198 | -33 |
| preload resources/tracks to improve responsiveness | +277 | -3 |
| handle seeking in unbuffered tracks | +103 | -5 |
| improve progress bar handle styling | +6 | -7 |
| only show "Paused" if user paused the track | +5 | -2 |
| support dragging progress bar on mobile | +10 | -1 |
| disable text highlight | +3 | -0 |
| update favicon | +1 | -1 |
| mobile: use primary color when tapping song; adjust shadow | +14 | -11 |
| disable overscroll; update favicon to 💿 | +17 | -1 |
| rename css variables; disable user-select | +45 | -45 |
| make buttons look kinda 3D | +15 | -8 |
| nudge prev/next/play buttons for visual balance | +4 | -0 |
| update highlight styling + button styling | +10 | -9 |
| wip padding changes | +5 | -3 |
| wip UI shadows | +41 | -5 |
| split out html, css, and js | +591 | -595 |
| style scrollbar | +7 | -3 |
| add modern progress bar | +135 | -55 |
| initial commit | +823 | -0 |