Replace usages of parseFloat(... ) || default and parseInt(... ) || default with explicit parse + isNaN checks to avoid treating valid numeric zeros as falsy. Changes in js/settings.js and js/storage.js update parsing for replayGain preamp, playback speed, scrobble percentage, equalizer band count, and font size so only NaN triggers the fallback value and valid 0 values are preserved.
* Refine fullscreen player to look more like apple music
* fix: buttons when in visualizer only mode
* fix: mobile sizing
* Update styles.css
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update js/ui.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat: refine fullscreen apple player
* fix: add lyrics toggle for mobile
* add lyrics toggle for mobile
* wrong branch oops 😭
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Removed unnecessary preconnect link to jsDelivr in index.html.
- Added lazy loading to contribs in app.js for improved performance.
- Implemented dynamic loading of am-lyrics and shaka based on image loading status to reduce lcp
- Introduced waitForImagesLoading function in player.js to ensure all images are loaded before initializing the player
- Enhanced image loading attributes in ui.js to include fetchpriority based on loading strategy.
- Updated package.json to include vite-plugin-purgecss for CSS optimization
- Configured Vite to use purgecss and enabled tree-shaking in vite.config.ts to reduce bundle size
Android:
- Fix stale wake lock detection by checking isHeld() before reacquiring
- Wrap startForegroundService in try-catch to handle launch exceptions
- Add START/STOP intent actions to prevent stop/start race condition
HTML/Accessibility:
- Convert preset and preamp spans to proper <label> elements
- Add aria-controls to database collapse button
- Sync aria-expanded state when toggling database panel
JavaScript:
- Guard auto-resume with source check to avoid resuming when not playing
- Add _calculateQ() fallback in fast-path EQ filter updates
- Persist graphic EQ gains and preamp to storage from setters
- Include 'legacy' in EQ mode restoration check
- Clear container before rebuilding GEQ bands for idempotency
- Use AbortController for document-level listener cleanup
- Apply gain calculation for non-parametric modes in touch snap
- Validate stored GEQ values are finite numbers
CSS:
- Remove non-standard appearance: slider-vertical property