Nathaniel Labs
Product changelog

Shruti release history

Latest version: v1.4.40.

1.4.40

  • Updates no longer wait forever because a saved volume, mute or effect control is attached to a silent app.
  • A browser keeping its audio stream open does not block an update when Shruti’s healthy audio tap confirms it is silent. This uses the signal before Shruti’s mute and volume controls, so muted playback remains protected.
  • Active recording, real playback, missing activity information and stale audio measurements still hold the update. After 10 seconds of confirmed quiet, an update you already chose can continue.
  • If an update is waiting, Shruti names the app holding it or says it is waiting for the quiet interval.

1.4.38

  • Shruti now stays quiet in the background. With its mixer closed it uses almost no processor time, so your Mac stays cool and other apps keep the power they need.
  • Leaving another window open, such as the update window or Settings, no longer keeps a hidden mixer redrawing four times a second. Before, this could keep one processor core fully busy for hours.
  • The menu-bar icon still changes the moment something changes: mute, Bypass All, an app starting to play, or the volume.
  • The mixer shows the latest levels the instant you open it.

1.4.37

  • Clicking "Update available" now brings the Install / Later window straight to the front. Before, it could open hidden behind the Shruti panel and pop up later, as if by itself.
  • Shruti still never interrupts you with an update window: a new version shows only as the orange strip at the top of the panel and a dot on the menu-bar icon, until you click one of them.

1.4.36

  • Mute All: a red button at the top of the Shruti panel silences everything coming out of the Mac in one click, for an emergency. Click Unmute All to bring the sound back.
  • While everything is muted, the menu-bar icon turns into a red crossed speaker, whatever icon style you chose.

1.4.35

  • A new version is easy to spot: "Update available — <version>" appears at the top of the Shruti panel, and the menu-bar icon gets an orange dot. Click it to choose Install or Later. Nothing installs on its own, and an update still waits while audio or recording is active.
  • Check for Updates… is in the panel's ··· menu (with the version you have beside it) and in Settings.
  • Shruti checks when it opens and then every hour (was every six hours). A scheduled check no longer opens an update window behind your other apps; the button and the dot do the asking.

1.4.34

  • A damaged settings file can no longer cost you your licence or restart your 14-day trial. Shruti keeps a copy of the last good settings, rebuilds from it (or from whatever can still be read), keeps the damaged file aside, and tells you what happened.
  • MIDI controllers: when two controls move at the same moment, every message is now read correctly. Changing MIDI mappings while a controller is moving can no longer cause a crash. Bypass All and Scene buttons fire once per press instead of repeating while a knob or fader is held high.
  • Cleaner audio path: the live audio callback no longer allocates memory, and removing or swapping an Audio Unit plug-in no longer makes the audio wait while the plug-in shuts down.
  • The app and the audio service can no longer overwrite each other's saved settings.
  • The control socket refuses to start, instead of overflowing, if a home folder path is unusually long.
  • Importing from SoundSource, and `shruti output volume`, no longer crash on a malformed number.
  • The command-line installer and the audio-driver scripts now refuse to run while REAPER, Logic, MainStage, Zoom or OBS is open, so a class or recording is never cut.

1.4.33

  • Meter updates no longer rebuild app rows, menus and faders. Last-heard labels update at their displayed precision while playback, mute, Solo, level and device changes remain immediate.
  • Native faders preserve handle position, support Shift fine adjustment and keyboard/accessibility controls, and pass scroll-wheel events through to the mixer. Cancelled drags release scrolling. Double-click an app fader to restore 0 dB, with alignment feedback on supported trackpads.
  • App icons load on a bounded background queue so first opening and Add App searches do not wait on Launch Services.
  • Output switching checks and device telemetry run away from the control queue. Newer selections supersede late replies; a visible Switching message lasts until macOS confirms the result. Failed switches retain an explicit explanation.
  • The audio watchdog reuses one background process/device discovery snapshot instead of repeatedly enumerating Core Audio for every app. Stale or failed discovery preserves working paths until a complete read succeeds. Neutral hearing guards skip unnecessary device walks.
  • Automatic checks may discover signed releases, but installation always waits for your confirmation. Saved Sparkle preferences cannot enable automatic downloads or installation.
  • Shruti waits for ten seconds of fresh, continuously quiet audio status before an update can restart the app and service. Active playback, microphone capture, an engaged route, missing or stale status, and unsupported legacy status all keep the update waiting.
  • If audio becomes active as Sparkle resumes an installation, Shruti cancels that update-specific restart and can retry after the service reports a fresh quiet interval.

