Skip to content

Releases: noisy/noisy-coding

the README learns to sell itself

Choose a tag to compare

@noisy noisy released this 21 Jul 14:11

Highlights

  • The README finally makes the pitch instead of burying it. The old front page opened with one dense paragraph and five competing install paths; now it leads with what noisy-coding does for you — talk to Claude mid-task, hands-free reviews, the tactical HUD — followed by one golden 2-minute install path (the plugin). Badges show the project is alive at a glance.

Also in this release

  • Plain Docker, native install, remote-host tunneling, env vars and development commands moved to the new docs/INSTALL.md — still all there, just not in a new user's face.

Upgrade notes

  • Documentation-only release: nothing to update. No container pull, no plugin update, no session reload needed.

🤖 Generated with Claude Code

v2.12.0 — the character dials become controls you can actually aim

Choose a tag to compare

@noisy noisy released this 21 Jul 13:16

Highlights

The section an upgrade-nudging agent should quote.

  • The Character Settings dials are now editable controls, not read-only-looking gauges. Setting humor, honesty, brevity or chatty meant dragging blindly around a smooth arc, hoping to land on the value you wanted — and the dial looked like a readout, so it wasn't even obvious you could. Now each dial is six clear segments (0/20/40/60/80/100): click a segment and it snaps there, a glowing handle shows where you are, and the value's meaning is spelled out beneath the number — "playful", "frank", "balanced", "commentary" — so you set intent, not just a figure. Coarser on purpose: the fine-grained 0–100 was never meaningful.

Also in this release

  • Humor's dial is blue again. Inside the persona rail it was rendering violet — same as chatty — because the rail recolors its cyan accent; each dial now carries its own explicit colour, so the four traits read as four distinct colours.
  • Better starting persona. New defaults sit on the segment grid and aren't all mid-scale: humor 20, honesty 60, brevity 60, chatty 40 — nothing maxed out.
  • Larger, brighter trait labels.

Upgrade notes

  • Container + dashboard — both changed (the dashboard carries the new dials, the daemon carries the new defaults). Pull the new image; it ships the rebuilt dashboard.
  • Reload any open dashboard tabs once after updating.

🤖 Generated with Claude Code

v2.11.0 — the clock learns to reset, and a window to watch it

Choose a tag to compare

@noisy noisy released this 21 Jul 11:17

Highlights

The section an upgrade-nudging agent should quote.

  • Spoken progress nudges now actually work — the silence clock resets when the agent speaks. In 2.10.0 the narration nudge shipped, but the clock that decides "you've been quiet too long" was reset on the wrong internal path — one the real speech pipeline never crosses. So speaking never reset it: nudges fired against an ever-growing silence, arrived at the wrong moments, or (with the one-per-stretch guard) barely arrived at all. Now the clock resets at the exact moment an utterance commits to playing, so the chatty budget means what it says. (A muted, unheard utterance correctly leaves the clock running — nothing was said aloud.)

  • New /logs view: watch the daemon think. Open /logs on the dashboard for a live stream of the daemon's event log, including every narration-nudge decision — when the clock reset, when a nudge was SENT, when one was skipped because the agent was idle. Up top, a live per-agent meter shows silence-so-far against the chatty budget, refreshed on the normal poll. The daemon used to reason in a stdout nobody watched; now it reasons on a screen.

Upgrade notes

  • Container + dashboard — both halves changed. Pull the new image (the daemon carries the clock fix and the nudge_clocks status field) AND make sure the dashboard bundle is current (the image ships it). Updating only one half leaves the fix half-wired.
  • After updating, reload any open dashboard tabs once, then visit /logs to see the nudge decisions live.

🤖 Generated with Claude Code

v2.10.0 — the daemon lends the model a clock

Choose a tag to compare

@noisy noisy released this 21 Jul 10:18

Highlights

