{
  "version": "v1.9.11",
  "url": "https://download.audiomap.io/AudioMap-v1.9.11.dmg",
  "release_notes": "Patch release — new minimum-phase deviation overlay for diagnostic work, phase-response correctness on multi-wrap traces, coherence display parity with smoothing, and hover polish across the Measure tab.\n\n### What's New\n\n- **Minimum-phase deviation overlay** — a new **Show Excess Phase** option on the Phase plot draws the deviation between a measurement's actual phase and its minimum-phase reconstruction. The deviation distinguishes EQ-correctable problems (minimum-phase content) from acoustic-only ones (reflections, comb filtering). A long-standing diagnostic in transfer-function measurement practice.\n\n### Improvements\n\n- **Phase unwrap honours your setting end-to-end** — the phase-plot unwrap threshold now follows what you set in Processing Settings, instead of falling back to a hardcoded internal value.\n- **Coherence display matches your smoothing setting** — coherence now uses the same fractional-octave smoothing you've picked for magnitude and renders with the same smooth cubic spline. Set \"None\" for raw bins.\n- **Smoother hover across the Measure tab** — moving the cursor over plots and measurement lists no longer triggers a brief repaint cascade, and the selection highlight matches what's actually under the cursor.\n\n### Bug Fixes\n\n- **Phase unwrap on multi-wrap traces** — fixed a long-standing accumulation bug that compounded an extra ±360° on every bin after a real wrap, producing a stair-climbing wedge instead of a clean linear ramp. Wrap counting now also advances correctly across low-coherence regions.\n- **ESS standalone capture peak detection** — when an exponential sine sweep is captured without a preceding cross-correlation, peak detection no longer locks onto a late reflection; falls back to the ARTA earliest-significant-peak heuristic.\n- **Measurement target defaults** — newly-created measurement targets no longer pre-link to whichever measurement set happened to be active at the moment of creation.\n\n---\n",
  "release_history": [
    {
      "version": "v1.9.11",
      "date": "2026-05-13",
      "notes": "Patch release — new minimum-phase deviation overlay for diagnostic work, phase-response correctness on multi-wrap traces, coherence display parity with smoothing, and hover polish across the Measure tab.\n\n### What's New\n\n- **Minimum-phase deviation overlay** — a new **Show Excess Phase** option on the Phase plot draws the deviation between a measurement's actual phase and its minimum-phase reconstruction. The deviation distinguishes EQ-correctable problems (minimum-phase content) from acoustic-only ones (reflections, comb filtering). A long-standing diagnostic in transfer-function measurement practice.\n\n### Improvements\n\n- **Phase unwrap honours your setting end-to-end** — the phase-plot unwrap threshold now follows what you set in Processing Settings, instead of falling back to a hardcoded internal value.\n- **Coherence display matches your smoothing setting** — coherence now uses the same fractional-octave smoothing you've picked for magnitude and renders with the same smooth cubic spline. Set \"None\" for raw bins.\n- **Smoother hover across the Measure tab** — moving the cursor over plots and measurement lists no longer triggers a brief repaint cascade, and the selection highlight matches what's actually under the cursor.\n\n### Bug Fixes\n\n- **Phase unwrap on multi-wrap traces** — fixed a long-standing accumulation bug that compounded an extra ±360° on every bin after a real wrap, producing a stair-climbing wedge instead of a clean linear ramp. Wrap counting now also advances correctly across low-coherence regions.\n- **ESS standalone capture peak detection** — when an exponential sine sweep is captured without a preceding cross-correlation, peak detection no longer locks onto a late reflection; falls back to the ARTA earliest-significant-peak heuristic.\n- **Measurement target defaults** — newly-created measurement targets no longer pre-link to whichever measurement set happened to be active at the moment of creation.\n\n---\n"
    },
    {
      "version": "v1.9.10",
      "date": "2026-05-12",
      "notes": "Patch release — frequency plots now default to the octave grid, the industry-standard scale for acoustic work, with a toggle to switch back to decade. Plus a phase-plot selection-highlight fix.\n\n### What's New\n\n- **Frequency plots now default to octave grid** — across the Measure, Tuning, RTA, and Spectrogram views, the frequency axis now uses octave gridlines (1k, 2k, 4k, 8k, 16k) by default. This matches the convention most acoustic measurement tools and most published room-response data use, and reads more cleanly across the loudspeaker working range. Prefer decade? There's a toggle in **Settings → Appearance → Frequency Grid**. The choice is persisted across restarts and applies live to all plots — no restart needed.\n\n### Bug Fixes\n\n- **Phase plot no longer keeps measurements highlighted that you hadn't actually selected** — when you hovered a measurement in the list and then clicked a different one, the phase plot could keep the hovered-but-not-selected measurement highlighted alongside the one you clicked. The highlight now matches exactly what you have selected.\n\n### Notes\n\n- If you've been running an earlier version, your frequency-response plots will switch to the octave grid on first launch of 1.9.10. Toggle back to Decade via Settings → Appearance → Frequency Grid if you prefer.\n\n---\n"
    },
    {
      "version": "v1.9.9",
      "date": "2026-05-04",
      "notes": "Hotfix — restores the macOS microphone permission prompt on Tahoe (macOS 15) for fresh installs.\n\n### Bug Fixes\n\n- **Mic permission prompt restored on macOS Tahoe / 15** — fresh installs of 1.9.7 and 1.9.8 silently failed to ask for microphone access on Tahoe. No prompt fired, capture stayed dead, and there was no obvious way to grant permission from inside the app. 1.9.9 restores the prompt. If you're already running 1.9.7 or 1.9.8 on Tahoe and never saw the mic prompt, install 1.9.9 and you'll be prompted on first capture — no other action needed.\n\n### Notes\n\n- If you previously denied a (never-fired) mic prompt and macOS cached the denial, run `tccutil reset Microphone com.AudioMap.AudioMap` in Terminal once before launching 1.9.9, then start AudioMap and approve the prompt. The vast majority of users won't need this — install and launch is enough.\n\n---\n"
    },
    {
      "version": "v1.9.8",
      "date": "2026-05-04",
      "notes": "Patch release — sine sweep capture now matches pink noise, plus ESS smoothing parity and a reflection-timing accuracy fix on the spatial side.\n\n### What's New\n\n- **Sine sweep measurements now match pink noise**: in 1.9.6 we shipped exponential sine sweep capture as Beta, with the caveat that it had a magnitude offset against pink-noise measurements on the same loudspeaker and room. 1.9.8 closes that gap. The sweep transfer function is now derived using a two-channel measured-reference deconvolution instead of being inferred from the impulse response alone. The result: sweep and pink-noise traces of the same source now overlay where they should. The accuracy issue that earned ESS the Beta tag is fixed; we're keeping the Beta badge in place for one more release while we observe how it performs across a wider range of setups, but on the math side sweep and pink-noise now produce equivalent transfer functions for the same source.\n\n### Improvements\n\n- **ESS captures now respect your smoothing settings** — sine sweep captures used to ignore the frequency- and phase-smoothing settings from Processing Settings, producing raw/combed traces in the Measure tab alongside heavily-smoothed pink-noise traces of the same source. Saved sweep measurements now inherit the live smoothing configuration, matching the pink-noise path.\n- **More accurate Forward Model reflection predictions** — predicted reflection arrival times in the Forward Model are now computed in the correct reference frame (relative to the direct sound), restoring expected behaviour in the room-inference path.\n\n### Notes\n\n- If you tried sine sweep capture in 1.9.6 or 1.9.7 and saw a magnitude offset against pink-noise traces, try it again on 1.9.8 — the structural cause is fixed.\n\n---\n"
    },
    {
      "version": "v1.9.7",
      "date": "2026-05-03",
      "notes": "Patch release — save reliability fix on macOS for folders previously blocked by the App Sandbox, plus a handful of spatial / wizard / capture polish items.\n\n### What's New\n\n- **Save anywhere on macOS**: AudioMap can now save projects, exports, and settings to any folder you choose — including locations that the macOS App Sandbox previously restricted access to. If you ever ran into a save failure or \"permission denied\" on an otherwise normal folder, this release resolves that whole class of issue.\n\n### Improvements\n\n- **Compact spatial plot** — the unfulfilled-targets indicator no longer shows on the small spatial plot, so the compact view stays uncluttered when you're focused on the main display.\n- **Setup Wizard** — the verification button is now always active rather than gated behind earlier wizard state, and the default action on the verification step is **Skip** so you can move forward without hunting for the right button. Smoother first-run flow.\n- **Coverage radius default** — the default coverage radius for new measurement sets is now derived consistently from the actual geometry of your sources, both on initial wizard setup and when you adjust source positions afterward. No more stale defaults from earlier sessions.\n- **Capture-mode plumbing** — the toolbar generator dropdown is fully wired through to the TF capture engine. Switching the generator type from the toolbar updates capture mode end-to-end, completing the unification work that started in 1.9.6.\n\n### Bug Fixes\n\n- **Trilateration during auto-capture** — fixed an issue where the X coordinate of a measurement could get stuck (not update) under certain auto-capture conditions, leaving the position estimate locked to its starting value.\n\n### Notes\n\n- **One-time auto-migration on first launch (macOS)**: when you first launch 1.9.7, AudioMap will quietly migrate your license, projects, and preferences out of the previous sandboxed container into your normal user folders. This is automatic and runs once — your settings, license, and saved projects all carry over, and no action is needed on your part. After migration, AudioMap reads and writes from the same locations any other Mac app would.\n\n---\n"
    },
    {
      "version": "v1.9.6",
      "date": "2026-04-29",
      "notes": "Patch release — sine sweep capture mode promoted to Beta with reliability fixes, expanded SPL display layouts on the RTA tab, smoother RTA bar overlay, in-app chat upgrades, and a handful of crash and stability fixes.\n\n### What's New\n\n- **Sine sweep capture (Beta)**: the exponential sine sweep mode is now flagged Beta in the signal-generator dropdowns. We've stabilised the workflow — IR alignment is anchored to the cross-correlation result so it can no longer drift onto a late reflection, sources reliably reset to Pink Noise after a sweep finishes, and the visual artifacts that could appear during a sweep are fixed. Stick to Pink Noise for production measurements; treat sweeps as work-in-progress.\n- **In-app chat — images, typing & read receipts**: the support chat panel now lets you paste or attach screenshots, shows a typing indicator while you compose, and surfaces delivered (✓) and read (✓✓) ticks once support has seen your message.\n\n### Improvements\n\n- SPL Display (RTA tab) — the grid now picks its column count from the actual aspect ratio of the panel, so a tall, narrow panel doesn't try to cram every meter into one row. The SPL section is stacked above the RTA frequency plot for a more natural top-to-bottom reading order.\n- SPL Display (RTA tab) — the RTA sidebar gains an expand/collapse control for the SPL container, so you can give the meters more room when you need them and tuck them away when you don't. Expanded meters match the styling, theme, and sizing of their collapsed counterparts. Expanding or collapsing no longer scrambles your column arrangement.\n- SPL Display (RTA tab) — each meter now has its own three-dot hover menu for per-display settings, anchored to the top-left corner. Hovering reliably reveals the button across rapid mouse movement.\n- SPL Display (SPL tab) — sidebar now matches the RTA sidebar's scrollable container behaviour and resize handling, so meters behave consistently regardless of which tab you're working in.\n- RTA — bar-mode RMS overlay is now drawn with a Catmull-Rom spline rather than straight segments, giving a smoother visual response while still tracking the bars exactly.\n- Capture-mode plumbing — the toolbar generator dropdown is now the single source of truth for which capture mode is active. Switching generator type from the toolbar updates the capture engine consistently — no more mismatch between what the dropdown shows and what's actually being captured.\n\n### Bug Fixes\n\n- Fixed a rare crash that could occur when a delay measurement completed off the audio thread — the delay display now updates safely on the message thread.\n- Fixed a related crash where downstream subscribers of internal delay-measurement events could be invoked on the wrong thread.\n- Fixed icon rendering — chevron up/down arrows now render visibly at small sizes, and the SPL cluster chevron no longer sits on top of the layout dropdown button.\n- Fixed: the per-meter three-dot hover button on expanded SPL displays now appears reliably on hover, even with rapid mouse movement.\n\n### Notes\n\n- macOS crash reporting is now wired through Sentry. Crashes that previously vanished with the process are captured for triage. No personal data is sent — only the crash stack and basic environment info, and you can opt out of telemetry to disable it entirely.\n\n---\n"
    },
    {
      "version": "v1.9.5",
      "date": "2026-04-28",
      "notes": "Patch release — measurement-preservation fix on license activation, project-load polish, RTA SPL display fixes, and a smarter 4-meter SPL layout.\n\n### Bug Fixes\n\n- Fixed: activating a license (or loading a project immediately after activation) no longer silently clears your measurements. The sidebar now keeps the source/receiver counts that were active before activation instead of resetting them to zero.\n- Fixed: the license activation window no longer hides behind other dialogs.\n- Fixed: loading a project no longer briefly flashes a phantom coverage ring around the origin. Saved measurement targets are now trusted on load instead of being regenerated from scratch.\n- Fixed: the RTA tab's \"SPL Display\" layout now updates live with audio activity (was frozen at -100 dB), respects your current theme, refreshes when meters are added or removed via the sidebar, and no longer crashes when removing the last SPL meter.\n\n### Improvements\n\n- SPL tab — with 4 meters in a medium-wide section, the default layout is now 3 across with 1 long meter underneath, instead of cramming all 4 into a single tight row.\n\n---\n"
    },
    {
      "version": "v1.9.4",
      "date": "2026-04-28",
      "notes": "Hotfix for v1.9.3 — addresses a Save As regression on macOS folders that require user permission.\n\n### Bug Fixes\n\n- Fixed: \"Save As\" to Desktop, Documents, Downloads, or iCloud Drive on macOS no longer shows a false \"no permission\" error when permission has actually been granted. Errors that do occur now report the specific cause (read-only volume, disk full, missing destination, etc.) instead of a generic \"Failed to write project data\" alert.\n\n---\n"
    },
    {
      "version": "v1.9.3",
      "date": "2026-04-28",
      "notes": "### Improvements\n\n- Diagnostic Save As errors are now self-explanatory — when a save fails (permissions, full disk, locked file), the alert tells you exactly which step failed instead of a generic \"failed to write\" message, with a pre-flight check before writing.\n- macOS folder permission prompts — saving to Desktop, Documents, or Downloads now triggers macOS's standard permission prompt the first time, eliminating silent failures on stricter system configurations.\n- Smoother heatmap updates during high-rate measurement activity, with stale-display gaps closed when sources or receivers are moved.\n- New measurement sets size their coverage radius based on actual distances between your sources instead of a fixed default.\n- Starting a new project now resets capture sources to Pink Noise. Custom source types you've configured during a session still persist through the ESS sweep phase.\n- Toolbar buttons no longer overflow when the window is sized down to ~1328 px wide; Home and Settings now reliably route to the Startup Screen and Setup Wizard.\n\n### Bug Fixes\n\n- Additional 3-source gain-spread reliability hardening — caught and fixed an edge case where the timing walk could read a stale cache entry instead of the fresh sync result, improving consistency in high-asymmetry capture scenarios.\n- Fixed rare crashes on the Measure tab during automatic background saves.\n- Fixed rare crashes in transfer-function visualisation under heavy concurrent processing.\n- Fixed a crash that could occur when typing into newly-emptied text fields (covers several text-entry edge cases).\n- Hardened internal measurement-access API to prevent a class of crash seen on macOS 1.9.2.\n- Diagnostic log files no longer corrupt entries during high-frequency concurrent writes.\n\n---\n"
    },
    {
      "version": "v1.9.2",
      "date": "2026-04-25",
      "notes": "### Improvements\n\n- Refreshed first-time startup screen with two large cards — Create New Project and Explore Sample Project — so it's clearer where to begin.\n- Help Us Improve consent dialog now appears on first auto-capture instead of first launch, giving the choice context instead of arriving cold.\n- Manage License screen no longer clips its bottom buttons on smaller displays.\n- Onboarding overlay highlights now align correctly with toolbar buttons regardless of window size.\n\n### Bug Fixes\n\n- Fixed the remaining 3-source measurement reliability issue with high gain asymmetry. With a wide gain spread (12 dB), the weakest source now resolves correctly on every capture — no more re-triggering. (Resolves the v1.9.1 known issue.)\n- Fixed a sticky crosshair cursor on plot components that did not reset when leaving the plot area.\n\n### Notes\n\nThis release closes the v1.9.1 known issue around 12 dB gain-spread 3-source measurements.\n\n---\n"
    }
  ]
}
