Skip to content

Releases: noisy/noisy-studio

Noisy Studio 3.0.0-beta.1 — first beta

Choose a tag to compare

@github-actions github-actions released this 22 Sep 06:19

Noisy Studio 3.0 reaches its first beta: a native macOS app for talking with your coding agents.

Upgrading from an alpha or Noisy Coding

Update the app and agent integrations together. This release completes the technical rename to noisy-studio. Old command names, environment variables and MCP registrations are no longer supported, and existing data is not moved automatically. Back up your current configuration and follow the upgrade and rollback guide to retain conversations and preferences. The renamed app may request macOS permissions again.

Highlights since alpha.9

  • Native microphone capture and playback throughout; retired Docker and browser-audio paths removed.
  • Claude sessions can be woken through the socket while voice messages arrive through hooks. Recovery after daemon restarts has improved, with clearer action-needed guidance.
  • Compact audio controls with configurable dashboard visibility, one-click choices, and end-silence options from 0 to 10 seconds. End silence remains editable in push-to-talk, with a clear Auto-mode notice.
  • Voice and avatar changes appear immediately. Conversation labels keep routing IDs and filesystem paths out of the tab strip.
  • Playback completion is recorded promptly instead of waiting for transport cleanup; valid delivery confirmations no longer trigger a false status-bar warning.
  • Microphone changes and conversation system events are recorded more consistently. Character updates show current values and identify the changed setting.
  • Version comparisons correctly order alpha, beta and stable releases: 3.0.0-alpha.9 < 3.0.0-beta.1 < 3.0.0-beta.2 < 3.0.0.

Beta scope

The downloadable desktop build targets macOS on Apple Silicon. This is a prerelease for testing, not the final 3.0 release.

