Stable Kuzy releases, newest first. Each entry covers the changes since the previous tag — what shipped, what was fixed, and what to expect after auto-update.
A bigger release than usual. The agent's runtime now persists mid-execution state to the server, so a quit-and-relaunch picks up a long task where it left off instead of starting over. The Bypass mode behaves like Claude Code's full-autonomy flow — handy when you trust the agent to drive without checking in on every step. Yearly billing landed alongside an admin gift path for handing out subscriptions without touching Stripe. And the recovery layer got tighter: repeated failures on the same tool now trigger a structural ban so the loop ends instead of churning.
◆Mid-execution state: long tasks survive an app restart — the bridge writes its work-in-progress to the backend and rehydrates on next launch, completion cards show up where the task left off.
◆Bypass mode = full autonomy (Claude Code semantics). Skip the per-step approvals and let the agent drive end-to-end. Normal mode still respects approval rules.
◆Schema-error retry loop is broken: when `write_file` (or any tool) keeps failing for the same structural reason, the agent stops, calls it out, and asks for guidance instead of grinding.
◆Watchdog tuning: longer threshold, real interrupt action, banner shows what the agent was last doing — fewer false-positive "stuck" warnings.
◆Yearly plans: monthly + yearly tiers on the marketing page; the cron worker handles monthly credit reset so yearly subscribers don't lose their bucket between Stripe invoices.
◆Admin subscription gift: hand out subscriptions to team / partner users without touching Stripe (admin-only endpoint).
◆Recipes UI + Computer Use sandbox hygiene: the agent's recipe library has a UI surface, and the Computer Use sandbox got tighter isolation.
◆Desktop UI refresh: tasks panel is an accordion now, conversation feed is flatter, sidebar polished. Same shortcuts, calmer visuals.
◆Auto-update channel at `kuzy.ai/updates/latest-mac.yml` now advertises 0.1.16; the app picks it up on its next check.
A user-experience pass focused on what the agent shows you while it works. Previously, every active state — thinking, writing, running tools — shared the same "writing" pill, which made a slow first token feel like the app had frozen. The agent also got noisy when a tool call's arguments came back malformed, sometimes narrating the recovery step instead of just doing it. This release fixes both.
◆Three distinct status badges in the chat header: **THINKING** (violet) before the first reply token, **WRITING** (cyan) while the answer is streaming, **TOOL** (amber) while a tool is running. The thinking badge holds for a minimum 0.4 s so you actually see it on fast turns.
◆When a tool call is missing a required argument or carries malformed JSON, you'll see a calm cyan "Otomatik düzeltme deneniyor" card instead of a raw stack trace, and the agent self-corrects on the next turn.
◆Two consecutive failures of the same tool now break the loop automatically (was three). The agent stops, surfaces the issue, and asks for your guidance instead of grinding through repeated attempts.
◆Inline answer field added to the agent's "ask me a question" cards — you can type a free-form reply without leaving the bubble.
◆Switching to a different conversation while one is mid-task now shows a confirm dialog ("Durdur ve geç" / "İptal") so a running turn isn't silently interrupted.
◆Stuck-state safety net: if the agent looks busy but nothing has changed for 60 seconds, a banner appears with a Stop button; after 90 seconds the app forces itself back to idle.
◆Auto-update channel at `kuzy.ai/updates/latest-mac.yml` now advertises 0.1.15; the app picks it up on its next check.
Three quiet but consequential fixes for the launch-day build. New users who downloaded the DMG from the site were hitting Gatekeeper on copy-to-/Applications; that path is repaired. Existing users won't see anything change visually — the work is under the hood.
◆Mac install: stapled the notarize ticket to the .app bundle itself so the app keeps its credentials when you drag it out of the mounted DMG. Earlier builds only stapled the DMG, which left a copied .app appearing "unverified" on first launch.
◆Sign-in persistence: the desktop bridge now decrypts the auth token written by the new sign-in flow, so quitting and reopening Kuzy keeps your session alive instead of bouncing back to the browser handshake.
◆Stripe webhook safety: plan-change proration is now wrapped in a single transaction with the event-processed marker, so a duplicate webhook redelivery cannot grant credits twice.
◆Auto-update channel served at `kuzy.ai/updates/latest-mac.yml` advertises 0.1.14; the app picks it up on its next check without manual action.
Same-day patch release on top of v0.1.12. A handful of issues surfaced once real users started touching the build, and a few audit follow-ups landed at the same time. None of these change behavior on the happy path — they tighten security, fix one approval-dialog crash, and unblock the production Clerk enforce flip.
◆Approval-dialog crash fixed — a signature mismatch in the approval handler caused every tool call that asked for confirmation to fail with `unexpected keyword argument 'call_id'`. Now passes through cleanly.
◆Sign-up + sign-in unblocked on the dev preview — `clerk-telemetry.com` was missing from the dashboard's Content-Security-Policy `connect-src`, so the Clerk widget would refuse to load on `dev.kuzy.ai`. Added.
◆Download CTAs point at the right DMG — the website's version label was still pinned to v0.1.11, so `/download` was handing out the old build to anyone who clicked. Single source of truth (`website/lib/version.ts`) now tracks the live release.
◆Clerk authorized-party enforcement turned on — the server validates that incoming session JWTs were minted for one of our origins (`kuzy.ai`, `dev.kuzy.ai`, `localhost:3000`, the Clerk frontend host) instead of accepting any token from any Clerk instance. Mismatches now 401 instead of silently logging a warning.
◆Team rulebook refreshed — `CLAUDE.md` rewritten to cover the three-environment workflow (local → dev → prod), the hotfix flow we just used, and the production patterns each engineer should follow before shipping. Public release-notes discipline is wired into the next release script.
A bigger release that bundles the entire production-readiness audit (24 fixes), a new logging system on the server, and a marketing-site rewrite. The audit work hardens the agent runtime, the billing path, and the desktop sandbox; the site rewrite reframes Kuzy around autonomy and removes the old CLI-first copy.
This is the build that ships from `kuzy.ai/updates/` to existing v0.1.11 installs. New users get it via the landing page download CTA.
◆Pyodide WASM sandbox for `run_code` on desktop — Python code the agent runs is no longer a subprocess on your machine; it executes inside an in-process Wasm interpreter with no host shell, no syscall escape, and a 120-second wall clock.
◆Sensitive file read approval — `read_file` calls that hit `~/.ssh/`, `~/.aws/`, `~/.kuzy/secrets.env`, browser profile dirs, etc. now show a HIGH-risk approval dialog before the agent sees anything. Deny is the default.
◆Per-run sub-agent credit budget cap — a worker spawn can no longer drain a session by recursively spawning more workers; the budget is set at the top of the run and shared across the tree.
◆Real-time credit balance — desktop toolbar's credit pill updates instantly when a tool spends credits (server pushes the new balance over SSE). No more "refresh to see the right number."
◆Logging system on the server — every request, billing webhook, and admin action is now stored in a structured `logging_events` table with a 30-day retention worker. Operators can browse events from `/admin/logging/`.
◆Tool credit metering polished — per-tool and per-model unit costs surfaced in the dashboard usage view; downgrade flow now shows the proration credit you'll get back.
◆Marketing site rewrite — landing page reframes Kuzy as a desktop coding agent (not a CLI), pricing tiers cleaned up, signup CTA added to the topbar, dashboard contrast bumped so the body text actually reads.
◆In-app update banner — DMG updates now appear as a sticky banner with download progress, not a modal that blocks input.
◆New CLI tokens — `/dashboard/cli-tokens` lets you mint long-lived `kuzy_cli_*` tokens for scripts; `kuzy login` / `kuzy logout` / `kuzy whoami` Ink TUI commands wired through the same Clerk OAuth handoff the desktop app uses.
First Apple-notarized build on the production update channel. Gatekeeper warnings are gone, `spctl -a -t exec` accepts the app, and the auto-update chain was verified end-to-end from a real v0.1.9 user install. This is the build we point new users at from the landing download CTA.
◆Apple notarization + stapling complete. No more "Kuzy is from an unidentified developer" prompts on first launch.
◆Bridge lifecycle bug fixed — a missing `try/finally` could swallow the agent's `done` event when the Python child started in a degraded state, leaving the UI stuck on "Thinking…" forever. The bookkeeping now runs unconditionally, so every exit path emits `done`.
◆Composer state cleanup — clicking Stop while a queued input was waiting, or hitting a mid-stream bridge crash, used to leave the UI in `stopping` / `thinking` indefinitely. Both paths now return the composer to idle, and a 5-second watchdog catches the case where the bridge dies without sending a final frame.
◆Auth refresh-on-401 protocol — when a session JWT expires mid-stream, the bridge now mutates the existing LLM client headers in place, wakes any waiters on a condition variable, and retries the in-flight request once with the new token. The renderer auto-runs the silent sign-in handoff when it sees `auth_refresh_required`. No more "API 401: invalid token" until you restart.
◆Auto-update verified end-to-end on a real v0.1.9 install: in-app banner → download → restart → v0.1.11 → first message answered without a re-sign-in.
Kuzy can now update itself in place. We moved off the GitHub private-repo update path that was returning 404s for installed users and onto our own mirror, fronted by Cloudflare. If you have v0.1.9 or later, future releases land automatically — no DMG reinstall.
◆Auto-update channel served from `kuzy.ai/updates/` via Caddy, sitting on top of `electron-updater`'s `generic` provider. Works whether the underlying repo is public or private.
◆Update manifest is a plain `latest-mac.yml` with version, file name, SHA-512, and release date. Easy to mirror, easy to verify, easy to debug.
◆Sandboxed preload bundling fixed (Electron 42 + electron-vite emitting `.js` CJS) so renderer no longer boots with "Bridge not available" on a clean install.
◆Dropped the unused `@electron-toolkit/preload` dependency that was causing a runtime resolve error on some boxes.
A small follow-up to v0.1.6 that fixes two complaints we kept hearing from early users: the stop button did nothing while a tool was running, and a fresh install would refuse to boot on Macs that only had Python from Homebrew.
◆Stop button now actually stops the agent mid-tool — pressing it interrupts the running step, closes the generator, and best-effort kills any worker pool the agent spawned. The UI shows an amber "Stopping…" state until the bridge confirms.
◆macOS Python resolver widened — sandboxed Electron child no longer inherits PATH, which used to break `import httpx` when Python lived under `/opt/homebrew/bin/`. The bridge now tries python.org framework builds, Apple Silicon Homebrew, Intel Homebrew, the system interpreter, and the user PATH in that order.
◆"Bridge not available" on first boot should be gone for everyone running a stock macOS install.
First public-preview build. The product is real but not yet on a public installer channel — sign up for the preview to get access. Highlights of what's in this build:
Out of scope for this preview: a public installer (Homebrew / winget / curl), Windows desktop, Stripe billing, hosted Mac binary signing. Those follow once the cert + payments setup land.
◆macOS desktop app (Electron over the Python agent) — chat surface, tool approvals, todo board, session history.
◆`henry` CLI with the same agent core — Ink terminal UI, Rich CLI, or stdio bridge for scripting.