1.4.31

  • Resize either mixer panel with its visible corner grip. Pointer movement stays stable as the window grows; double-click the grip to fit the current audio apps to the screen. Window sizing is saved when resizing ends.
  • Installed app categories no longer add silent, unused apps to the mixer. Real audio activity and retained user controls determine membership. Existing arrangements stay in order, and new activity does not automatically scroll away from the app you are using.
  • Remove an app directly with its row’s × button, including in Arrange. Undo and Add App → Removed restore its saved mix and order.
  • Eiosis AirEQ’s original editor now receives the initialization it requires. Plugin construction, saved-state restoration and parameter-state capture run away from the UI thread. Loading has a deadline and Retry; closed or removed editors cannot reappear from obsolete callbacks.
  • Native Audio Unit editors are preferred. A plugin without a usable native view has a clearly explained published-control recovery view.
  • Includes the 1.4.30 responsive faders, dB readouts, Shift fine adjustment, Clear Solo, ordered Smart controls and Global EQ improvements.

1.4.30

  • Mixer controls send the latest fader position without building up obsolete commands. Faders show decibels, retain the existing saved volume curve, and support Shift for fine adjustment.
  • Clear all solos with one control or Command–Shift–S. Option-click Solo to hear only that app.
  • Remove apps immediately and restore them from Add App → Removed, retaining their saved mix. Removed apps stay out of Solo, Smart processing and routing until restored.
  • Recent sound activity is easier to find in either list order. App identities and activity labels no longer wrap into narrow vertical text.
  • Global EQ now has a clearly named control. Use the built-in eight-band EQ and up to two installed Audio Unit effects, searchable by plugin or manufacturer. VST3-only effects require their Audio Unit version.
  • Rapid Smart and Global EQ changes preserve command order and discard obsolete unsent settings. Smart switches no longer wait for synchronous device discovery.
  • Removing a plugin while it loads no longer allows an obsolete load to reappear.

1.4.25

  • An app you have set to a lower level (or muted, or given an effect) now plays at that level from its very first sound. Before, it started at full volume and dropped to your setting a second later, which sounded like Shruti ducking it.
  • Apps at their untouched default are unchanged: still the zero-cost direct path.

1.4.24

  • The Scenes menu now reads saved scene names from local storage as the panel opens, so an audio-service warm-up cannot raise a false unavailable banner.
  • Safe background lookups retry when Core Audio temporarily occupies the service. A failed lookup no longer marks the live audio connection offline.
  • Startup pings now honor their fractional-second socket timeout, avoiding an unbounded wait during service recovery.
  • Dragging the three-line handle on an app row now reorders it directly in Live Now or My Order. Clicking the handle still opens the precise Arrange controls.
  • The chosen order stays in place through live status refreshes and fast consecutive moves; Shruti confirms the saved order on disk before reporting success.

1.4.23

  • Live Now separates apps playing output from apps recording input. A recorder such as NSM Screen Studio appears as recording without a misleading playback label.
  • Apps that used audio output in the past hour remain easy to find under Recent Audio, with the latest activity first. Each entry opens its saved control in My Order.
  • My Order and the playing-app arrangement keep their saved positions; recent activity does not silently rearrange the mix.
  • Audio activity is attributed to the app that owns the process. Chrome helper processes owned by another app are shown under that app.

