Skip to content

Releases: jordanmgibson/WindowsLosslessSwitcher

Windows Lossless Switcher v1.0.0-beta.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 02:58

Added

  • Complete "Nocturne" redesign of every surface. The main window is now a
    compact now-playing hero card with album artwork, a large format readout,
    the previous format ("was …"), and a live status line; "All settings"
    opens a new dashboard window with Status, Switching, Notifications, Cache,
    and Updates pages. Bundles the Inter typeface (OFL) and Phosphor icon
    path data (MIT).
  • A live mini-spectrograph replaces the static brand mark in the hero title
    bar and the dashboard's nav tile. It follows Apple Music's audio only —
    capture is scoped to the Apple media agent's process tree via WASAPI
    process-loopback, so audio from other apps never moves the bars. Capture
    runs only while a window showing it is visible, pauses when playback is
    idle, and restarts itself after every device format switch. On Windows 10
    the audio engine only allows one process-loopback stream per target process
    for the app's lifetime (later attempts fail permanently), so there the
    capture session is kept alive across window hide/show and playback idling,
    and is only re-created when Apple Music's media agent restarts under a new
    process id.
  • The switch popup was redesigned and now follows the notification settings:
    with "Include song, artist, and album" on it is a rich card with artwork
    and the old→new format transition; with it off, a minimal pill with just
    the new format.
  • The tray icon now opens a flyout with a mini now-playing row (artwork,
    track, current format chip), the live switch status, and the menu actions;
    double-click still opens the main window.
  • The Status page shows the active device's rate/bit-depth chips (current
    format lit, allow-list exclusions struck through), the resolver source
    ("Catalog match" / "Local file"), a collapsible raw-details card, and an
    activity log of recent switches and cache events.
  • The cache page shows live cache statistics ("N cached lookups · storefront:
    xx") and the storefront detected from the Windows region.
  • "Allowed hardware formats" section in the app window: check exactly the
    sample rates and bit depths your physical hardware accepts (listed from the
    active target device), backed by allowedSampleRates and the new
    allowedBitDepths setting. At least one of each stays enabled; checking
    everything applies no restriction.
  • The remaining settings that previously existed only in settings.json are
    now editable from the app window: the Apple Music storefront override
    (applies after restart), verbose diagnostics, and the automatic Apple
    Music restart on playback-recovery failure.

Changed

  • Both app windows use custom dark chrome (rounded on Windows 11, square on
    Windows 10) with the caption drag region and minimize/close buttons drawn
    by the app; closing still hides to the tray.
  • The old Win32 tray context menu was replaced by the flyout.

Full changelog: https://github.com/jordanmgibson/WindowsLosslessSwitcher/blob/main/CHANGELOG.md

Windows Lossless Switcher v1.0.0-beta.6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Jul 20:42

Added

  • Persistent format cache — successful catalog matches are cached locally (format-cache.json), so repeat plays of the same track switch instantly without a network lookup. Capped, versioned, storefront-scoped, re-verified in the background on a configurable interval (formatCacheRefreshDays), and clearable from the app window. Contributed by @memoz (#5).
  • A toast notifies when a background re-check finds a track's format changed (applies next playback).
  • allowedSampleRates setting — an allow-list of rates your physical hardware accepts. Resolved rates are clamped to the list (preferring the same 44.1/48 family, so 88.2 clamps to 44.1 rather than 96) before being applied — for chains where a virtual cable or ASIO bridge between the switched endpoint and the real DAC reports rates the hardware can't lock to. Proposed and prototyped by @mg42ns (#7).

Changed

  • Tracks no resolver can identify now fall back to a conservative 24-bit / 44.1 kHz instead of a format guessed from the Apple Music audio-quality tier (previously Hi-Res Lossless → 24/192, Lossless → 24/48). The tier only describes the account's ceiling, not the playing track's real rate. A toast (when enabled) says the rate was undetermined.
  • Catalog lookups use the Apple Music storefront matching the Windows region (previously always "us"), overridable with the new appleMusicStorefront setting.
  • Catalog matching considers per-track performer credits and album-part metadata, improving matches for compilations, multi-artist albums, and classical recordings.
  • Local ALAC files resolve to their true bit depth read from the ALAC magic cookie (the container's legacy field frequently claims 16-bit for 24-bit Hi-Res files); lossy local files apply the lowest supported device depth instead of inflating to the device maximum.
  • Verbose per-operation diagnostics are now actually gated by enableVerboseDiagnostics.

Fixed

  • Update dialogs show the full version including the prerelease suffix (previously "Version 1.0.0 is available" when offering 1.0.0-beta.N).

Thanks to @memoz (format cache, device-table report) and @mg42ns (allowedSampleRates design and prototype) for the contributions.

Device report (README table): Chord Hugo 2 confirmed working, reported by @memoz (#6).

Windows Lossless Switcher v1.0.0-beta.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Jun 01:14
v1.0.0-beta.5

Windows Lossless Switcher v1.0.0-beta.4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jun 07:36

Fixes bit depth stuck at 16-bit on USB DACs that only accept 24-bit audio in a 32-bit container (#1). The format probe now tests padded (24-in-32) and 32-bit integer PCM layouts, so these devices are correctly detected as 24/32-bit capable.

Windows Lossless Switcher v1.0.0-beta.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jun 05:38
Match Apple Music's Windows 10 media session by executable name

On Windows 10 (verified live on 19045), GSMTC attributes Apple Music's
media session to the bare executable name "AppleMusic.exe" rather than
the package AUMID it reports on Windows 11, so the session filter never
matched and the app sat at "Waiting for Apple Music" forever. Accept
both identifiers.

Verified end-to-end in a Windows 10 22H2 VM: track detection, PlayCache
resolution, a live 48 kHz to 44.1 kHz device switch, and nudge-based
playback recovery all work.

Windows Lossless Switcher v1.0.0-beta.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Jun 03:28
Lower OS floor to Windows 10 2004 and harden GSMTC diagnostics

Every API the app uses shipped by Windows 10 1809; the Windows 11 24H2
floor was inherited from Apple Music's Store listing, which a community
tester has shown to be wrong in practice (Apple Music runs on 10).

Retarget to net8.0-windows10.0.19041.0, log the OS version at startup,
survive a failed GSMTC manager request instead of crashing startup, and
re-enumerate sessions every 30 s while no Apple Music session is
attached so exported diagnostics show whether the session is visible
on Windows 10 at all.

Windows Lossless Switcher v1.0.0-beta.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Jun 22:27
Initial open source release