Every release, straight from the source. No marketing gloss — what shipped, what got fixed.
v0.4.0
Added
The update toast now has a "What's new in vN.N.N" expander showing the release notes for the version you're about to install
App version number displayed under the sidebar credit ("Made by Brandon Lopez")
Yamaha I/O rack knowledge base ("Can't see Dante devices" → no-devices screen), covering the whole Tio/Rio/Ri family:
Generation split first: Tio1608-D and older Rio3224-D / Rio1608-D / Ri8-D are configured by physical DIP switches, while the newer Rio-D2/D3 racks have NO functional rear DIPs (unassigned "future expansion") — their UNIT ID lives in the front-panel SETUP menu
Full Tio1608-D switch map: unit ID, initialize, SECONDARY port mode (redundant vs daisy-chain), control-IP mode, refresh/resume startup
The power-off rule: DIPs are read only at power-on; changes made while running are silently ignored
Quick Config trap: auto-patch mode forces daisy-chain wiring — redundancy requires QC OFF + DIP 4 down
Older Rio/Ri: rear DIP bank + front UNIT ID rotary interaction, INITIALIZE dip, leftover-tour-ID diagnosis, static-IP workflow via R Remote/Dante Controller
Yamaha consoles patch Dante directly on the board ("Routing and audio problems" → downstream screen): CL/QL/DM/TF PATCH pages assign DANTE ports like local I/O — check input patch before blaming the network; scope caveat for device-to-device routes; TF + Tio Quick Config patches follow the rack's unit ID
Clock-sync Yamaha note: Tio1608-D boot personality (refresh vs resume) explains racks waking with stale head-amp gains/patch
Windows guidance throughout the troubleshooting flows: firewall and static-IP screens now cover Windows paths (Defender allow-rules, Public-network classification trap), DVS microphone-permission steps cover both OSes, and Mac-specific copy is now platform-neutral
Fixed
Update toast no longer fights you: dismissing it during a download sticks; failed downloads show a retryable error instead of vanishing or hanging at "Downloading…"
Vendor identification on macOS fixed: ARP MAC addresses are zero-padded before OUI lookup, so vendors (Yamaha, Shure, Audinate…) display correctly for adapters like 4:11:22:…
Ping parsing on Windows survives locales that translate "TTL"; clicking during a slow check can no longer corrupt results or navigation
A stale saved interface (unplugged adapter, changed network) is cleared on Dashboard refresh instead of silently pinging dead addresses
Scenario picker shows a loading state instead of a blank grid while scenarios load
Changed
Troubleshooting scenarios now load on demand when opened from the picker — smaller app bundle, faster startup
Hardened app shell: external links restricted to known URLs, in-window navigation locked down, malformed mDNS traffic can't take the main process down
v0.3.0
Added
Windows support: first official Windows installer (x64 NSIS, assisted setup with configurable install directory, per-user install). All core diagnostics were rewired behind per-platform service modules — ping parsing now tolerates localized ping output, ARP table parsing handles multi-interface output and dashed MAC normalization, interfaces/gateway detection reads route print with junk-adapter filtering, and the subnet scanner runs through platform-dispatched ping/ARP
Automatic updates (macOS): the app now checks GitHub's release feed ~5 seconds after launch using electron-updater. When a new version exists, a toast offers an in-app download with progress percentage, then restart-to-apply. Background check failures stay silent so offline users aren't nagged; manual retries surface errors. Disabled entirely in dev/unpackaged runs
Update plumbing exposed to the UI over sandbox-safe IPC (update:check / update:download / update:install / status events), with differential ("delta") downloads enabled by uploading .blockmap files alongside each zip
Changed
Release pipeline: mac DMG/zip artifacts renamed to stable per-arch names (Dante-Troubleshooter-mac-arm64.zip, etc.) so update metadata (latest-mac.yml) stays consistent between releases; publishing now also uploads the zips, blockmaps, and update metadata to each release automatically (scripts/publish-updates.sh)
v0.2.0
Added
Intel Mac support: releases now ship both Apple silicon (arm64) and Intel (x64) DMGs built separately (no universal binary), published together under one release with stable per-arch download permalinks so old download links never break
Per-screen sources field in scenario JSON: renders as a collapsed "Sources" footer on any troubleshooting screen, letting screens cite Audinate docs/vendor manuals inline. Sources accumulate across the session and are appended to Copy Report output (deduplicated), so tickets include the references the user actually saw. lint:content validates the shape and rejects non-http(s) URLs
v0.1.1
Added
Switch knowledge base on the "Switch configuration" screen, expanding the IGMP/querier guidance with per-manufacturer field notes:
Netgear — model-suffix trap (not every "smart" model does real IGMP snooping) and Block Unknown Multicast setting
Cisco — Small Business vs Catalyst configuration paths and DSCP trust behavior on uplinks
UniFi — full Dante-appropriate settings require Pro-series gear; lower tiers silently lack the needed controls
Yamaha — SWP1 series purpose-built DIP-switch "Dante preset" (QoS/multicast preconfigured)
Luminex — GigaCore Dante profiles and PTP filtering defaults
Q-SYS — core/peripheral switching guidance for Dante networks
Device knowledge base on the discovery screen: Midas / Behringer (DN32-Dante card gotchas) and Shure (port strictness at 100 Mbps/EEE, AES256 encryption mismatch masquerading as dead devices)
v0.1.0
Added
macOS builds are now signed and notarized by Apple — first launch opens normally instead of requiring the right-click → Open workaround
Sidebar credit ("Made by Brandon Lopez") linking to the developer site
Tip link at the end of every session report
Links now open in your default browser instead of inside the app