1.4.22

  • Shruti now opens on a Mac with no internet connection the first time, not only after it has been online once: the app inside the installer carries its own Apple approval.
  • App names in the mixer are no longer cut short by the LIVE label; a small green waveform shows an app is making sound.
  • The output device name is shown in full ("Zen Studio Playback", "MacBook Pro Speakers").
  • Audio Devices opens on the device that is playing now.
  • The Bypass All shortcut is written as Shift-Command-Esc in Settings.

1.4.21

  • A Scene now remembers your output device, its level and your microphone as well as every app's volume, mute, boost, effects and output. Loading "Class" puts the class back.
  • Loading a Scene no longer rewrites your licence, trial, removed apps, theme, login item or Bypass All state. Apps first heard after a Scene was saved keep their current level.
  • If a Scene's device isn't connected, Shruti says so by name and keeps the sound where it is.
  • Load a Scene straight from the footer's Scenes menu. Saving over an existing Scene asks first.
  • Mic Auto-Follow learns from you: the mic you pick in Input becomes its first choice, and it no longer switches your choice straight back. Switching it on keeps the mic you are using. Loopback and app-made inputs are never picked automatically.
  • Leave Alone: apps Follow-Me and Auto-Duck never lower. Instruments and DAWs (Pianoteq, REAPER, Logic, MainStage, Ableton…) are protected by default; add any app from the Smart panel or by right-clicking it in the mixer.
  • Follow-Me never silences an app that is on a call.
  • Auto-Duck depth is adjustable (3–30 dB).
  • Every app is released at the same moment instead of one after another.
  • A live Auto-Duck rule can no longer put Shruti back in the audio path while bypassed.
  • Loading a Scene can no longer change whether Bypass All is on at the next launch.
  • Shift-Command-Escape now works when Shruti's own window is in front. A fast double press means on then off.
  • New Full Screen button (Control-Command-F): Shruti fills the screen with the mixer centred at a readable width; press again to return exactly where it was.
  • The menu-bar resize handle now looks like a resize handle, not a full-screen button.
  • Shruti's windows always open fully on screen, even if they were last used on a larger display.
  • Keyboard Shortcuts section, and Send Beta Feedback in Settings.
  • Removed "Force software volume", which did nothing. The Max volume ceiling now also holds on outputs without their own volume control (HDMI, many interfaces).
  • Start at Login shows the real login-item state.
  • The "Shruti icon" menu-bar style is now its own waveform icon.
  • Audio Devices folds devices created by other apps (Zoom, Camo, loopback tools) into their own section.
  • `shruti smart` command for support: shows and sets the Smart switches.

1.4.16

  • Makes an output choice real before reporting success. Shruti now verifies the macOS
  • Remembers a successful manual output choice and restores it when that device reconnects.
  • Automatically moves from built-in speakers to newly connected personal audio, including
  • Coalesces duplicate Safari and application route rebuilds during hardware changes. A
  • Keeps applications that follow the system output following it when an old saved redirect
  • Returns the confirmed device in the panel, command line and Shortcuts result; a failed
  • Adds `shruti app "Safari" redirect follow` as an explicit way to remove a per-app pin and

1.4.15

  • Keeps every feature unlocked until license sales actually open, as the product page
  • Adds one explicit switch, `ShrutiLicenseSalesOpen`, that arms paid licensing. It is off
  • Restores full control of levels, mutes, boosts, effects, redirects and Smart features on
  • Clears the red "Not activated" badge in Settings on builds where there is nothing to
  • Ends refusal banners in a single full stop instead of two.

1.4.12

  • The floating (torn-off) panel's close button collapses it back into the menu bar, which is
  • That mattered beyond the surprise: stopping the service hands every controlled app back to
  • Quitting is still a real full stop, and still available deliberately: **More → Quit Shruti &
  • Logging out, restarting or shutting down no longer uninstalls the service agent. macOS stops
  • "Pinned" is honoured at launch. The preference used to outlive the window: the pin button came
  • When the audio service is not answering, every Shruti surface shows what that means for your
  • The panel button, the More menu, the Support Centre and VoiceOver now all call the global
  • In AppleScript, the Shortcuts actions and the `shruti` command line this same control keeps its
  • The menu bar icon no longer glows amber while Bypass All is on. Amber means "Shruti is in this
  • App icons are resolved once instead of on every repaint. Each row used to perform a Launch
  • The colour tile behind each app icon is a quiet backing plate rather than a full-strength
  • **Remove** is no longer a permanently visible destructive button sitting beside the favourite
  • The `LEVEL BOOST` column heading was wider than its column and clipped. It reads `BOOST`, which

1.4.11

  • Moving a volume or boost control no longer repeatedly tears down and reconnects the app's
  • Unity gain is level-matched with true bypass. Shruti adds no compressor, ducking or hidden
  • Mute is click-free and remains hearing-safe across helper recovery, device switching and
  • The 1x–4x boost uses the same low-latency render path as ordinary volume. Boost does not add a
  • **My Order** is entirely user-controlled. Playback starts, stops and meter updates cannot move
  • **Recent Audio** is the same stable order filtered to apps heard during the last three days; it
  • A genuinely new playback app is detected once and appended at the bottom. It begins at 100%
  • Remove and Restore are durable. Capture-only utilities such as Wispr Flow do not reappear due
  • Search combines known audio applications with apps Shruti has actually heard, so uncommon
  • Live output meters show which apps are actually producing sound.
  • Stable colour tiles, clearer status copy, move-to-top controls and improved spacing make long
  • The main panel responds to compact and expanded window sizes without clipping app names or
  • Installed Audio Units can open their native editor window, while Shruti's built-in processors

1.4.10

  • Device switches no longer open a "blast window". Switching outputs (AirPods
  • Trial or license expiry can no longer unmute anything. Mute is hearing protection, not
  • A crashed per-app helper now re-engages immediately instead of waiting up to 2 seconds
  • A mute or volume change made in the instant a helper was still starting is now pushed
  • Per-device volume memory now counts as a real control. Previously an app remembered at
  • Hearing caps (per-device maximum volume) and the global volume/sample-rate/mute locks
  • "Follows Output" for alert sounds now actually follows. Choosing it used to pin alerts
  • A saved alert-sound device that disconnects and returns is re-pinned automatically.
  • Bluetooth volume memory and locked workspace lanes now recall when the device
  • Every nested settings object (locks, Bluetooth profiles, lanes, duck rules, hearing
  • The menu-bar app now writes only the three fields it owns (appearance, start at login,
  • An app you configured on an earlier version (or just dragged back to 100%) no longer
  • Automatic-family apps whose App Store category macOS reports unhelpfully no longer

1.4.9

  • Excludes Tracktion's `pluginval` validation utility from automatic DAW discovery.
  • Keeps actual Waveform/Tracktion DAW installations in the focused default mixer.
  • Retains the durable Add, Remove and Restore behavior introduced in Shruti 1.4.8.

1.4.8

  • Starts with a focused automatic mixer: Claude/ChatGPT, browsers, MuseScore, DAWs and
  • Adds a visible Remove control to every app row, plus a destructive context-menu action.
  • Returns a removed app to untouched direct audio and clears its saved level, effects,
  • Keeps removal durable across app restarts, Mac restarts and SoundSource imports.
  • Makes Add App show explicit Add, Remove and Restore states, with search covering known
  • Preserves deterministic manual ordering; LIVE state never moves a row.

1.4.7

  • Keeps every installed playback-capable app in the mixer whether it is silent or active,
  • Uses Core Audio activity only for the LIVE indicator and discovery; it never changes the
  • Remembers uncommon applications after they produce real audio once, covering apps whose
  • Expands installed-app recognition for browsers, media players, DAWs, communication apps,
  • Keeps searches and directories in deterministic name order so playback changes cannot make

1.4.6

  • Fixes Audio Devices, Scenes, Settings and Output Groups controls when Shruti is pinned
  • Finds playback apps using both the installed-app directory and live Core Audio evidence,
  • Makes Claude and ChatGPT searchable playback apps and lets vendor-style searches such as
  • Keeps the live mixer focused on apps producing output now, with a three-second anti-flicker
  • Removes playback-driven “smart” reordering. Your order remains fixed, hidden apps retain
  • Makes Compact a genuine two-line mixer layout so app names remain readable while level,
  • Replaces the vague “fix volume keys” prompt with a contextual Mac volume-keys setup for

1.4.4

  • Shows only proven live audio, actively controlled rows, and a short 15-second recent-audio
  • Suppresses Wispr Flow, Camo and ScreenFlow playback false positives caused by capture apps
  • Adds persistent up/down ordering controls to every visible app, plus one-click Smart Order
  • Replaces the ambiguous green-dot treatment with an explicit LIVE waveform badge and labels
  • Keeps Google Chrome helper processes attributed to Chrome and preserves existing device order,

1.4.3

  • Cuts steady background discovery work by combining Shruti's raw and owner-resolved audio
  • Throttles status-driven discovery refreshes and uses a two-second low-priority fallback while
  • Preserves the independent `ShrutiService`, evidence-only mixer, device ordering, Frequently Used

1.4.2

  • Gives Shruti its own `ShrutiService` executable, singleton lock, control socket and logs.
  • Removes Sangam service startup, shutdown and packaging from every Shruti shipping path.
  • Keeps each engaged app inside its own sacrificial tap worker while the main service stays responsive.
  • Adds a release gate that rejects any future runtime or installer coupling to Sangam.
  • Shows only apps with real or recent output activity (or an active control), removing idle
  • Adds drag-free Move Up/Move Down device ordering and a Frequently Used section backed by
  • Adds safe Remove and Restore for physical audio devices without uninstalling macOS drivers;
  • Keeps audio-app discovery playback-focused, so microphone permission or a video category

1.4.1

  • Spotify, Chrome, YouTube and other app audio no longer go silent when Shruti engages on a
  • Capture-only apps such as camera utilities no longer keep an output aggregate alive.
  • A camera or call app whose Core Audio output flag remains stuck on after proven silence stays
  • Short browser-helper and player-state changes no longer churn otherwise healthy tap helpers.
  • The audio callback now reuses its buffer and performs no steady-state heap allocation.
  • Wall-clock activity sampling moved out of the real-time callback and onto the existing worker
  • The menu UI refreshes once per second while visible and every three seconds while hidden,

1.4.0

  • Each controlled app now gets its own isolated audio helper. If one Core Audio graph or Audio
  • SoundSource migration now transfers the exact Audio Unit preset when the same plug-in is
  • The current mixer, protected-app list and system routes survive restart as before.
  • The optimized product suite now passes 320 checks, including exact preset restore and tap
  • A compatibility table now separates physical hardware passes from build-only coverage.

1.3.0

  • **One-click SoundSource migration:** imports saved app levels, mutes, favourites, 10-band EQ, balance and excluded apps. Registration data is never read or copied.
  • **Live-host protection during migration:** MainStage and every excluded DAW or routing app are forced back to Shruti's direct, zero-added-latency path before the import is applied.
  • **Useful effect translation:** Jason's Waves NS1 intent is preserved with Shruti's built-in, out-of-process-safe Noise Suppressor. Proprietary presets that cannot be translated honestly are listed for review.
  • **Sound Effects route:** Output, Input and macOS alert sounds now form a complete System section, including a clear “Follows Output” default.
  • **Release reliability:** the production performance suite now runs in optimised mode everywhere, and public releases can only be published from this repository's reviewed `main` branch.
  • **Audio-engine hardening:** closed clients cannot crash the service, device and playback