- 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.
Changelog
What shipped.
Plain-language release notes for every public product, newest first.
- 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.
- 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 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.
- 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
- First update delivered inside the app: from now on new versions arrive in Riyaz, one click to install.
- 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.
- **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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- When nothing loose is left to remove, Duplicates shows only "Nothing loose to remove" instead of an empty Trash button.
- Duplicates also keep any copy that a Final Cut library or a REAPER project on another connected drive uses.
- 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 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.
- While a saved scan is opening, the drive page says so instead of offering "Scan this drive".
- Big hard disks open in seconds after the first time: Kosh remembers which files each REAPER project uses.
- Remove history also forgets that list.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- **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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- Maintenance release.
- 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.”
- Loopback import keeps extra devices off the public mic and matches Loopback’s 50% level.
- Typical aligned path on the studio rig remains tens of milliseconds before Zoom or OBS add their own buffer.
- 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.
- 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.
- 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.
- 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.
- 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 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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
- Faders respond instantly, always. Touching any app's fader/pan/mute/EQ/sync gives that app its
- "Everything Else" is updated in place. When an app gains/loses its own lane the system tap's
- Apps enter the mix within ~0.2 s of their first sound. Core Audio process start/stop events
- Live Sync sliders (per-app and voice) and the mic volume slider are tactile: per-tick preview
- "As heard" policy restored uniformly: the calibrated `latencyMs` is informational only; both
- RAW INPUT / processor meters read the MIC lane, not the device-wide max (a dead mic looked
- Previews of noise/comp/EQ/pan reach the headphone monitor too; the monitor honours the mic
- NaN/Inf from a user plug-in or driver glitch can no longer poison the voice chain (envelopes
- SIGPIPE ignored + SO_NOSIGPIPE on every control socket: a CLI/daemon that hangs up mid-frame
- Config decoding is tolerant end-to-end: unknown source kind, malformed voice/EQ settings, one
- Changing the Mac's default output (AirPods, HDMI) re-points every app tap; the mic lane never
- Zero-lane transitions keep the ring writer alive (publisher writes silence): no generation
- Start-in-flight tracking + exponential backoff for failing starts: no rebuild storms after
- 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.
- 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
- 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
- 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.
- 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.
- 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.
- 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
- 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
- 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,
- 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
- 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
- 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,
- 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.
- **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
- Maintenance release.
- Maintenance release.