The section an upgrade-nudging agent should quote.

  • Your agent now volunteers spoken progress updates instead of going silent for minutes. Before, a working agent could grind for ten minutes without a word — you'd stare at the terminal wondering if it was stuck or thinking. Now the daemon quietly tracks how long it's been since the agent last spoke, and when the silence runs long it nudges the agent to give you a quick spoken status. How long is "too long" follows your chatty setting (from ~10 min at low chatty down to ~75s at max), and the update's length follows your brevity setting — chatty decides when, brevity decides how long. It never nags while the agent is waiting on you, only while it's actually working.

Also in this release

  • Fixed stale/mixed dashboard builds after an update. The daemon never told browsers how to cache, so index.html got heuristically cached and you could end up running a half-old, half-new dashboard. HTML now revalidates every load; fingerprinted assets cache forever.

Upgrade notes

  • Container only. Both user-visible changes live in the daemon — pull the new image; no plugin update needed this time.
  • After updating the image, reload any open dashboard tabs once so the new cache headers take effect (this is the last stale-cache reload you should ever need).

🤖 Generated with Claude Code

v2.9.1 — the voice portraits actually load in production

Choose a tag to compare

@noisy noisy released this 21 Jul 04:49

Highlights

The section an upgrade-nudging agent should quote.

  • The voice portraits render in production now. The container's static route only served /assets/ and the favicons, so the avatar sprite quietly 404'd — dev setups never noticed because Vite served it itself. Root-level dashboard files are now served by an extension allowlist (traversal still blocked, regression-tested).

Also

  • On a LOCAL DEV instance, a stale-daemon version skew now says "restart the dev daemon" instead of pointing at the container update.

Upgrade notes

  • Container only: /noisy-coding:update (or docker pull + recreate). No plugin changes.
  • Bonus: if you're coming from 2.9.0, this update is also the first chance to watch the new footer badge announce a release by itself.

🤖 Generated with Claude Code

