Commit graph

170 commits

Author SHA1 Message Date
tryptz
bee43e7e89 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
4c35bed3f2 feat: EQ Studio header, channel select in band editor, tab reorder, legend toggle
- Rename section header to EQ Studio with updated description
- Add ST/M/S channel select dropdown to each parametric band control
- Move Parametric EQ tab before AutoEQ
- Hide Original/Target/Corrected legend in parametric mode
2026-04-10 16:06:04 +03:00
tryptz
2cc95c0ca0 feat: add channel select (ST/M/S) to parametric EQ band editor 2026-04-10 16:06:04 +03:00
tryptz
f892d80bf6 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
44e811f56d feat: per-band Mid/Side EQ, context menus, shelf presets, performance fix
- Add per-band M/S processing with full encoder/decoder matrix in Web Audio API
- Right-click context menu on EQ nodes for filter type and channel switching
- Right-click empty graph space to add nodes
- Remove nearest-node snap-click interaction
- Replace IIR shelf filters with native BiquadFilter for glitch-free updates
- Add 6 M/S showcase presets with research-informed mastering values
- Add 5 shelf-based stereo presets (Warm, Bright, Hi-Fi, Dark, Radio Ready)
- Standard presets now reset all bands to stereo/peaking
- Graph contrast fix for light themes using color-mix()
- Colored help button and rewritten how-to documentation
- Default graph zoom changed to ±16 dB
2026-04-10 16:06:04 +03:00
tryptz
4192263176 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
a16d489b9f fix: address CodeRabbit review - array padding, storage validation, Q accuracy
- Pad band arrays when import/AutoEQ has fewer filters than MIN_BANDS
- Early return in applyAutoEQBands for zero enabled bands
- Persist interpolated gains before audio rebuild on band count change
- Derive export Q from actual octave spacing between adjacent bands
- Validate inputs in all GEQ storage setters
2026-04-10 16:06:04 +03:00
tryptz
55b49cc77a fix: address CodeRabbit review - shelf Q round-trip, IIR gain setters, import persistence, tooltip sum 2026-04-10 16:06:04 +03:00
tryptz
91eaa1f1dc feat: configurable band count and frequency range for legacy graphic EQ
- Add Bands/Min Hz/Max Hz controls to legacy EQ section
- Dynamic frequency generation with log spacing and auto-scaling Q
- Import/export handles variable band counts, Q optional for shelves
- Custom presets interpolate across different band counts
- Update legacy EQ tutorial for new controls
2026-04-10 16:06:04 +03:00
tryptz
eae8655877 feat: add APO export for legacy EQ and fix shelf filter Q support
- Add Export APO button to legacy graphic EQ (GraphicEQ config line format)
- Fix shelf filters ignoring Q: use IIR filters with RBJ cookbook coefficients
- Update graph visualization to use actual Q for shelf curves
- Omit Q from shelf filters in all EQ text exports
2026-04-10 16:06:04 +03:00
copilot-swe-agent[bot]
31b6af317e fix: apply PR review comments - derive GEQ_FREQUENCIES, validate import, fix delete btn visibility, store preamp in presets
Agent-Logs-Url: https://github.com/tryptz/monochrome-autoeq/sessions/6b47309f-1fb1-479d-91be-c0a54aa94b84

Co-authored-by: tryptz <216453278+tryptz@users.noreply.github.com>
2026-04-10 16:06:04 +03:00
tryptz
cb49904a21 fix: address remaining PR #519 review comments
- Preserve existing preamp when importing files without Preamp line
- Extend import regex to accept k/kHz/Hz suffixes and +signed gains
- Rename localStorage key to monochrome- prefix for backup/restore compat
- Add try/catch to localStorage writes for quota/disabled storage
- Validate custom preset gains array before applying
- Fix delete button visibility for all preset change paths
- Add overflow-x: auto for mobile EQ band scrolling
- Add flex-wrap and responsive sizing for bottom controls on mobile
2026-04-10 16:06:04 +03:00
tryptz
452b810efd fix: apply PR review comments - derive GEQ_FREQUENCIES, validate import, fix delete btn visibility, store preamp in presets 2026-04-10 16:06:04 +03:00
tryptz
79a5e8cf71 Add save/delete custom presets for legacy graphic EQ
Save button prompts for a name and stores the current 16-band gains
as a custom preset in localStorage. Custom presets appear in an
optgroup at the bottom of the preset dropdown. Delete button shows
when a custom preset is selected.

