Repository navigation
v1.5.1
Fixed
Stereo width was rated on the wrong scale
compare_to_profile returned on_target for stereo width on every possible
input, including a fully mono mix. Width is a side/mid ratio, but it was being
scored against the dB thresholds (1.0/3.0/6.0), and the largest below-range
deviation width can produce is 0.7 — under the on_target threshold. Width now
uses ratio-scaled thresholds. A near-mono mix rates significantly_below
against pop and ambient, and still on_target against lo-fi, which targets
narrow.
Fixing it surfaced a second gap: _WIDTH_RANGES had no entry for very_wide.
The ambient profile declares that descriptor, so it fell through to a
(0.0, 2.0) catch-all spanning the whole usable domain, which disabled the width
check for that genre entirely. Six regression tests cover both; one asserts that
no bundled profile relies on the catch-all, so a future descriptor cannot
silently disable its own check. (#56)
Other fixes
- The pre-push hook refuses to vouch for a ref that is not the one checked out.
Its checks run against the working tree, so pushing a different ref meant the
hook reported on code that wasn't being pushed.--no-verifyoverrides. ClassVarnow resolves at module scope, so pydantic honors it on Python
3.10–3.12. Python 3.13 resolved the annotation where the older versions did
not.
Changed
Windows install telemetry matches install.sh
install.ps1 now sends a single POST with a JSON body: install method, outcome,
and one of four enumerated failure reason codes through a new Stop-Install
that mirrors install.sh's err(). Telemetry initialization moved above the
Windows build check, architecture is normalized to x86_64/arm64, and extras
report none until an install is actually attempted. Same endpoint, same
opt-out (PHANTOM_NO_TELEMETRY=1), still fire-and-forget.
Windows CI
New .github/workflows/install-windows.yml runs the installer's telemetry
harness on windows-latest under both Windows PowerShell 5.1 — what users
actually have — and PowerShell 7, plus a parse check. tests/install_ps1/ adds
125 assertions across nine scenarios, checked against the validation rules the
telemetry endpoint really applies. It runs anywhere:
python3 tests/install_ps1/verify_telemetry.py
A second CI job runs install.ps1 end to end and is expected to fail until #52
lands. See below.
Lint
Adopted ruff 0.16.3 and cleared the findings its widened default rule set
surfaced.
Docs
Phantom does not install on Windows, and never has
essentia is a hard core dependency and has never published a Windows wheel for
any version, nor an sdist since 2020. uv tool install phantom-audio therefore
fails at dependency resolution on Windows, with or without extras. Every other
dependency resolves fine.
This release does not fix that — it stops the project implying otherwise. The
README install block states it, pyproject.toml classifiers no longer claim
Operating System :: OS Independent (which was false), and CLAUDE.md records it
beside the Essentia decision that caused it. Replacing essentia with a
Windows-capable backend is tracked in #52.
Corrections
detect_problemscoverage andbatch_diagnosticconcurrency were both
documented inaccurately.- Fixed the
uvxinvocation example, the telemetry opt-out example, and a link
to a 404 install URL. - RELEASING.md now names the real keychain item, warns that
uv publishwithout
file arguments uploads every stale artifact left indist/, and corrects the
Anthropic marketplace step.
Full Changelog: v1.5.0...v1.5.1