v2.9.0 — the dashboard knows what version it is (and when you're behind)

Choose a tag to compare

@noisy noisy released this 21 Jul 04:35

Highlights

The section an upgrade-nudging agent should quote.

  • The dashboard now shows its version — and tells you when something is stale. A footer badge compares three things: the UI build, the daemon, and the newest published release. When everything matches you see one quiet number; when the browser cached an old UI it says so with your platform's hard-refresh shortcut (⌘⇧R / Ctrl+Shift+R); when the container runs an old release it points at /noisy-coding:update; and when a newer release is published, a calm green "NEW vX.Y.Z AVAILABLE" invites you to upgrade. Version skews used to be invisible and produced bugs that made no sense — now they announce themselves.

Also in this release

  • The daemon reports version and latest_version in /status (the latter refreshed from GitHub every ~6h, in the background, never blocking a poll).
  • issues-drafts/ is gitignored — local working notes stop sneaking into commits.

Upgrade notes

  • Container only: docker pull noisy/noisy-coding:latest + recreate, or /noisy-coding:update. No plugin changes.

🤖 Generated with Claude Code

v2.8.0 — the dashboard grows a face: voice portraits, per-conversation mute, a window per tab

Choose a tag to compare

@noisy noisy released this 21 Jul 04:11

Highlights

The section an upgrade-nudging agent should quote.

  • Every conversation now has a face. The voice you talk to has a portrait — a full-width avatar above the character controls, drawn from a hand-mapped sprite sheet (leo is a lion, luna wears the moon, rex gets a crown). The voice picker moved under the portrait and became a scrollable list of faces; switching voices is instant thanks to sprite preloading.
  • Mute one conversation, not the whole room. Click a portrait (or its MUTE button) and that agent goes silent immediately — even mid-sentence — while everyone else keeps talking. The cut-short clip is never marked as played: it parks as unheard, the tab shows a blinking red count of what's piling up, and CATCH UP unmutes and replays everything in order, from the top.
  • Tabs became windows. Conversation tabs now protrude above the conversation frame like folder tabs — the selected one is taller, glows, and fuses seamlessly with the window below it. One status glyph per tab tells the whole story: green equalizer = speaking, violet pulse = working, amber count = messages waiting, red crossed speaker = muted. What a tab shows never changes its size.
  • The window belongs to the conversation. Everything scoped to the current thread — the log, latency/cost telemetry, the persona rail (portrait, character sliders, turn timeline) — lives INSIDE the conversation frame. Machine-global controls (mic, spectrum, system state, settings) live in the left column; the global mute-all moved up into the header.

Also in this release

  • Catch-up replays are strictly chronological (they raced before — the last parked message could play first).
  • The tab bar straddles the page header line, hand-tuned to the pixel (Krzysztof's first in-repo commit, by eye).
  • Persona rail recolored violet, consolidated behind one CSS variable; new tagline "TALK WITH YOUR AGENT"; bigger logo.
  • Oscilloscope and spectrum panels flex to fill the column instead of fixed heights.
  • queued_by_agent and muted_agents in /status; POST /mute-agent; the WAIT counter counts speech waiting to be heard (it counted the wrong queue before and showed idle with a full backlog).
  • Vue DevTools panel in vite dev; a dev daemon override for the Vite proxy; Storybook state-matrix stories for the tab system.
  • /noisy-coding:update always finishes with the plugin-version check and can update the plugin itself from inside the session.

Upgrade notes

  • Container (required): docker pull noisy/noisy-coding:latest + recreate, or simply /noisy-coding:update — the dashboard and all daemon features ship in the image.
  • Plugin (minor): only commands/update.md changed; update whenever convenient.

🤖 Generated with Claude Code

v2.7.7 — your words go to the conversation you started them in

Choose a tag to compare

@noisy noisy released this 20 Jul 21:06

Highlights

The section an upgrade-nudging agent should quote.

  • Switching tabs mid-sentence no longer reroutes or strands your speech. A transcript used to be handed to whichever conversation was active when transcription finished — change tabs during the end-of-speech silence and your words landed in the wrong thread, or sat undelivered until you switched back. Every utterance is now addressed to the conversation that was active when you STARTED speaking, and it is delivered there no matter where you are looking now. (#17, P1)

Upgrade notes

  • Server-side only: docker pull noisy/noisy-coding:latest and recreate the container, or run /noisy-coding:update. No plugin update needed.

🤖 Generated with Claude Code

v2.7.6 — replies stay in their own conversation

Choose a tag to compare

@noisy noisy released this 20 Jul 20:34

Highlights

The section an upgrade-nudging agent should quote.

  • Claude's spoken replies can no longer land in the wrong conversation. With two sessions in one directory (or when you switched tabs while an agent was working), a reply could be filed into the other thread's history — the server guessed its identity from a shared per-directory map, and the fallback pinned utterances on whatever tab was active at speak time. The server now identifies itself by the session id Claude Code exports to its child processes: deterministic, per session, no guessing. (#15, P1)

Upgrade notes

  • Both halves matter: docker pull + recreate the container (server fix) AND update the plugin (the launcher forwards the session id into the container). /noisy-coding:setup after a plugin update does the container half for you.

🤖 Generated with Claude Code

v2.7.5 — the contributor MCP server no longer ships to users

Choose a tag to compare

@noisy noisy released this 20 Jul 19:51

Highlights

The section an upgrade-nudging agent should quote.

  • Plugin installs no longer include the contributor-only noisy-coding-dev MCP server. Since 2.7.0 every plugin user was getting a second, dev-checkout server in every project. The root cause: a .mcp.json at the plugin root is auto-loaded in addition to the manifest, so the committed dev entry always shipped. The file is gone for good; production MCP is declared in the plugin manifest, and contributors register the dev server locally.

Also

  • /noisy-coding:setup always pulls the image before docker run, so a stale local latest can no longer pair new hooks with an old daemon (transcripts stuck on "awaiting Claude").

Upgrade notes

  • Update the plugin (/plugin → update, or reinstall) and restart Claude Code. If noisy-coding-dev still appears, it comes from an older cached plugin version — reinstalling clears it.
  • Skip 2.7.3/2.7.4: both attempted this fix; 2.7.5 is the one that works.

🤖 Generated with Claude Code