https://claude.ai/code/session_01AgSx7SP1dH5KFmpGXCAUvU
2026-04-10 16:06:04 +03:00
tryptz
ae9446cbd1 Add import/export for legacy graphic EQ
Export outputs EqualizerAPO-compatible format with all 16 bands.
Import accepts EqualizerAPO format or simple freq/gain pairs,
maps to nearest GEQ band by log-frequency distance, and ignores
Q values since legacy mode uses fixed dB sliders.

https://claude.ai/code/session_01AgSx7SP1dH5KFmpGXCAUvU
2026-04-10 16:06:04 +03:00
Nohan-V2
2fac783542 Handle NaN in numeric settings parsing
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.
2026-04-06 18:34:04 +02:00
tryptz
388a2b81a6 style: auto-fix linting issues 2026-04-05 20:07:39 +03:00
tryptz
da6c2e2dd9 fix: address CodeRabbit review issues from PR #502
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
2026-04-05 20:07:39 +03:00
tryptz
bd70b81a39 fix: EQ toggle not disabling audio filters when turned off
setEQMode() was unconditionally setting isEQEnabled = true, overriding
the user's toggle state. Now respects equalizerSettings.isEnabled().
Also fixed the toggle handler to properly disable the graphic EQ chain
in legacy mode.
2026-04-05 20:07:39 +03:00
tryptz
d09e3aa72a feat: AutoEQ, speaker EQ enhancements, and audio performance fixes
- Add 16-band graphic equalizer with legacy EQ mode
- Add speaker measurement and room correction EQ
- Fix audio skipping with AutoEQ on Android background
- Improve audio performance to prevent skipping under CPU load
- Fix dual EQ applied when switching between legacy and parametric modes
- Remove redundant Equalizer settings tab
- Improve mobile EQ band layout and collapsible database section
2026-04-05 20:07:39 +03:00
Daniel
648e47e1d8 fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
Daniel
5b727a103e feat(downloads): allow writing multiple artists to metadata
This will write each artist separately to the metadata rather than as a single concatenated string.  This allows for better library searching if the player supports it.

If multiple artists are written to an m4a file, iTunes will only show the first artist.
2026-04-03 14:31:19 +03:00
edideaur
bdde8fdb6a
fix: l opens lyrics 2026-04-02 18:28:46 +00:00
edideaur
8ceaffe757
tilt settings 2026-04-02 16:09:58 +00:00
edideaur
c8b7a9cd17
tilting, rounding, and new trackerapi instance 2026-04-02 12:08:05 +00:00
edideaur
e71c989319
editor pick changes 2026-04-02 09:09:13 +00:00
tryptz
0652aa4866 style: auto-fix linting issues 2026-04-02 11:05:12 +03:00
tryptz
782e98061b fix: address all CodeRabbit review findings from PR #477
Engine & algorithm:
- Use default shelf Q (1/√2) in calculateBiquadResponse for shelf filters
- Compute normalization offset on measurement frequency grid to avoid bias
- Try stale cache for all fetch errors in autoeq-importer, not just timeouts

Audio pipeline:
- Pass postProcessingQuality (preserves Dolby Atmos override) in api.js
- Persist custom band frequencies in equalizerSettings storage
- Restore custom frequencies on _loadSettings instead of regenerating defaults
- Export clamped preamp value in applyAutoEQBands text output
- Propagate filter type and Q values through equalizer import chain
- Update freqRange after importing custom filter frequencies
- Remove return in finally block that hid LOSSLESS fallback failures

