Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ adheres to [Semantic Versioning](https://semver.org) and the

## [Unreleased]

### Added
- **Audio Switcher** now saves device profiles: name the input/output pair you
are on — "Headset", "Desk", "Meeting" — and switch back to it with one click.
Profiles remember devices by their CoreAudio UID rather than the numeric
device id the system recycles across reboots and re-plugs, so a profile keeps
pointing at the headset you saved and never at whatever inherited its number.
A profile whose device is unplugged is shown greyed out with the reason
(Output “Bose QC 35” isn’t connected) and cannot be applied at all, rather
than half-applying and leaving you on a setup you did not ask for. Profiles
can be renamed and deleted in the popover.

## [0.14.0] — 2026-07-21

### Added
Expand Down
5 changes: 5 additions & 0 deletions Sources/DMonteCore/AppPreferences.swift
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,11 @@ public enum DefaultsKey {
public static let volumeMixerStoppedApps = "tool.volumeMixer.stoppedApps"
public static let windowManagerShortcuts = "tool.windowManager.shortcuts"
public static let audioRouterPresets = "tool.audioRouter.presets"
/// JSON blob of the Audio Switcher's saved input/output device profiles. Not in
/// `register(defaults:)`: `AudioProfileStore.load` already reads "absent" as "no
/// profiles", and a registered placeholder would only be a second thing to keep
/// in sync with the encoder.
public static let audioSwitcherProfiles = "tool.audioSwitcher.profiles"
public static let qrTemplate = "tool.qr.template"

/// Calendars the user has hidden. Excluded rather than included, so a calendar added later shows
Expand Down
Loading
Loading