Provider-aware audio-settings availability and separate STT/TTS language behavior are still being refined (#145, #144). Their Storybook Lab previews are proposals, not completed production features. Grok CLI integration is not included in this release.

Please report bugs with your app version, agent integration, audio provider and steps to reproduce.

All changes since alpha.9

Noisy Studio 3.0.0-alpha.6 - hotkeys you can actually set

Choose a tag to compare

@github-actions github-actions released this 15 Sep 06:19

Superseded by v3.0.0-alpha.7. This build is unsigned: macOS refuses it as damaged until a quarantine flag is cleared by hand. alpha.7 is signed with a Developer ID and notarized, so it opens with a double-click. Release notes live there.

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.9 - the audited build, with a Grant button you can press

Choose a tag to compare

@github-actions github-actions released this 15 Sep 09:39

Noisy Studio 3.0.0-alpha.9 — the audited build, with a Grant button you can press. First pre-release of 3.0: the product is now Noisy Studio, it ships as a native macOS app instead of a Docker container, and everything between your voice and your agents was rebuilt so it stops guessing.

Skip everything before alpha.9. alpha.8 cannot grant the hotkey permission from its own settings; alpha.9 is the one to install.

Highlights

The section an upgrade-nudging agent should quote.

  • Two independent security audits, every finding fixed. One reviewer traced the signing secrets end to end: nothing private reaches the app, the release assets or git. The other went through the code the way Apple's notary scan does. What they found and what changed: the microphone device list in the packaged app was quietly booting a second engine on every refresh (fixed); the engine now lives where macOS validates it as code, not as sealed data; an engine can no longer outlive a crashed app and keep the microphone; library validation is fully on; the workflow verifies both bundles strictly and staples the notarization ticket to the disk image.
  • The Grant access button works. In alpha.8 the whole Hotkeys tab, banner included, was dimmed and swallowed clicks - a class name collided with a global style. Fixed, with a test that keeps it fixed.
  • Hotkeys follow the permission live. Revoke Input Monitoring in System Settings and the Hotkeys tab shows the grant banner within a second; grant it there and the keys arm themselves without a prompt. The Grant access button no longer looks disabled.
  • Download, drag to Applications, double-click. That is the whole install now. Every earlier alpha was refused by macOS as "damaged" until you cleared a quarantine flag in the terminal. This build is signed with a Developer ID and notarized by Apple, so Gatekeeper opens it like any other app. The permissions panel lists the engine under its own name and icon, and the grant survives updates.
  • Nothing ships that cannot launch. The release workflow now starts the real packaged app, waits for its engine and checks the version before any asset is uploaded; local builds refuse to package with missing dependencies.
  • A Hotkeys tab: press the keys you want, any combination, even a double press. The three dropdowns with eleven allowed keys are gone. Settings now has a Hotkeys tab: click a field and press the key or chord you want - ⌘⇧F8, right Option alone, or Escape twice for scratch. New: one key per conversation (defaults F16-F19) that selects that tab and opens the mic; press again or hit your everyday toggle to finish, another tab's key hands the mic over. Two actions cannot share a key and the field tells you who holds it; keys macOS keeps for itself are flagged. The tab stays greyed out with one GRANT ACCESS button until Input Monitoring is granted, and nothing asks for that permission at launch.
  • A launch splash that belongs to this decade. The cyan-on-navy "STARTING THE DAEMON" screen is replaced by the app's mark and name with a quiet progress line, nothing to read.
  • First launch no longer interrogates you. alpha.4 opened with a Chromium microphone prompt and a macOS "wants to receive keystrokes from any application" dialog, and the permissions panel listed the app as a nameless black "exec" icon. The app now uses your system microphone directly (the browser-tab mic is gone from the app), asks for Input Monitoring only when you pick a hotkey or press GRANT ACCESS in settings, and the engine is a proper "Noisy Studio Engine" bundle with a stable identity and the app icon - so a grant survives updates. Cold start dropped from about 20 seconds to 2.
  • Your words reach the agent you were talking to — and only that one. Every session in the same folder used to share one identity, so a spoken message could land in the wrong agent, and a helper subagent could eat a message meant for the main one. Each conversation now has a stable identity, a subagent is a participant inside its parent's tab and never takes its queue, and the receipt on the card names the tab that got it.
  • The agent hears you after a long silence. After about an hour idle nothing could wake the agent; we blamed the platform, it was our own timer. The listener now starts the moment a session opens, waits up to four hours, and when it does lapse the tab says so instead of failing silently.
  • Holding push-to-talk stops the agent and records — every time. Interrupting the agent used to leave the microphone dead: the key responded, the hum played, nothing was captured. Now a held key stops playback, parks the cut clip as unheard for replay, and opens capture on the same frame. If a different agent was talking, its message waits and plays again after you finish instead of being lost.
  • Tabs behave like browser tabs and survive restarts. Tabs used to appear and vanish on a heartbeat, duplicate after a restart, or come back labelled with a hash. They are persistent objects now: same name, same order and same voice after a daemon restart; every tab has a close button; a closed tab stays closed; a tab shows a real name or "New conversation", never an id or a path.
  • Every agent sounds different. New tabs used to copy the default voice and face. A new conversation now claims a voice nobody else on the strip has, and a viewer's voice survives a reload instead of drifting mid-conversation.

Also in this release

  • Closing the last tab takes its conversation pane with it instead of leaving a tab-less window.
  • The packaged daemon reports its real version (alpha.4 said "dev"), so the version badge and update check work.
  • The dashboard renders from a pushed WebSocket state stream; polling is only the fallback while the socket is down.
  • Voice messages waiting for an agent survive a daemon restart.
  • A message you skipped stays skipped and never re-enters the catch-up count.
  • Codex: each thread is its own tab named after the thread, identity is injected per call, and the configured listening window is honoured (it was silently clamped to 30 s).
  • A microphone that fails to open no longer overwrites your device choice; the daemon falls back for the moment and retries your pick until it is back.
  • Voice ledger names are case-insensitive, so "WootDragon" and "wootdragon" are one person.
  • Demo Studio: timed actor scenarios with interruption handling, take review, and export of original takes and aligned agent audio.
  • Optional, opt-in usage analytics in the desktop app and the website; the website is served from noisystudio.ai.
  • Skills for Claude Code and Codex rewritten from scratch for the native app.

Upgrade notes

This alpha changes both halves: the daemon (now inside the native app) and the hooks shipped by the plugin. One half without the other leaves the cross-boundary bugs above alive.

  • Daemon: install the 3.0.0-alpha.9 desktop app (the DMG attached below) (macOS, Apple Silicon; signed and notarized - it opens with a double-click). Docker is no longer supported in 3.0; a running 2.x container keeps working but gets none of the above.
  • Plugin: claude plugin update noisy-coding then /reload-plugins, and restart each Claude Code session — hooks are read once at startup. Codex users: codex plugin marketplace upgrade noisy-coding, reinstall from the plugin browser, review the changed hooks in /hooks, start a new session.
  • Local dev instances must use their own config directory (scripts/dev_daemon.sh does this); two daemons on one directory overwrite each other's history and voices.

Known in this alpha: the first launch of a downloaded copy shows macOS's standard "downloaded from the Internet" question once; the "not listening" tab state has no visual yet (#78); Codex cannot be woken while fully idle, a platform limit (#74); hooks and dashboard transport refactors continue (#83, #85).

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.8 - the audited build

Choose a tag to compare

@github-actions github-actions released this 15 Sep 09:24

Superseded by v3.0.0-alpha.9. In this build the Hotkeys tab's Grant access banner is dimmed and swallows clicks (a CSS class collision), so the Input Monitoring permission cannot be requested from settings. alpha.9 fixes it. Release notes live there.

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.7 - signed, notarized, double-click and it opens

Choose a tag to compare

@github-actions github-actions released this 15 Sep 08:06

Superseded by v3.0.0-alpha.8. Signed and notarized like alpha.8, but its microphone device list boots a stray second engine on every refresh and the Hotkeys tab does not notice a revoked permission. alpha.8 fixes both after two independent audits. Release notes live there.

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.5 - installs like an app should

Choose a tag to compare

@github-actions github-actions released this 15 Sep 02:53

Superseded by v3.0.0-alpha.6. This build works, but hotkeys are limited to eleven fixed keys and there are no per-tab keys; alpha.6 adds the Hotkeys tab with press-to-capture and the new splash. Release notes live there.

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.4 - the agent side gets a spine

Choose a tag to compare

@github-actions github-actions released this 14 Sep 06:29

Superseded by v3.0.0-alpha.5. This build works but greets you with a Chromium microphone prompt and a macOS keystroke-permission dialog on first launch, lists the engine as a nameless 'exec' icon in Privacy & Security, and reports its version as 'dev'. alpha.5 fixes all of that. Release notes live there.

🤖 Generated with Claude Code

Noisy Studio 3.0.0-alpha.3 - the agent side gets a spine

Choose a tag to compare

@github-actions github-actions released this 13 Sep 19:27

Superseded by v3.0.0-alpha.4. This build opens but ships without the offline speech libraries (faster-whisper, kokoro), so the local engine option fails. alpha.4 is the same code with the build complete. Release notes live there.

🤖 Generated with Claude Code

3.0.0-alpha.1 — the agent side gets a spine

Choose a tag to compare

@github-actions github-actions released this 13 Sep 18:58

Superseded by v3.0.0-alpha.3 - this tag has no app binary. The desktop packaging failed on the macOS build runner (a beforePack hook read a field electron-builder never provides; alpha.2 then hit a missing type declaration). alpha.3 is the same code with the build fixed and the app attached. Release notes live there.

🤖 Generated with Claude Code

v2.17.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 10:09

The companion widget stops being a Storybook mockup and becomes a thing you
can actually use. Built live on stream, with Krzysztof finding the bugs in
real time.

The companion is real now (#28)

In 2.16 it existed only in Storybook. Now it runs on live daemon data and
can be pulled out of the browser entirely.

  • Float it above everything. A float button in the dashboard top bar
    opens the widget in a Document Picture-in-Picture window that stays above
    every other application. No extension, no extra software. The element is
    moved into that window rather than re-rendered, so there is one
    component with one state, and it goes back where it came from when the
    window closes.
  • Switch conversations from the widget. Every agent gets a portrait in
    a vertical rail, in the same order as the dashboard tabs. Positions never
    change - the selected one grows and lights up in place, so switching
    cannot shuffle anything. Unread conversations carry an amber ring.
  • A live voice spectrum. The hexagon follows your actual microphone
    level, from the same feed the dashboard oscilloscope uses, and breathes
    slowly when you are quiet - silence should look like listening, not like
    a frozen widget. It lights the moment you hold push-to-talk, agreeing
    with the ON AIR badge instead of lagging behind it.
  • Waiting messages and a busy line. Transcripts awaiting pickup and
    replies queued behind the speaker render below the line, dimmed, exactly
    as they do in the dashboard - both views now share the same state machine
    rather than each deciding for itself what a status means. When the agent
    is working between messages, the widget says what it is doing.
  • Type sized per message. A short line renders large, a long one small,
    and neither changes after it appears. Text that resizes while you are
    reading it is worse than text that was always small.
  • /companion standalone, and ?transparent=1 for a native shell that
    can composite it. The widget is already built to be see-through when
    something can render it that way.

Also

  • /status now reports agent_voices, so a client can draw an agent's
    portrait without fetching /character once per agent on every poll.

Storybook

Companion/PoC is gone. In its place: Companion/Widget with twelve
states grouped by what each one is for - including an empty conversation
and a short line after a long history, both of which broke on air today -
and Companion/Parts covering the pieces alone: bubble sizes, the spectrum
idle and speaking, and every voice portrait in one grid, so a voice without
artwork is visible there rather than on a stream.

CLAUDE.md now says Storybook is kept up to date, not merely used to design
with: stories change in the same commit as the component, dead stories get
deleted, and a bug worth fixing is a state worth a story.

Known

Two voices in the subagent pool, aurora and liora, still have no
portrait and render as a blank disc (#44).