Data consistency:
- Normalize artist IDs with String() in blockArtist/unblockArtist

Lint & code quality:
- Annotate empty catch blocks (Atmos codec probes)
- Remove unused catch parameters

Accessibility:
- Add aria-label and for attributes to all AutoEQ form controls
- Add role="status" aria-live="polite" to feedback spans
- Update filter type documentation to reflect shelf support
- Hide parametric-only sections by default to match active tab

UI:
- Move AutoEq button directly under graph
- Hide shared button in Parametric/Speaker modes
- Replace hardcoded white legend dot with theme-adaptive color-mix
- Add pointer-events:none and focus-within to profile delete button
2026-04-02 11:05:12 +03:00
tryptz
d4d1fe8494 feat: AutoEQ and speaker EQ enhancements
Adds AutoEQ integration with interactive parametric EQ graph,
speaker/room correction with shelf filters, and improved EQ
persistence via IndexedDB.
2026-04-02 11:05:12 +03:00
edideaur
c8f64a52e8
tilting + background play fixes 2026-04-01 14:47:37 +00:00
SamidyFR
a63f87410f style: auto-fix linting issues 2026-03-29 18:58:24 +00:00
Samidy
edc0b5d1bd Fix(Blocked Content): Manage System Not Working 2026-03-29 18:05:05 +03:00
edideaur
022c27056b
Merge pull request #417 from DanTheMan827/download-fixes
Download fixes
2026-03-29 13:59:45 +03:00
Samidy
8ed52d8843 Bye Bye Desktop App 2026-03-29 13:09:32 +03:00
Daniel
2923757029 fix(settings): organize downloads tab 2026-03-28 15:26:55 -05:00
Daniel
9c34dd4b9d feat(downloads): add check box for atmos, and fallback to desired quality if unavailable 2026-03-28 15:26:55 -05:00
edidealt
6ace8e19be
Merge branch 'main' into fix/ui-ux-video-library-fullscreen 2026-03-28 11:28:38 +02:00
Eduard Prigoana
e809d1443f fix trackers, remove AI slop 2026-03-28 01:04:30 +02:00
Thiago Vinícius
520c778f84 fix(ui): video library cards, fullscreen layout, and search UX
Made-with: Cursor
2026-03-27 16:26:51 -03:00
binimum
d9878596e2 style: auto-fix linting issues 2026-03-22 20:13:27 +00:00
binimum
d783642401
feat: add Atmos support, use new API endpoint, streamline API caching 2026-03-22 20:08:30 +00:00
Daniel
397fc53a46 feat(downloads): add local media folder bulk download options and folder template paths
This also implements a ModernSettings class for a more streamlined settings API.
2026-03-20 18:00:14 -05:00
edidealt
7bcb9e1fb5 listenbrainz love on like 2026-03-20 18:07:06 +00:00
edidealt
0b2b91a8a4 fix builds 2026-03-19 20:49:16 +00:00
Daniel
c19dbcf52a refactor: adjust imports to allow for file splitting
- dynamically import router
- dynamically import visualizers
- update import syntax for am-lyrics to use dynamic import syntax
2026-03-19 15:34:51 -05:00
Daniel
c315d2dfcd fix(downloads): update lossless quality labels 2026-03-19 15:09:58 -05:00
Nohan-V2
a18e865906 Fix settings persistence: ReplayGain Pre-Amp and Gapless Playback 2026-03-17 22:13:02 +01:00
itsmo-ks
c64065f913 Fixed Reset Local Data 2026-03-15 01:17:20 +00:00
Samidy
99debbb7b2 feat(APIs): custom api instances 2026-03-14 02:58:22 +03:00
edideaur
a776e24aee
Merge pull request #303 from DanTheMan827/copilot/extract-duplicated-code-to-ts
Extract shared download utilities and abstract bulk download handlers + new folder picker support
2026-03-12 21:18:47 +02:00