Skip to content

Prepare Mini EQ 0.8.8: native-rate EQ, lock hardening and preset picker - #46

Merged
bhack merged 1 commit into
mainfrom
codex/release-0.8.8
Sep 17, 2026
Merged

bhack merged 1 commit into
mainfrom
codex/release-0.8.8

Conversation

@bhack

@bhack bhack commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Summary

  • Use native rate-aware PipeWire biquads; restart safely on filter topology changes.
  • Track the processing clock for response curves, headroom and AutoEq; isolate AutoEq caches by rate.
  • Harden instance locks and smoke-tool argument handling; improve portal error messages.
  • Add searchable/scrollable Shell presets and update bundled PipeWire, NumPy and pipewire-gobject.

Validation

  • 633 tests passed, 2 optional skips; Ruff, extension checker and privacy scan passed.
  • Native DSP and routing smoke at 192 kHz; live GTK/AT-SPI smoke passed.
  • Owner confirmed music, preset/filter, pause/resume, output and monitor/bypass testing.
  • AutoEq live compatibility at 48/192 kHz; deterministic preview and Shell-picker visual checks.
  • Release preflight and local candidate Flatpak checks in progress.

Release gates

  • Review CodeQL/security results before merging.
  • Complete Flatpak routing and clean-permission background/autostart validation before publishing.
  • Flathub packaging handoff stays maintainer-owned.

Addresses #45; issue closure will follow release verification.

Comment thread src/mini_eq/instance.py Dismissed
Comment thread src/mini_eq/instance.py Dismissed
Comment thread src/mini_eq/instance.py Dismissed
@bhack

bhack commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Security triage for CodeQL alerts #78, #79 and #80 (py/path-injection): these paths originate from the launching desktop session XDG_RUNTIME_DIR, not imported presets or remote input. Mini EQ runs without privilege elevation. The lock basename is fixed; the directory is opened with O_DIRECTORY/O_NOFOLLOW and checked for matching UID and no group/world write permission. The lock is opened relative to that directory with O_NOFOLLOW, then checked for regular-file type, matching UID, single hard link and safe permissions; truncation happens only after acquiring flock. The initial mkdir uses the same unprivileged user authority as the supplied session environment. Under this desktop threat model these three findings are false positives, not a reason to disable CodeQL. The 11 instance-lock tests and additional symlink-directory/shared-directory rejection probes passed. Release preflight also passed with published pipewire-gobject 0.3.10; local Flatpak/portal validation is being completed before publication.

@bhack

bhack commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Release gates completed for 4d0c9b4: full container preflight with published pipewire-gobject 0.3.10 passed; local installed Flatpak 0.8.8 passed isolated routing, idle recreation, paused resume, relink recovery, active links and stream restoration. Real GNOME/Fedora VM validation of the exact Flatpak candidate also passed: clean background permission (absent before request, yes afterward; this backend granted without an additional dialog), background off/on, Start at Login and start-active toggles through actual GTK controls, portal-generated autostart entry, close-to-background, Shell Show Mini EQ and Quit Mini EQ, process/node removal and normal output restoration. After reboot, GetState confirms 0.8.8, hidden window, background/autostart/start-active enabled and routing active; the VM includes a pre-existing 15-second WirePlumber startup delay, and the app becomes ready when the session manager starts. Owner real-music test, visual matrices, live GTK smoke, performance and extension packaging checks previously passed. CodeQL triage is documented above and all PR checks are green.

@bhack
bhack merged commit c98c043 into main Sep 17, 2026
14 checks passed
@bhack

bhack commented Sep 17, 2026

Copy link
Copy Markdown
Owner Author

Post-merge security triage at c98c043: old lock alerts #74–76 are now fixed. Alert #77 is a false positive for the hardened smoke helper: pw-cat is a fixed executable, subprocess receives an argv list without a shell, and the node value is validated both by argparse and at the call site before being attached as one --target=value argument. Option/shell payload probes are rejected. New alert #81 is also a false positive: fullmatch fixes the start position, the regex has one non-nested repetition of a character class, no overlapping repeated groups or ambiguous alternatives, and end anchoring. Rejected 0...0! inputs of 10k/100k/1M/4M characters took approximately 0.09/1.17/14.62/52.20 ms, consistent with linear rather than polynomial backtracking. These findings concern maintainer smoke tooling, not a network endpoint. Neither scan rule is disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants