Nathaniel Labs
Changelog

What shipped.

Plain-language release notes for every public product, newest first.

Riyaz 1.7.10
  • Chord spelling: a sharp nine is written as a raised 9th. C7#9 reads C E G Bb D#, not two different thirds.
  • Teentaal claps on beats 1, 5 and 13. Beat 9 is khali: you still hear it, but it is not a clap.
  • Adi tala claps on 1, 5 and 7: the laghu of four, then the two drutams.
  • In 6/8 and 7/8 one click is named a quaver, in 2/2 a minim, and in x/16 a semiquaver. 4/4 is unchanged.
  • Tempo words are in order: 90 is Andante moderato and 100 is Moderato.
Chorale 1.16.6
  • Low harmonies more than two octaves under you stay smooth when you sing a little sharp or flat, and notes below the range sound an octave up instead of on the wrong note.
  • Chord names are spelled right in all 12 keys (for example G#m7b5, D#dim7, Db13#11); C Eb G A with C at the bottom reads Cm6.
  • A 13#11 chord keeps all seven notes.
Cue 0.6.18
  • Straight after Cue starts, an AI helper now sees your whole WhatsApp chat list, not just the first few chats.
  • Chat lists for helpers are tidier: each chat on one line, with its time instead of its name printed twice.
  • Helpers can open every email in Gmail, including one you have only just sent.
  • Only one video plays at a time in the main window, even when a page's sound starts late. Vanish still lets every video play.
Cue 0.6.17
  • When an AI helper opens a WhatsApp chat for you, it uses WhatsApp's own search, so it finds chats that are far down the list.
  • It compares the whole name or the phone number, so two people whose names start alike can no longer be mixed up. If it cannot be sure, it stops and says so.
  • The WhatsApp search box is always left empty afterwards.
  • Your personal and school WhatsApp can both be worked at once, and nothing is brought in front of you while you use the other.
  • New: helpers can search and read Gmail in a tab of their own, and see every row and every message.
Chorale 1.16.5
  • Opens with three singers (was five); turn it up to six any time.
  • In Auto and Voice no singer goes more than a fifth above you or an octave below you, unless a key you hold asks for that exact note. A singer that only doubles another at the octave sits at half level.
  • Each Source voice type keeps a comfortable range (General E2-G4, Bass C2-D4, Tenor A2-A4, Alto F3-D5, Soprano A3-G5).
  • Every singer sounds like a different person: a slightly lighter throat and a touch more breath above you, a slightly darker one below, on top of your Character knob.
  • With no keys held, no singer is ever a semitone from you.
  • No sudden low notes when the pitch reader briefly hears an octave down.
  • Cleaner chord changes (the small clicks are gone) and the sparkle above 2.5 kHz is back.
  • Your vibrato carries into every singer.
  • Chorale-1.16.5.dmg: aefcd5e6b694809ef8615d02afb8d4d864d6185ba522613a4ebd3e354f6a84ca
  • Chorale-1.16.5-stage.zip: f3796d850356af03406c46e7f0bedf24e3689d4e8d6b0f935a090b4b09b0a79e
Chorale 1.16.0
  • It sings the moment you do: the app opens in Auto. Sing with no keyboard for three-part harmony from the key; play a chord and the singers build it around your voice. Never silent while you sing.
  • It remembers your key between sessions.
  • Six modes, six different sounds: Auto, Voice, Lead + Pad, Choir, Keys, Melody (same positions, so saved sessions and MIDI maps keep working). While keys are held, every note sung is in their scale.
  • Loud enough, never clipping: Auto Mic Level is on everywhere; loud passages land around -16 dBFS with peaks under -1 dBFS, from a -40 dBFS mic to a -12 dBFS one.
  • Steadier pitch: Humanize is now Spread and Motion (Motion 0.12 by default; 0 = no wobble).
  • The on-screen delay figure now includes the per-singer stagger.
  • Chorale-1.16.0.dmg: 6608314ee1ecaf054bb946b4f71e27ac51e9d7f8b98fe222382e693d7f1657e1
  • Chorale-1.16.0-stage.zip: e506670ed2bf86eaacd464d8d88e498057cff69ccf2e23f13591a667cc6b25ba
Riyaz 1.7.9
  • Band PDF (chords only): bars with several chords get the room they need, and long song titles shrink to fit.
  • Safe editing with undo and redo; charts saved as files; one-page PDFs ready to AirDrop; tap-in rhythm.
  • Chord Charts organised in packs with a find box; bass riffs show in bass clef; Check for Updates works again.
Chorale 1.15.1
  • Bass sounds right again: on Auto, Bass Instrument keeps the Singer engine, so the harmonies follow your chords.
  • Listen → Dry only always plays your voice, even with the Mix at full harmony.
  • Everything from 1.15.0: Ignore Speakers for stage without headphones, harmonies arrive sooner, big-block DAWs, Mirror and controller fixes.
Shruti 1.4.41
  • Shruti is now fully self-contained: the one-click import of settings from another mixer app has been removed from Setup and from the shruti command line. Your existing Shruti mix, favourites, effects and exclusions are untouched.
  • Other audio-routing apps' background engines are still never captured, so Shruti cannot feed its own output back into a loop.
  • The website and help text no longer refer to other companies' products.
Sangam 1.2.15
  • Sangam now stands on its own: the old import from another routing app is gone, and every mention of other companies' products has been removed from the app and its documents.
  • Cleaner voice with zero delay. A new noise reducer, written for Sangam, learns your room's hum and hiss in about a second and pulls it down between words. It adds no delay at all, so it is safe on Zoom and live streams. Long sung notes and held piano chords are never mistaken for noise.
  • Two noise modes in the Voice Console: LIVE (no delay) and RECORDING (adds a deeper speech cleaner for the cleanest take, 10.7 ms of delay).
  • Interface gain on the mic row. Minus and plus buttons change the preamp on the interface itself, one dB per click. On the Zen Studio this goes through Zen Console and never touches 48 V or the input type. Interfaces whose macOS driver offers a gain control work the same way; others say so plainly.
  • Volume faders now read true decibels like a DAW (0.0 dB = unchanged), with marks at −30, −18, −12, −6, 0 and +6 dB. Hold Option while dragging for fine moves; double-click resets to 0 dB. Mic volume goes up to +18 dB.
  • The plug-in menu is grouped by type (EQ, compressor, gate, noise reduction, de-esser…) and then by maker. The mic shows only plug-ins that work in mono; app rows show stereo ones. Plug-ins that add delay sit in a separate "More" list. Mono-only plug-ins now load on the mic.
  • Preview works. The mic preview was silent because it looked for the mic under the wrong name. A muted app can now be previewed in headphones without unmuting it in the call. Call apps explain why they have nothing to preview.
  • Record starts at once. The call's own track is set up in the background, still lined up exactly.
  • The main mix now says what the call hears: your mic plus every app playing, never the call apps.
Sangam 1.2.14
  • Cleaner voice with zero delay. A new noise reducer, written for Sangam, learns your room's hum and hiss in about a second and pulls it down between words. It adds no delay at all, so it is safe on Zoom and live streams. Long sung notes and held piano chords are never mistaken for noise.
  • Two noise modes in the Voice Console: LIVE (no delay) and RECORDING (adds a deeper speech cleaner for the cleanest take, 10.7 ms of delay).
  • Interface gain on the mic row. Minus and plus buttons change the preamp on the interface itself, one dB per click. On the Zen Studio this goes through Zen Console and never touches 48 V or the input type. Interfaces whose macOS driver offers a gain control work the same way; others say so plainly.
  • Volume faders now read true decibels like a DAW (0.0 dB = unchanged), with marks at −30, −18, −12, −6, 0 and +6 dB. Hold Option while dragging for fine moves; double-click resets to 0 dB. Mic volume goes up to +18 dB.
  • The plug-in menu is grouped by type (EQ, compressor, gate, noise reduction, de-esser…) and then by maker. The mic shows only plug-ins that work in mono; app rows show stereo ones. Plug-ins that add delay sit in a separate "More" list. Mono-only plug-ins now load on the mic.
  • Preview works. The mic preview was silent because it looked for the mic under the wrong name. A muted app can now be previewed in headphones without unmuting it in the call. Call apps explain why they have nothing to preview.
  • Record starts at once. The call's own track is set up in the background, still lined up exactly.
  • The main mix now says what the call hears: your mic plus every app playing, never the call apps.
Sangam 1.2.13
  • No more echo on Zoom calls. The students' sound from Zoom (and Teams, FaceTime, Webex, Skype, Discord, WhatsApp and Slack calls) is never sent back into the call, in every mode. Before, in Default mode Zoom went into the Sangam microphone, so the class heard itself a second time and recordings sounded doubled.
  • The call is still recorded. Press Record during a call and Sangam keeps the call on its own track, then after Stop makes one Class Record file: your live mix plus the students, each once, lined up on the same clock.
  • Set how loud the students are in the recording with the call app's fader in Sangam (the Zoom row). It changes only the recording, never the call. The untouched student track is saved beside it.
  • Google Meet and other browser calls: Sangam cannot tell a Meet tab apart from YouTube in the same browser, so use one browser only for calls (for example Safari), right-click its row in Sangam and choose "This Is a Call App". It is then kept out of the call and recorded the same way.
Prism 1.0.11
  • Pick a line, not seven switches. The first screen — and the Files section of Settings — offers eight named sets: Everything, All media, Everything visual, All audio, All video, Only PDFs, Only web pages, Nothing. Tap one and Prism asks macOS for exactly those. The per-kind switches are still underneath for a different mix.
  • Local web pages are now one of the kinds. An HTML file on your Mac can open in Prism, with its pictures, styles and scripts, rather than in a browser. It is off unless you ask for it.
  • Give it back. Prism writes down which app held each type before it takes it, so one button hands them all back. macOS has no undo of its own for this, so Prism keeps the note itself.
  • Settings is three sections. Files — what opens in Prism, and what happens when you open another one. Memory — what Prism remembers. Prism — version, updates and the Finder space-bar preview. The details sit behind disclosures, so nothing is a wall of switches.
  • Remembering is one switch. It used to be possible for "keep history off" and "no kinds are checked" to disagree with each other. Now there is a single Remember what I had open. With it off, Prism's saved session is deleted, its Recent Items list is cleared, and macOS is told to keep none for Prism at all — so nothing can be added back between one clear and the next. Window sizes and positions stay. Your files are never touched.
Prism 1.0.10
  • Match Loudness. Prism measures how loud a file actually is — the same way broadcasters measure it — and lifts or lowers it to one target, so moving down the queue never means reaching for the volume again. Two targets: Study (−18) for a quiet practice room, Listening (−14) to match what streaming services serve. It never squashes a file's peaks to reach a target; where there isn't room, it gets as close as it safely can and stops.
  • Volume to 200%. Past 100% a look-ahead limiter holds the peaks a decibel below full scale, so a quiet phone recording of a class gets genuinely louder instead of distorting. The readout turns amber and shows the decibels you've added, so a boost is never a mystery. The slider still settles on 100% by feel on the way past it.
  • One gain stage for all four sound paths. Apple playback, VLC playback, the MIDI synth and the metronome now read the same settings and behave identically — the same number means the same loudness whichever engine a file needs.
  • Mono check and single-side listening. Fold both sides together to hear a phase problem straight away, or play the left or the right on its own.
  • Independent metronome level. The click has its own level and its own mute, separate from the file.
  • The release script now retries a nested signature that fails the first time.
  • Full audit release. Shortcuts, text clean-up and speech models were checked end to end and 16 bugs fixed.
  • Mac `~` key: a quick tap now still types the ` character. Hold to talk, double-tap for hands-free, Shift+Escape throws a recording away.
  • Shortcuts: changing a shortcut can no longer leave dictation without a key; two actions can't share one key; the old key stops working as soon as you change it; if the key engine can't start, the built-in fallback takes over.
  • Privacy: AI formatting never receives your words while it is switched off.
  • Reliability: AI formatting gives up after 30 seconds (it could take 60) and uses the local clean-up; a failed paste no longer loses your clipboard; Shift+Escape works during the AI step.
  • Writing: "a seven year old", "a sharp reply" and "a flat" stay as words instead of turning into chords. Cm(maj7) and Gaug7 are written correctly.
  • Indian languages: Whisper Small is now the recommended first model for Indian English, Hindi, Tamil, Kannada, Telugu, Malayalam and other Indian languages. Automatic language detection stays on for multilingual models.
Kosh 1.0.12
  • Automatic scans and live drive updates wait while Zoom, OBS, REAPER or Final Cut is open; manual scans remain available.
  • Automatic scans run one at a time and use less processing power.
  • Kosh no longer adds itself to this Mac's startup items, and takes itself back out if an older version put it there. Start it at login only if you switch that on in Settings.
Cue 0.5.3
  • When Google refuses to sign you in — "this browser or app may not be secure" — Cue no longer leaves you on Google's dead end. It explains what happened and offers to carry your Google sign-in over from Chrome, for Google's own sites alone.
  • Cue now describes itself the way Chrome does in all three places a site looks: the user agent, the client hint headers and the page itself.
Cue 0.5.2
  • The AI door: no AI tool can drive Cue until you switch it on in Settings, and it closes again every time you quit.
  • Websites now have to ask before they can send and receive MIDI with your instruments. Our own apps never ask.
  • Cue will never replace a newer copy of itself with an older one.
Cue 0.3.0
  • Tab names are the name of the thing, not the page title written for a search engine. "Chord Trees - Interactive Chord Visualization | Learn Piano & Guitar Chords" is now "Chord Trees". Double-click any tab to name it yourself.
  • Site logos are drawn as the site drew them — no dark circle, no orange ring on every row. The login a tab belongs to is a small corner dot, and only when it differs from the login that Space uses.
  • The volume slider no longer blocks the tab you are clicking. It used to slide over the whole row the moment the pointer crossed the speaker. Click to mute, scroll to change, option-click for the slider — and it sits at the end of the row.
  • Pinned apps are half as big again and find their real logo.
  • Cue has its own tooltips: what the control is, and underneath, what it does. The login circles now say that P, S and A are Personal, School and AI agent, with a line naming the one new tabs will use.
  • The Space heading is quieter: smaller, in ink rather than tone, count in a pill.
  • History is a list of websites, not a list of pages — one line per place, filed under the same headings the sidebar uses.
  • Open a site up to see the pages Cue kept from it, or Forget that site completely in one click.
  • A page that did not work is never recorded. Blocked pages, 404s and "Just a moment" screens used to fill the list with links that lead nowhere.
  • Upgrading folds the old page-by-page list into the sites it came from and lets the pages go.
  • Caches are trimmed every half hour, not only at launch.
  • Electron 44.10.0 — eight Chromium patch releases on from 44.7.2.
  • Downloads carry macOS's quarantine mark and a "Where from", so Gatekeeper checks an installer Cue downloaded. It checked nothing before.
  • Two entitlements dropped: disable-library-validation and allow-unsigned-executable-memory. Other software can no longer load its own code into a browser that holds your sign-ins and can reach your camera.
  • A website can no longer un-blur Safe-share, switch its own notifications back on during a class, or undo the volume you set for its tab.
  • Peek only ever follows an ordinary web link, never a file on this Mac.
  • Cue's own pages cannot be framed inside somebody else's page.
Cue 0.2.5
  • Vanish window keeps its tabs and saved site data separate from the normal browser.
  • New sidebar with resizing and an icon-only view.
  • Cache limits of 256 MB per login.
  • Chrome move-in fixes for currently open tabs and their current pages.
Cue 0.2.4
  • The pedal and the OBS rig can ask Cue to show a given tab
  • The window comes forward for the class without taking focus from you
  • Tabs an AI agent opened in the background are never shown to a class
Prism 1.0.9
  • Scrolling over a video no longer fights with the volume. A sideways swipe moves through the video, an up-and-down swipe changes the volume, and one swipe never does both.
  • The film strip and the preview pictures appear sooner and show many more frames, so scrubbing lands on the picture you expect.
  • When you stop scrolling, the exact frame under the pointer fills in.
  • New OBS control surface for the Relay iPhone and Apple Watch apps. Relay Mac reads the scenes in OBS's current scene collection and shows which one is on air, so the phone can switch scene with one tap. Helper scenes such as the MIDI keep-warm scene are hidden.
  • If the studio class rig is installed on this Mac, four big class buttons (Piano view, Class Apps, MIDI strip, Notation) run through that rig exactly like the Stream Deck pedals, not through raw OBS calls.
  • The phone also shows, read-only, whether OBS is recording, streaming or has the virtual camera on. Relay never starts or stops recording or streaming.
  • OBS is only read while an iPhone or Watch is connected. This needs OBS's WebSocket server enabled (Tools, WebSocket Server Settings); Relay reads OBS's own password and talks only to this Mac.
  • Updates still never install by themselves, and a connected iPhone session finishes first. Pairing, modes and settings are kept.
  • New click sounds: real marimba, woodblock, cowbell, claves and rim recordings, cut so every click lands exactly on the beat. The marimba rings shorter, so fast subdivisions stay clean.
  • Accents & volume, right under the controls: tap a beat to make it an accent, tap again to put it back. Soft and Off are one tap too, with a slider for each level and the main volume.
  • By default the notes between the beats play on your own click, softer. You can still pick a different instrument for them.
  • A tidier dial: no stray numbers beside plain beats, no yellow dot in the middle, and the tempo name shown once.
  • The cleaner 1.4 layout with one place for each tool. Your tempo, presets and setlist are kept.
Shruti 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.
Shruti 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.
Riyaz 1.7.0
  • Two study charts in Chord Charts: Boom Boom and Ainvayi Ainvayi, bar by bar with sections
  • Marks for keyboard players: licks, riffs, stabs, hits and moments to watch on the chart
  • One-page print and export in a handwritten look, portrait or landscape, with templates and small adjustments
  • Swap in the handwritten original in place of the typed chart
Riyaz 1.6.1
  • First update delivered inside the app: from now on new versions arrive in Riyaz, one click to install.
Riyaz 1.6.0
  • Reading handwriting no longer needs the Claude app: Riyaz reads chord charts and sketches through the school's own reader, about 20 seconds a page.
  • Riyaz now updates itself: it checks once a day and asks before installing.
  • Your own songs folder: ~/Library/Application Support/Riyaz/Songs shows up in the song book.
Chorale 1.14.2
  • Hold keys: played notes stay in their actual registers.
  • Follow register: the entire held voicing moves in octaves with your sung register. It preserves its chord pitch classes and inversion. Hysteresis prevents repeated octave changes near the register boundary.
  • Move in parallel: the entire held voicing moves by the singer's melodic semitones. The inversion and spacing remain; the chord transposes with the melody.
Shruti 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.
Sangam 1.2.12
  • The installer now waits for the Mac's audio to come back after it replaces the audio driver, and gives Sangam's audio service up to a minute to start, so the update finishes instead of stopping halfway.
  • Calmer meters. Every level bar now rises instantly and falls smoothly, like a hardware meter, instead of flickering between words and notes. The voice row no longer blinks its border with every syllable.
  • Each app says plainly whether it is on: PLAYING, OPEN, MUTED or CLOSED, next to its meter. The green light stays on between phrases instead of blinking.
  • Favourites: click the star on any app (or right-click it) to keep it at the top of the list, always shown.
  • New apps arrive at 100% and muted in Sangam, so nothing new leaks into a stream or a call. Unmute it with one click. The app still plays on its own speakers.
  • An app you removed shows up again, muted, the next time you open it and it plays.
  • Apps that have been deleted from this Mac are dropped from Saved apps.
  • The remove (X) button is bigger, always visible and turns red under the pointer, and a removed app disappears at once.
  • Volume goes to 200% (double, +6 dB). For a quiet source such as a DAW mixed to -12 or -18 dBFS, use Boost on the app's fader for +6, +12 or +18 dB.
  • Change the voice input right on the main page: click the input under "Voice (Mic)" and pick any channel or stereo pair on any connected interface.
  • Voice Console opens faster: the list of your installed plug-ins loads in the background.
  • Voice Console meters now read true dBFS (-60 to 0, marks at -18, -12 and -6) with a peak readout that holds long enough to read. They used to show a voice at -20 dBFS as about -4.
  • Mute Everything in the menu-bar panel: one big button silences every app and the mic in Sangam at once, and the menu-bar icon turns into a red crossed speaker. Unmute Everything puts back exactly what was on before.
  • A new version is easy to spot: an "Update available — <version>" button appears at the top of the Sangam window and in the menu-bar panel, and the menu-bar icon gets a blue dot. Click it, then choose Download Update or Later. Nothing installs on its own.
  • Check for Updates… is in the Sangam menu, in the menu-bar panel and in Settings, with the version you have beside it.
  • Sangam checks when it opens and then every hour (was once a day). A found update stays on screen even if a later check cannot reach the internet.
  • The audio driver refuses a badly formed command from another program instead of risking a crash of the Mac's audio system.
  • Install scripts only install parts signed by Nathaniel School of Music's own Apple developer account, checked inside a folder only the system can change.
  • Updating the driver from inside Sangam swaps it safely: if anything fails, the previous driver is put back, so the Mac is never left without one.
  • The end of a recording is never cut off: Sangam stops the input, writes every last sample, and only then closes the file.
  • Checking for updates no longer freezes the window, and an up-to-date copy now says "up to date" instead of showing an error.
  • Panic (silence everything) always acts at once, even if the driver is slow.
  • The background service notices a newly installed driver without a restart, always uses the signed-in person's own settings folder, and never follows a planted link when it writes files.
  • Shared files in the system's temporary folder are opened safely, and idle connections no longer hold resources forever.
  • Every installer now uses one shared list of apps that must not be interrupted.
  • Removed old Shruti build scripts from Sangam; Shruti is built from its own project.
Shruti 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.
Shruti 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.
Prism 1.0.8
  • New: when a newer Prism is ready, an "Update available" button appears at the top of the window. Click it to read what changed, then choose Install or Later.
  • Prism › Check for Updates… and Settings now show the version you have.
  • Prism still checks for updates when it opens and every hour. It never installs or restarts by itself, and the update waits while something is playing.
GrabIt 1.23.1
  • When a newer GrabIt is ready, an "Update available" button appears at the top of the window. Click it to read what changed, then choose Install or Later.
  • GrabIt › Check for Updates… and Settings › Updates now show the version you have.
  • GrabIt still checks when it opens, when you come back after an hour, and hourly while open. It never installs or restarts by itself; downloads, captures and indexing finish first.
  • When a newer Relay Mac is ready, an "Update available" button appears at the top of the Relay window, and in the menu-bar menu. Click it to read what changed, then choose Install or Later.
  • Check for Updates… now shows the version you have, in the window, the app menu and the menu-bar menu.
  • Relay now checks for updates every hour instead of once a day. A found update no longer opens a window on its own; it waits for your click, so a phone connection is never blocked by a pop-up.
  • Updates still never install by themselves, and a connected iPhone session finishes first. Pairing, modes and settings are kept.
Kosh 1.0.11
  • A new version is easy to spot: "Update available — <version>" appears at the top of the Kosh window and of the menu-bar panel, and the menu-bar icon gets an orange dot. Click it to install, or choose Later. Nothing installs on its own.
  • Check for Updates… sits in the Kosh menu, in the menu-bar panel's ··· menu and in Settings, with the version you have beside it.
  • Kosh checks when it opens and then every hour (was every six hours).
Kosh 1.0.10
  • Clean up remembers what you chose. A switch you turn off stays off after a clean-up, after a fresh scan and the next time Kosh opens, and every tick or untick stays on the same file.
  • "Untick all" and "Kosh's suggestion" at the top of Clean up; "Tick all" and "Untick all" inside each list; "Open all folders" and "Close all" in REAPER backups.
  • A switched-off list shows nothing ticked. Ticking one item turns its switch on for just that item.
  • Folders open and close from the arrow or the name; a tick box only ticks.
  • Before anything moves, the question lists each kind with its count and size.
  • Preview in Prism: the eye button and a right-click on any video, audio, MIDI, photo (RAW too) or PDF opens it in Prism. Right-click also offers Show in Finder, Open and Copy path, everywhere Kosh lists files. On a card, click a picture to preview it.
Shruti 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.
  • shruti output volume no longer crashes 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.
GrabIt 1.23.0
  • Find keeps a durable change cursor for each approved folder. On reopening GrabIt, the Mac's saved file events catch up with additions, edits, moves and deletions made while it was closed.
  • Existing libraries reconcile once after this upgrade to establish their cursor. Unchanged image labels, OCR and PDF text are reused. Searches read the saved index rather than starting another scan.
  • Large event bursts update their changed folders instead of rescanning every approved drive. If macOS reports missing event history, only the affected root is reconciled. Offline locations retain their saved results and are labelled offline.
  • Discovery and analysis use batches of at most 250 files and two analysis workers. Find Similar streams saved features and retains the closest 120 matches instead of loading the entire feature database into memory.
  • The universal Mac package now targets macOS 13 Ventura or later. Compatible Vision and keyboard handling and rebuilt Intel/Apple Silicon helpers support that deployment target. Studio runtime acceptance uses macOS 15.6.1, including Intel execution through Rosetta; physical Intel and actual macOS 13 remain team acceptance checks.
  • Signed updates are checked on opening, on returning after an hour and hourly while open, when automatic checks are enabled. You choose Update before installation or relaunch. Downloads, active helper tools, captures, indexing and export sheets defer replacement.
  • The separate download engine no longer installs itself on a background timer. Choose Update Engine Now in Settings, or approve Update Engine when a failed download offers repair, before its executable is replaced.
  • FFmpeg is rebuilt from pinned upstream source with its matching x264/LAME sources and build recipe distributed beside the installer. Its helper is a separate GPL component, not linked into GrabIt.
  • Exact remote clips explicitly verify HTTPS peer certificates rather than relying on the media tool's permissive default.
  • Clear Finished refreshes immediately when a download finishes; transfer progress remains isolated from search.
Prism 1.0.7
  • New: turn on Prism › Space-Bar Preview in Finder, then press Space on an audio or video file to preview it in Prism Peek: waveform (left and right combined, or split with S), film strip, listening notes, loops, spots, frame steps and scrubbing. Other files still open in Quick Look.
  • A single click on a video no longer pauses it. Double-click the picture, or press F, for full screen; Space plays and pauses there and Esc comes back.
  • The film strip and the scroll preview now show the picture under the pointer as you move, read once in the background so scrolling stays smooth.
  • Prism checks for updates every hour. Each download and installation still asks first.
Kosh 1.0.9
  • RAW photos are their own kind: counted, ticked and copied separately from JPEG/HEIC photos, into a "RAW" folder.
  • Test clips (videos under 5 seconds) are listed by name and length and left out of the copy unless you tick them back in. They stay on the card until it is formatted.
  • New shoots are named "Shoot <today's date>", e.g. "Shoot 15 October 2026".
  • SD and microSD cards look different in the sidebar, and the page says which one it is (read from the reader's slot).
  • Copies to two drives are written at the same time, and a drive that writes slowly is flagged before you start.
  • "Safe to format" only shows when nothing but test clips was left out.
  • Groove Metronome for Mac now checks for signed updates by itself once a day. It always asks before downloading and again before installing, and never while the click is running.
  • Check for Updates… in the Groove Metronome menu checks right away; Check for Updates Automatically switches the daily check on or off.
  • Universal app: runs natively on Intel Macs as well as Apple silicon. Tempo, presets and setlist are kept.
  • Developer ID signed and notarized by Apple. Copies older than 1.3.1 need this download once; after that updates arrive inside the app.
Kosh 1.0.8
  • Memory cards: a card in a reader — straight in or through a hub — gets its own "Cards" place in the sidebar, with the reader, the card's size and how fast it reads.
  • A card's "Copy off" page sorts what's on it by camera and day: photos (RAW counted), video clips, audio recordings and other files, with a few pictures from each day.
  • Copy a card to one or two drives under a shoot name, sorted by camera and type or exactly as on the card. Every file is read back from each drive and checked against the card before Kosh says "safe to format in the camera", and a check list is saved in the shoot folder.
  • Plug a card in again and Kosh says whether it has already been copied. Copying again adds only what is missing.
  • Kosh only ever reads a card: no clean-up, no test files, nothing renamed or deleted. It forgets the card when it is removed.
  • Cards with no real format date no longer show 1 Jan 1970.
Kosh 1.0.7
  • REAPER backups can be chosen folder by folder and project by project. Kosh keeps the newest few of every project (you pick how many), any backup saved after its project, and the newest backup of a project whose .RPP is missing.
  • Live updates: while Kosh is open it follows each drive, so moves, deletions and new files show within seconds — totals, clean-up, duplicates and search included — with a "Just now" list of what changed. Changes made while Kosh was closed are caught up when it opens.
  • A drive is noticed the moment it is plugged in: its row glows, Kosh opens it and starts reading it if it is new.
  • Point at the disc, the space bar, a colour in the legend or any file for details. The disc sweeps in and the slice under the pointer lifts out.
Kosh 1.0.6
  • When nothing loose is left to remove, Duplicates shows only "Nothing loose to remove" instead of an empty Trash button.
Kosh 1.0.5
  • Duplicates also keep any copy that a Final Cut library or a REAPER project on another connected drive uses.
Kosh 1.0.4
  • Duplicates now has two lists: "Safe to remove" and "Used by Final Cut & projects".
  • Copies a Final Cut library links to, copies in Final Cut or project folders, and any file a REAPER project names are kept, so no project loses its media.
  • "Tick every loose copy" selects all the safe extras, music and video included.
  • Duplicate results are kept after quitting, updating or rescanning.
Kosh 1.0.3
  • Kosh is now free on Nathaniel Labs.
  • Every copy checks for a new signed version a few seconds after opening and every six hours while it runs.
  • A new version shows as "Kosh … is ready" in the sidebar and the menu-bar panel, with one notification; nothing installs until you choose Update.
  • Automatic update checks can be switched off in Settings.
Kosh 1.0.2
  • While a saved scan is opening, the drive page says so instead of offering "Scan this drive".
Kosh 1.0.1
  • Big hard disks open in seconds after the first time: Kosh remembers which files each REAPER project uses.
  • Remove history also forgets that list.
Kosh 1.0.0
  • Every drive's space, health, measured speed and a plain verdict for editing, recording and archiving.
  • What's on it: iCloud Drive, Dropbox, Photos and Final Cut libraries, documents by type, biggest folders and files.
  • REAPER projects with missing files, unused recordings and .rpp-bak backups; other audio and video projects.
  • Clean-up to the Trash with Put back, duplicates, photos, search across drives (even unplugged), eject, warnings and the menu-bar panel.
  • Accessibility and Screen Recording now show their actual permission status separately. Returning from System Settings or choosing Check permissions again refreshes the status.
  • New Permission repair help explains how to replace a stale permission entry left by an older development-signed copy with the official app in Applications. macOS approval is still required separately on each Mac; an update cannot grant access.
  • Enable preview opens Screen Recording settings when approval is still missing. Preview stays blocked until both the user's choice and macOS permission allow it.
  • Test preview checks one real frame on this Mac and discards it immediately, showing whether screen capture actually works without saving or transmitting the frame.
  • Relay skips expensive desktop and recorder polling while disconnected. The pairing screen reuses its QR image; connected remote controls retain current app and call state.
  • Signed updates still require your Install choice and protect connected remote sessions. Pairing, modes and update preferences are preserved.
  • New Call recording control: the Relay iPhone app (build 38) can start and stop a call recording in NSM Call Intake on the Mac. Relay only passes the commands along; it does not record audio or open a network port.
  • Pairing, saved settings and update choices are unchanged. Signed updates still require an explicit Install choice; connected remote sessions are protected.
Sangam 1.2.7
  • Select a hardware input channel or stereo pair with independent gain, mute, metering and Audio Unit effects. Search installed Audio Unit effects and rescan after installing new ones; VST/VST3 hosting is not included.
  • Native-rate timeline reads preserve samples bit for bit; meter updates avoid rebuilding the whole mixer.
  • Check for authenticated updates inside Sangam. Automatic discovery respects your preference and never installs silently. Review the changelog and choose Download Update, then separately confirm Install in macOS Installer.
  • The signed installer updates the app and matching resident service together, retaining prior components for rollback. It refuses active or unknown audio sessions and only replaces the HAL driver/restarts Core Audio when that driver changes.
  • Package authentication handles the actual macOS notarization report while independently verifying the pinned Developer ID Installer team and signed package checksum.
  • Installer safety checks now use Sangam’s bundled native tool. Python, Xcode and Rosetta are not required for installation on supported Apple silicon Macs.
  • Installer text clearly explains reopening Sangam from Applications after installation to resume microphone and app audio. Sangam can then run in the menu bar when its window closes.
Shruti 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.
Prism 1.0.5
  • Open and use local HTML study pages with sibling styles, scripts and images; interactive controls, file selection and downloads are supported with explicit native dialogs.
  • Keep score PDFs in a separate window beside audio, video or MIDI playback. Page changes do not interrupt the playback clock or loops.
  • View MIDI notes on a redesigned piano visualizer, or switch to notes and staff notation. Swing suggestions require repeated paired onsets; the source MIDI is unchanged.
  • Find compatible updates automatically. Prism asks before downloading and again before installing and relaunching.
  • Choose whether Relay checks for updates automatically in its window or menu. Manual Check for Updates stays available.
  • Reopen the pairing window from Finder, the Dock or the menu after it has been closed.
  • Signed updates require an explicit Install choice; connected remote sessions are protected.
GrabIt 1.22.6
  • Choose in Settings whether GrabIt checks for updates automatically. Discovery can be switched off; every download and installation still waits for your explicit choice.
  • Pick Best video, Silent video, or Audio directly from the labeled Download as row. The selected mode stays in sync with Settings and remains after relaunch.
GrabIt 1.22.5
  • Move the download mode out of the link field into a labeled Download as row. Best video, Silent video, and Audio are all visible and selectable directly.
  • Update the selected mode immediately when clicked, keep Settings in sync, and retain the choice after relaunch.
  • Explain each mode below the selector: video with sound, video without sound, or sound only. Keep Stills alongside the download controls and give the link field more room.
GrabIt 1.22.4
  • Refresh a rejected public YouTube media link once before reporting HTTP 403, without lowering quality or retrying access restrictions.
  • Optional online Find requests use opaque IDs instead of sending local file or folder paths. Search and shelf replies still map back to the correct local files.
  • Online title sorting and the optional iCloud inbox are off for new users until enabled. Existing saved choices are retained; on-device transcription, image recognition and exports keep working without those online features.
  • Remember download history can be switched off. Remove history clears GrabIt's saved entries and recent-document list while keeping original files, settings and window preferences. Keeping archived links remains a separate choice.
  • The workspace remembers placement separately for its tabs, queue modes and Find media types. Settings has its own placement; windows recover onto an available display and fullscreen transitions do not overwrite normal frames.
  • App updates wait for active downloads and open export/media sheets before replacement or relaunch. Engine replacement defers while another download process remains active.
  • Open-source/font notices are included in the installer and accessible from the app menu.
Prism 1.0.4
  • Open MKV and other supported videos with the bundled VLC fallback, with corrected Finder video registration. Video shutdown and file replacement run off the main thread.
  • Smoother coalesced video scrolling, a brief percentage volume meter, hover stills and a pinch-adjustable filmstrip. Video skips audio waveform analysis.
  • Export copies locally: H.264 MP4/MOV/MKV, M4A/MP3/lossless FLAC, optimized PDFs and PDF-page JPEGs, JPEG/PNG/PDF images. Choose Smaller, Balanced or Higher quality. Originals are retained.
  • MIDI Piano, Notes and Staff modes, a following note/staff cursor, sculpted piano keys, offline Lipi/VexFlow staff engraving and adjustable quantization, key, hand split and meter. Quantization changes notation, not playback.
  • Per-user window placement by media type and Stage/main role, plus Remove history and persistent history-off mode for Prism’s session and macOS recent-document list.
Chorale 1.14.1
  • Hold keys: played notes stay in their actual registers.
  • Follow register: the entire held voicing moves in octaves with your sung register. It preserves its chord pitch classes and inversion. Hysteresis prevents repeated octave changes near the register boundary.
  • Move in parallel: the entire held voicing moves by the singer's melodic semitones. The inversion and spacing remain; the chord transposes with the melody.
Chorale 1.13.0
  • The factory bank grows from 14 to 28 sounds: eight dedicated synth leads, plus Deep sub bass, Acid bass, Clav keys, Drawbar organ, FM bell and String ensemble.
  • Synth leads: Classic saw, Square solo, Triangle glide, Pulse, Wide saw, FM, Whistle and Bright sync-style. These are original synthesized patches; the six existing sample banks remain. No ANA 2 presets or proprietary recordings are copied.
  • Sound selection is grouped into Bass, Electric piano & keys, Poly synth & pads, Plucks & bells, Brass and Synth leads. Existing saved patch indices retain their meanings.
  • Brief losses of a bass string's odd partials no longer immediately commit an octave rise. A rise requires nine fresh consistent analysis estimates (about 16 ms beyond the first proposal); a downward octave requires four (about 6 ms). First attacks and non-octave changes retain their previous confirmation path. The vocal detector is unchanged.
  • Vocal factory presets retain the independent synth settings and both physical input assignments.
  • The main window shows the installed version.
GrabIt 1.22.3
  • Pasted links start downloading without waiting for a separate metadata extraction or folder sorting. Titles, artwork and duration come from the download itself.
  • YouTube links show their cover while you choose a format. The Stills control opens Smart Moments after a video finishes, with still-image, clip and GIF exports.
  • Compatible MP4 prefers native H.264 video where the source offers it; disabling that preference retains the unrestricted format selection.
  • Silent-video failures are reported instead of claiming success with audio still attached. Cancelled partial files and unmerged streams are no longer treated as finished downloads.
  • Download settings are isolated from command-line yt-dlp configurations. A failed engine-update check no longer repeats the same failed transfer against an unchanged engine.
  • Smart Moments limits decoder concurrency. Automatic app updates require user confirmation before replacement or relaunch.
  • Browser capture lists Safari and Chromium tabs correctly instead of treating the browser’s tab class as a text separator.
  • Bundled QuickJS and whisper.cpp retain their existing versions and now target macOS 14 on Apple Silicon and Intel. Build checks reject helpers requiring a newer operating system than the app.
Shruti 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.
Prism 1.0.3
  • Audio has one collapsible amplitude waveform. Signed peaks and RMS energy preserve stereo amplitude without separate left/right lanes or automatic display boosting.
  • Video keeps the picture clear. The seek bar spans the player, with decoded still previews on hover and no persistent audio waveform or filmstrip.
  • MIDI plays through a new three-dimensional piano with solid shaped keys, a tilted camera, falling notes, pressed-key animation and Ivory, Nocturne and Glass finishes. Its labelled velocity timeline follows the same playback clock. Suggested keys use file signatures or duration/velocity-weighted detection, with uncertainty shown.
  • Double-clicking the picture changes fullscreen without changing playback; single clicks toggle playback. Selected queue entries preserve their playback position, and drag reordering preserves loops and selection.
  • PDFs accumulate side by side with independent page positions and an explicit Replace option. Instagram carousel resolution preserves photo/video order, with an original-post fallback when a service denies access.
  • Signed automatic update checks, with Check for Updates in the menu and pairing window. You choose when to install; Relay protects connected remote sessions.
  • Support for the iPhone app’s visible per-app Trackpad shortcuts and shared Customize controls in Trackpad and View. Saved pairing and Mac modes stay in place.
  • Older Mac companions have no updater: download this installer once, replace Relay Mac in Applications, and open it. Future compatible signed Mac updates are offered inside Relay.
GrabIt 1.22.2
  • Pasted links start downloading without waiting for a separate metadata extraction or folder sorting. Titles, artwork and duration come from the download itself.
  • YouTube links show their cover while you choose a format. The Stills control opens Smart Moments after a video finishes, with still-image, clip and GIF exports.
  • Compatible MP4 prefers native H.264 video where the source offers it; disabling that preference retains the unrestricted format selection.
  • Silent-video failures are reported instead of claiming success with audio still attached. Cancelled partial files and unmerged streams are no longer treated as finished downloads.
  • Download settings are isolated from command-line yt-dlp configurations. A failed engine-update check no longer repeats the same failed transfer against an unchanged engine.
  • Smart Moments limits decoder concurrency. Automatic app updates require user confirmation before replacement or relaunch.
Shruti 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.
Prism 1.0.1
  • Finder defaults now cover all 16 video and 14 audio types, including M4V and MPG, with per-category confirmation.
  • Invalid and private online links show a plain-language message with Open original and Remove from queue.
  • Double-clicking a photo or video enters and leaves fullscreen.
  • Signed and notarized installer for Apple silicon Macs running macOS 15 or later.
  • Download and installation help: https://labs.nathanielschool.com/products/prism
Sangam 1.2.2
  • MUTE and MUTED show the real mute state.
  • The public Sangam microphone cannot be deleted. It stays a stereo live mix; extra template pairs are ISO files.
  • Launch at login is the resident helper only.
  • Uninstall removes that helper and will not restart Core Audio while a DAW is running.
  • Recordings keep their length if the disk stalls. 24-bit files are dithered. App ISOs stay raw.
  • The published mix stays 32-bit float. Overload is counted; it is not hidden as a “soft ceiling.”
  • Typical aligned path on the studio rig remains tens of milliseconds before Zoom or OBS add their own buffer.
Sangam 1.2.1.1
  • The microphone input channel you choose is remembered through a restart. Before, if the audio interface was still waking up when the Mac started, Sangam could quietly move the mic to a different channel and save that — so after a restart, apps using Sangam as their microphone (Zoom, dictation, classes) heard nothing.
  • Everything else is exactly Sangam 1.2.1. Driver 0.6.0 unchanged.
Shruti 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.
Shruti 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.
Shruti 1.4.23
  • Live Now separates apps playing output from apps recording input. A screen recorder 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.
GrabIt 1.22.0
  • Find sorts your library onto shelves — Receipts, Sheet Music, Screenshots, Designs, People, Performances, Lessons (optional, uses Jev)
  • Search Find in plain words: "bills I paid", "me at the piano"
  • YouTube downloads are filed into the right genre folder by what the video really is
  • Engine repair starts straight away when a download breaks
  • Links to past YouTube live streams download
  • Pasting a failed link retries it; every refused link says why
  • Spotify links get the official recording with the matching length
  • Smart Moments, Practice versions and Transcribe work from History
  • Portal submissions are saved under the student's name
  • Transcripts made later become searchable in Find
Shruti 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.
Shruti 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. Virtual 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, virtual audio tools) into their own section.
  • shruti smart command for support: shows and sets the Smart switches.
Sangam 1.2.1
  • Lower capture buffering and stable long-session clock handling. The tested studio setup measured approximately 32 ms of Sangam transport.
  • Corrected Safari helper capture and reliable coexistence with Shruti.
  • Microphone processing stays on the voice path; instruments and app audio retain their separate stereo paths. Sangam supports 24-bit WAV recording for a lossless local master.
  • The installed release passed an OBS recording with three visible claps and speech, with no clipped samples and 4.4 dB of true-peak headroom. This studio used a measured +80 ms OBS audio correction; calibrate your own camera and receiving app rather than copying that value blindly.
  • The installer preserves running audio while administrator authentication is pending. When the driver is unchanged, it updates the matched app and service without restarting Core Audio.
GrabIt 1.20.0
  • Faster, more reliable downloads that no longer freeze the window after a song.
  • Paste a link, capture a screenshot, or jump to any tab from the menu bar or a shortcut (⌘/).
  • Live streams need a clip range so they cannot run forever.
  • Spotify links (including spotify:track:) and cancelled clips now finish cleanly.
Sangam 1.2.0
  • Every source on one clock: your voice is the clock, a track (Spotify, YouTube, a DAW) sits on it as heard, a piano (Pianoteq, MainStage, any standalone instrument) is pulled by the MIDI delay measured while you play.
  • A microphone you can leave on: the capture graph runs only while a call app, recorder or monitor is listening — 1–2 % of one core idle, measured.
  • Record is the home screen: one button, the exact Zoom mix as 24-bit WAV, a health line that stops a failing take and says why. Three surfaces: Record / Mix / Setup.
  • Voice chain for teaching and calls: spectral noise reduction under the voice, a true-RMS gate between phrases, tone EQ, soft-knee compressor and speech leveler — the 10.7 ms spectral stage is compensated so the mic never drifts against the apps.
  • Driver 0.5.2. macOS 14.2 or later, Apple silicon and Intel, Developer ID signed and Apple-notarized. Other audio routers can stay open; Sangam never taps their virtual devices.
Shruti 1.4.16
  • Makes an output choice real before reporting success. Shruti now verifies the macOS default-device property after selecting AirPods, Bose, JBL, generic Bluetooth, wired, USB, HDMI or AirPlay audio instead of mistaking an early Core Audio acknowledgement for a completed switch.
  • 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 brand-agnostic Bluetooth, headphones, earphones, earbuds and headsets, while protecting an already active personal device from being stolen by another arrival.
  • Coalesces duplicate Safari and application route rebuilds during hardware changes. A slow wireless transition can no longer accumulate a queue that delays the switch itself.
  • Keeps applications that follow the system output following it when an old saved redirect is missing, rather than leaving them behind on the MacBook speakers.
  • Returns the confirmed device in the panel, command line and Shortcuts result; a failed switch now names the device on which macOS actually remained.
  • Adds shruti app "Safari" redirect follow as an explicit way to remove a per-app pin and follow the selected system output.
Shruti 1.4.15
  • Keeps every feature unlocked until license sales actually open, as the product page promises. A signing key shipped ahead of a working checkout had started the 14-day countdown, so installs reached day 15 and lost their mixer with nothing to buy.
  • Adds one explicit switch, ShrutiLicenseSalesOpen, that arms paid licensing. It is off in this release and turns on only alongside a live checkout link.
  • Restores full control of levels, mutes, boosts, effects, redirects and Smart features on any Mac that was locked out by the expired trial. Saved mixes were never touched.
  • Clears the red "Not activated" badge in Settings on builds where there is nothing to activate, and replaces the "internal testing access" line with what is actually true.
  • Ends refusal banners in a single full stop instead of two.
Shruti 1.4.12
  • The floating (torn-off) panel's close button collapses it back into the menu bar, which is exactly what the pin button beside it does. Previously the close button quit the whole app and uninstalled the background audio service — from a standard macOS window control, with the menu bar icon still sitting there.
  • That mattered beyond the surprise: stopping the service hands every controlled app back to macOS at its own volume, including a muted one. A silent app becoming audible is the exact failure the emergency-bypass path is written to prevent, and a stray window close could cause it. It cannot any more.
  • Quitting is still a real full stop, and still available deliberately: More → Quit Shruti & Stop Audio Service.
  • Logging out, restarting or shutting down no longer uninstalls the service agent. macOS stops the job itself as part of closing the session, and Shruti's service is back at the next login instead of waiting for something to reinstall it.
  • "Pinned" is honoured at launch. The preference used to outlive the window: the pin button came back lit with no panel anywhere on screen.
  • When the audio service is not answering, every Shruti surface shows what that means for your sound — your apps are on macOS's normal path, nothing is muted, boosted or processed — with a Repair button in the same place. The route back used to be Settings → Health → Setup Assistant → Repair: four steps, documented only in the Support Centre, at the exact moment the product looks broken.
  • The panel button, the More menu, the Support Centre and VoiceOver now all call the global control Bypass All. The button reads BYPASS ALL when it is off and BYPASSED when it is on, so the label describes either the action or the state, never both. "True Bypass" now means the per-app power button and nothing else.
  • In AppleScript, the Shortcuts actions and the shruti command line this same control keeps its existing name, Stage Mode, so no saved script or shortcut breaks. The Support Centre says so.
  • The menu bar icon no longer glows amber while Bypass All is on. Amber means "Shruti is in this audio path", and a muted app legitimately keeps its tap under Bypass All — so the bypass shield used to light up amber at the one moment the whole promise is that Shruti is out of the way. It is now the same green the panel's BYPASSED button uses.
  • App icons are resolved once instead of on every repaint. Each row used to perform a Launch Services lookup and an icon rasterization inside its view body, so they ran again for every row on every status poll, every hover and every frame of a slider drag — and fifty times per keystroke in the Add App list. That work is now done once per app.
  • The colour tile behind each app icon is a quiet backing plate rather than a full-strength gradient with a coloured glow. The real app icon sits larger and reads first; the colour survives as a rim and a wash, and a long list no longer carries a shadow layer per row.
  • Remove is no longer a permanently visible destructive button sitting beside the favourite star at the same weight as the volume controls. It appears when the row is under the pointer or is the keyboard-selected row, its space is always reserved so nothing shifts, and it remains permanently in the row's right-click menu — which is also how VoiceOver reaches it. It still asks for confirmation.
  • The LEVEL BOOST column heading was wider than its column and clipped. It reads BOOST, which is what the control under it does.
Sangam 1.2.0-rc.17
  • Faders respond instantly, always. Touching any app's fader/pan/mute/EQ/sync gives that app its own live lane on the spot (AppModel.beginAppControl), keeps it for the session (no flip-flop as the fader crosses 100 %), and engages auto-discovered rows whose faders were silently dead. Previously a unity app had no lane, so dragging did nothing until release, then a full engine reconcile.
  • "Everything Else" is updated in place. When an app gains/loses its own lane the system tap's exclusion list is rewritten live (kAudioTapPropertyDescription) instead of tearing the tap down — no more hole in the mix for every other app on each fader crossing.
  • Apps enter the mix within ~0.2 s of their first sound. Core Audio process start/stop events now drive the active-app scan (ActiveAudioAppObserver); the 5-second poll is only a safety net. Lanes linger 20 s after an app pauses so a gap between tracks never re-seats the timeline.
  • Live Sync sliders (per-app and voice) and the mic volume slider are tactile: per-tick preview to the running lane, ONE commit on release. They used to publish the whole console and, for the voice sync, do a synchronous save + full reconcile on every pixel.
  • "As heard" policy restored uniformly: the calibrated latencyMs is informational only; both lane kinds apply exactly the slider nudge the panel shows (a 13-Aug change applied it on one lane kind but not the other, so the readout lied for named apps).
  • RAW INPUT / processor meters read the MIC lane, not the device-wide max (a dead mic looked alive while Spotify played). Processed meter is post-gain/post-mute.
  • Previews of noise/comp/EQ/pan reach the headphone monitor too; the monitor honours the mic mute from its first block; keyboard/VoiceOver slider changes commit.
  • NaN/Inf from a user plug-in or driver glitch can no longer poison the voice chain (envelopes self-heal; samples flushed after the AU rack). Gain clamp raised to +18 dB total. Warning banner now counts trim + processor output together.
  • SIGPIPE ignored + SO_NOSIGPIPE on every control socket: a CLI/daemon that hangs up mid-frame can no longer kill the process that publishes the microphone.
  • Config decoding is tolerant end-to-end: unknown source kind, malformed voice/EQ settings, one garbage source → dropped/defaulted, never "Sangam forgot everything". Regression tests added.
  • Changing the Mac's default output (AirPods, HDMI) re-points every app tap; the mic lane never restarts. Before, apps silently vanished from the Sangam mic.
  • Zero-lane transitions keep the ring writer alive (publisher writes silence): no generation bump, no ring-ownership clobber from a writer freed on the RT thread.
  • Start-in-flight tracking + exponential backoff for failing starts: no rebuild storms after wake or under OBS load. Plug-in rack swaps retire the old chain on the main thread. Probe teardown waits for the IO callback. RT publisher no longer allocates per block.
Sangam 1.2.0-rc.16
  • Recovers the selected microphone safely after cold boot without silently falling back to another input.
  • Keeps one publisher per audio endpoint and isolates plug-ins and app runtime failures.
  • Coalesces dormant mixer and meter work for low background CPU use.
  • Preserves the public Sangam microphone name and exact aligned live-mix routing.
Shruti 1.4.11
  • Moving a volume or boost control no longer repeatedly tears down and reconnects the app's audio graph. Control attachment is retained and gain changes ramp smoothly, avoiding digital glitches and the previous all-loud-or-all-soft feel.
  • Unity gain is level-matched with true bypass. Shruti adds no compressor, ducking or hidden attenuation unless the user explicitly enables that feature.
  • Mute is click-free and remains hearing-safe across helper recovery, device switching and license state changes.
  • The 1x–4x boost uses the same low-latency render path as ordinary volume. Boost does not add a look-ahead stage or an extra buffering cycle.
  • My Order is entirely user-controlled. Playback starts, stops and meter updates cannot move a row.
  • Recent Audio is the same stable order filtered to apps heard during the last three days; it is not a second auto-sort engine.
  • A genuinely new playback app is detected once and appended at the bottom. It begins at 100% direct passthrough with no tap and zero added latency until the user changes a control.
  • Remove and Restore are durable. Capture-only utilities such as Wispr Flow do not reappear due to ambiguous Core Audio process flags.
  • Search combines known audio applications with apps Shruti has actually heard, so uncommon browsers, instruments and players remain findable after they stop.
  • 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 app lists easier to scan.
  • The main panel responds to compact and expanded window sizes without clipping app names or controls.
  • Installed Audio Units can open their native editor window, while Shruti's built-in processors remain available as low-overhead alternatives.
Shruti 1.4.10
  • Device switches no longer open a "blast window". Switching outputs (AirPods disconnecting, headphones plugging in, waking from sleep) used to briefly release a muted or attenuated app to macOS's direct path at the app's own full volume while the control graph rebuilt. The replacement graph is now built and ready before the old one is released, so a muted app stays silent through the entire handover.
  • Trial or license expiry can no longer unmute anything. Mute is hearing protection, not a premium effect: a muted app's control is deliberately kept and keeps rendering silence even when entitlement lapses. Premium attenuation still ends, as before.
  • A crashed per-app helper now re-engages immediately instead of waiting up to 2 seconds for the watchdog, shrinking the unprotected direct-audio window after a fault.
  • A mute or volume change made in the instant a helper was still starting is now pushed the moment it is ready, instead of waiting for the next periodic sync.
  • Per-device volume memory now counts as a real control. Previously an app remembered at 50% for AirPods (with its generic volume at 100%) played untouched at full volume after a device switch while the slider showed 50%.
  • Hearing caps (per-device maximum volume) and the global volume/sample-rate/mute locks are now re-asserted every 2 seconds and on every device-list change — the hardware volume keys, another app writing the device, or a Bluetooth codec flip (AAC → SCO when a mic engages) can no longer push a capped device past its ceiling for more than one watchdog interval.
  • "Follows Output" for alert sounds now actually follows. Choosing it used to pin alerts to whatever the output was at that moment; it is now re-asserted on every output switch, for users who explicitly chose it.
  • 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 reconnects, not only when it happens to become the default output.
  • Every nested settings object (locks, Bluetooth profiles, lanes, duck rules, hearing care, output groups, UI preferences, system rows) now decodes field-by-field, so a future Shruti adding a field can never silently reset that section of your saved setup.
  • The menu-bar app now writes only the three fields it owns (appearance, start at login, volume-keys choice) when saving, instead of its whole in-memory snapshot — a stale app snapshot can no longer overwrite a newer service-saved mute or volume on disk.
  • An app you configured on an earlier version (or just dragged back to 100%) no longer vanishes from the mixer when its controls return to neutral. Remove is the only way a configured row leaves.
  • Automatic-family apps whose App Store category macOS reports unhelpfully no longer flicker in and out of the mixer while silent.
Shruti 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.
Shruti 1.4.8
  • Starts with a focused automatic mixer: Claude/ChatGPT, browsers, MuseScore, DAWs and live music hosts, instead of filling the panel with every application that might play.
  • 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, redirect, favorite, lane and ducking references so no invisible processing survives.
  • Keeps removal durable across app restarts and Mac restarts.
  • Makes Add App show explicit Add, Remove and Restore states, with search covering known playback apps and applications Shruti has genuinely heard before.
  • Preserves deterministic manual ordering; LIVE state never moves a row.
GrabIt 1.17.3
  • Fixed Screenshots permission flow so GrabIt guides the required quit and reopen.
  • Remembers the screenshot batch and returns directly to Screenshots after relaunch.
  • Automatically continues capture once macOS activates permission.
  • Preserves the Search, Batch, Capture and Smart Moments reliability fixes from 1.17.2.
Shruti 1.4.7
  • Keeps every installed playback-capable app in the mixer whether it is silent or active, instead of removing rows a few seconds after playback stops.
  • Uses Core Audio activity only for the LIVE indicator and discovery; it never changes the user's manual app order.
  • Remembers uncommon applications after they produce real audio once, covering apps whose bundle metadata does not declare playback capability.
  • Expands installed-app recognition for browsers, media players, DAWs, communication apps, games and video editors, including ScreenFlow, while excluding capture-only utilities such as Wispr Flow and Camo.
  • Keeps searches and directories in deterministic name order so playback changes cannot make Chrome, Pianoteq, REAPER or another row jump around.
Shruti 1.4.6
  • Fixes Audio Devices, Scenes, Settings and Output Groups controls when Shruti is pinned as a floating panel; every footer control now opens the same real window from either UI.
  • Finds playback apps using both the installed-app directory and live Core Audio evidence, so newly observed apps appear without needing a hard-coded catalogue entry.
  • Makes Claude and ChatGPT searchable playback apps and lets vendor-style searches such as “Google Chrome” match an app whose display name is simply “Chrome”.
  • Keeps the live mixer focused on apps producing output now, with a three-second anti-flicker grace instead of retaining silent utilities or every installed application.
  • Removes playback-driven “smart” reordering. Your order remains fixed, hidden apps retain their positions, and newly heard apps join without making existing rows fight.
  • Makes Compact a genuine two-line mixer layout so app names remain readable while level, boost, output and FX controls remain available.
  • Replaces the vague “fix volume keys” prompt with a contextual Mac volume-keys setup for fixed-volume HDMI, display, TV and audio-interface outputs.
Shruti 1.4.4
  • Shows only proven live audio, actively controlled rows, and a short 15-second recent-audio grace; running utilities and neutral imported apps stay out of the mixer.
  • Suppresses Wispr Flow, Camo and ScreenFlow playback false positives caused by capture apps keeping a nominal Core Audio output stream warm while emitting no sound.
  • Adds persistent up/down ordering controls to every visible app, plus one-click Smart Order that restores the automatic playing-now-first layout.
  • Replaces the ambiguous green-dot treatment with an explicit LIVE waveform badge and labels short recent-audio grace rows by age, so a volume slider is never mistaken for a meter.
  • Keeps Google Chrome helper processes attributed to Chrome and preserves existing device order, routes, favorites, effects, locks and imported settings during the update.
Shruti 1.4.3
  • Cuts steady background discovery work by combining Shruti's raw and owner-resolved audio activity into one Core Audio process-registry pass.
  • Throttles status-driven discovery refreshes and uses a two-second low-priority fallback while retaining immediate Core Audio start/stop notifications, so a new playing app is still picked up promptly.
  • Preserves the independent ShrutiService, evidence-only mixer, device ordering, Frequently Used routes and safe device removal introduced in 1.4.2.
Shruti 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 apps such as Terminal, Wispr Flow and ScreenFlow from the live mixer.
  • Adds drag-free Move Up/Move Down device ordering and a Frequently Used section backed by durable output, input and alert-route history.
  • Adds safe Remove and Restore for physical audio devices without uninstalling macOS drivers; a current system route must be changed before it can be removed.
  • Keeps audio-app discovery playback-focused, so microphone permission or a video category alone no longer puts recording and dictation tools in the Add App list.
Shruti 1.4.1
  • Spotify, Chrome, YouTube and other app audio no longer go silent when Shruti engages on a device whose hardware-input buffers appear before the app's stereo process tap.
  • 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 on the direct path until a real playback stop/start transition.
  • 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 heartbeat.
  • The menu UI refreshes once per second while visible and every three seconds while hidden, instead of rebuilding the full app and device snapshot twice per second at all times.
Shruti 1.4.0
  • Each controlled app now gets its own isolated audio helper. If one Core Audio graph or Audio Unit fails, that app returns to the direct macOS path without taking the mixer—or another app—with it.
  • 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 containment support, with eight full processing chains averaging below 0.4 ms on the release test Mac.
  • A compatibility table now separates physical hardware passes from build-only coverage.
Shruti 1.3.0
  • Live-host protection: MainStage and every excluded DAW or routing app stay on Shruti's direct, zero-added-latency path.
  • 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 discovery stays off the command path, and browser/helper churn no longer rebuilds a healthy tap underneath live audio.