Releases: rullerzhou-afk/clawd-on-desk
Release list
v0.16.0
v0.16.0
v0.16.0 is an agent-integration, remote-notification, accessory-geometry, and
macOS release-hardening update. It adds the first experimental DeepSeek Harness
bridge, manual ZCode permission approval, Slack notifications, Kimi quota
visibility, and a Spanish interface. It also hardens OpenCode/Codex integration,
preference recovery, Windows fullscreen detection, and Developer ID packaging.
Agent Integrations And Permissions
- DeepSeek Harness bridge (#876) — adds a Windows-first experimental,
plugin-only integration for thewebprofile, with managed immutable
generations, state events, and manual Allow Once / Deny handling for ordinary
approval requests.ask_user_question, automation, foreign packages, unknown
mutations, and unsupported DSH versions remain fail-closed. Thanks to
first-time contributor @RS-Nocsi. - Manual ZCode approval (#880) — adds the blocking
PermissionRequesthook
and desktop Allow/Deny bubble while deliberately keeping ZCode outside global
and per-session permission automation. Foreign hooks remain the sole owner,
and no-decision paths fall back to ZCode's native UI. Thanks to @liugou27. - OpenCode JSONC and Desktop bridge support (#899, #900) — writes the plugin
into the effective JSON/JSONC configuration and supports OpenCode Desktop's
Node utility-process bridge. Permission forwarding now requires the live,
owner-only Clawd runtime identity instead of sending reverse-bridge credentials
to scanned ports, while preserving no-decision fallback to the native
permission flow when Clawd is unavailable or intentionally silent. - Codex and Gemini detection fixes (#897) — installation discovery now
distinguishes real CLI evidence from directories created by other products or
by Clawd itself. - Codex hook review stability and Claude hook repair (#870, #873) — keeps
official-hook trust stable across builds and safely handles environment-based
worktree hook paths.
Remote Approval, Notifications, And Quota
- Slack notification-only channel (#836, recovered and hardened in #909) —
sends bounded, ordered completion/error and permission-request announcements
by Incoming Webhook or bot token. Slack never makes approval decisions, link
unfurling is disabled, secrets remain outside prefs, and outbound summaries
avoid raw sensitive search content. Thanks to first-time contributors
@wang4433 and @shengmai-justin. - Feishu/Lark approver lookup by email (#750) — resolves an approver through
the selected platform and binds the saved identity to that platform and App.
Thanks to first-time contributor @Cobb04. - Safe Feishu/Lark upgrade guidance — configurations saved before platform
and approver provenance binding stay fail-closed. A one-time startup notice
and Doctor warning now explain the required repair instead of letting remote
approval disappear silently. - Kimi subscription quota rings (#881) — adds bounded local quota refresh and
shared Dashboard/Orbit presentation for Kimi Code CLI. - Safer session labels in remote output (#905, #909) — notifications use the
snapshot-owned display tag and suppress opaque internal workspace identifiers.
Desktop Runtime And Reliability
- Accessory-aware drag hitboxes (#866) — moving and animated accessories now
participate in the canonical geometry handshake, including mini mode and
holiday/accessory changes, so the interactive surface follows what is drawn.
Thanks to first-time contributor @CheeseAgent. - Subagent activity tiers (#877) — juggling intensity follows live subagent
lifecycle identities instead of aggregate session count. - Windows fullscreen detection (#889) — distinguishes maximized normal windows
from fullscreen applications so ordinary maximization no longer triggers the
fullscreen overlay policy. Thanks to @KaiC5504. - Unreadable or damaged preferences are visible and still safe (#888, #891)
— Clawd no longer overwrites a prefs file it could not read. If readable
contents are malformed, it preserves the original asclawd-prefs.json.bak
and repairs the primary file, but agent gates remain closed for that launch.
If the backup cannot be created, the primary file and Settings writes remain
locked instead of risking the only copy. Startup and Doctor explain the exact
recovery path and required restart. Thanks to @chrono-meta. - Completion and accessory lifecycle cleanup — closes stale completion and
geometry state that could otherwise survive into later activity.
Packaging, Localization, And Diagnostics
- Developer ID signing and notarization (#915) — official macOS tag builds
require the complete signing secret set, validate PKCS#8 input, lock the
certificate to the configured Apple Team, assert required entitlements are
true, notarize, mount both DMGs, and verify the exact bundled apps. A partial
secret set or ad-hoc tag build fails closed. - Five-target native release gate — manual and tag release workflows now
require target-native packaged Koffi calls on Windows x64/ARM64, macOS
Intel/Apple Silicon, and Linux x64 before a draft can be created. - No eager macOS Keychain access (#914) — Remote SSH identity remains lazy so
ordinary startup does not request Keychain access. - Spanish UI and README (#890) — adds complete
eslocale coverage. Thanks
to first-time contributor @Zamaniego. - Theme validator exit semantics (#892, #903) — distinguishes invalid themes
from a validator that could not run. Thanks to @chrono-meta. - WinGet release-process clarification (#896) — keeps submission
prepare-only and records the architecture-validation boundary. - Release diagnostics repaired — DSH ownership now compares canonical paths,
including symlinked homes and managed roots, and Windows-only filesystem tests
no longer create impossible Windows paths on POSIX runners.
Contributors
Six first-time contributors landed changes in this release:
- @CheeseAgent — accessory-aware hitboxes and geometry validation (#866)
- @RS-Nocsi — DeepSeek Harness integration (#876)
- @Cobb04 — Feishu/Lark approver lookup by email (#750)
- @wang4433 — Slack notification channel (#836, #909)
- @shengmai-justin — Slack transport, reliability, and documentation (#836, #909)
- @Zamaniego — Spanish localization (#890)
Returning contributors include @chrono-meta (#888, #892), @KaiC5504 (#889),
@PeterShanxin (#859), and @liugou27 (#880).
Upgrade Notes
- Launch Clawd once after upgrading so installed and enabled integrations can
reconcile their packaged hooks, plugins, and extensions. - Existing Feishu/Lark users must open Settings → Remote Approval, select the
correct platform, save App ID / App Secret again, and then save the
approver again. Until both bindings are refreshed, the client intentionally
stays off; the desktop approval bubble remains the local fallback. - DeepSeek Harness is experimental, disabled by default, and limited to the
supported@deepseek-ai/dsh@0.1.0-rc.6web profile. API-backed session and
approval smoke is not yet claimed as Windows-verified. - Slack is notification-only. Answer permission requests in Clawd, Telegram, or
Feishu/Lark; Slack cannot Allow or Deny. - Packaged macOS and Linux builds still do not perform in-app updates. Download
future versions manually from GitHub Releases.
Validation Status
Local source-tree validation passed on August 23, 2026: verify:release,
Electron installation verification, and all 8,621 automated tests completed
with 8,591 passes, zero failures, and 30 platform/dependency skips. The asset
audit reported zero errors and one warning because the 52.40 MiB tracked tree is
above its 50 MiB warning budget.
The final code-bearing candidate at
119257ebad54dbcd8b24df178397e83341cbcc9e passed the manual
Build & Release workflow
on August 23, 2026. The run completed the release validator, Developer ID
signing and notarization, Windows/macOS/Linux full test and packaging jobs, and
target-native package audits for Windows x64/ARM64, macOS Intel/Apple Silicon,
and Linux x64. This release-note-only follow-up must pass the same workflow on
the final main head before the tag is created.
Separate real-device evidence was collected before the final release-note and
Windows DSH canonical-path repairs: required Windows hardware checks passed on a
real x64 machine after upgrading from v0.15.0, and the available macOS hardware
checks passed with the signed pre-final candidate. The recommended Windows
DPI/display-scale change was not run. The final draft assets still require the
downloaded-package smoke checks below before publication.
Any later commit must rerun the exact-tree manual workflow. This candidate is
not publish-ready until a tag creates the draft release, its downloaded assets
pass smoke testing, and the remaining applicable platform/agent evidence in the
release checklist is recorded. Skipped tests and source-only checks are not
substitutes for those gates.
Issue #813 diagnostic build 3 (v0.14.0 base)
Diagnostic build only — not a Clawd release
This package is for collecting controlled Ubuntu/Linux evidence for Issue #813. It is based on Clawd v0.14.0 (86125b9) and keeps the application version at 0.14.0.
Please download README.txt and follow Phase 1 exactly. Prefer the portable tar.gz; it does not require FUSE. Start with default mode A only. If the lag does not reproduce with the pet visible, stop that run and report that the baseline did not reproduce.
The build isolates its user data, disables integration/update/permission side effects, refuses another Clawd main process, and checks that the two pet BrowserWindows remain destroyed at +0, +5, and +30 seconds. These checks constrain the experiment; they do not establish a root cause.
SHA-256:
Clawd-on-Desk-0.14.0-issue813diag3-x64.tar.gz:fdbaab57894369b6b396906fb1013cee830f5e8db4d1b4e9c2206f67c99d4c61Clawd-on-Desk-0.14.0-issue813diag3-x86_64.AppImage:243d58e1501ba11b70672cb28c25e4128871f04a98582956e8c6cbbf588b1c8cREADME.txt:1a00a5dec96f05c0b0f7b4ae2e41810c63115c8d3c695253f4c1fa2e0cce0f33
Source commit: 47ea9ae724ec4a8a0fb4be11d2e6cbcfdefc8bd4
v0.15.0
v0.15.0
v0.15.0 is a quota-legibility, free-roam, and platform-reliability release. The
subscription quota ring becomes readable at a glance — identity-based colors, vendor
glyphs, and a readout that follows whichever window is actually raising the alarm.
Free roam gains two independent ways to bound where the pet wanders. The OpenCode
family, Codex, macOS, and Windows runtime paths each closed a set of real-world
defects reported against v0.14.0.
This release also prepares the project to take over WinGet manifest publishing, after
discovering that x64 users had been receiving the ARM64 installer since v0.6.2, and
welcomes two first-time contributors.
Subscription Quota And Usage
- Identity-based ring colors and vendor glyphs (#863) — healthy rings are colored
by source identity rather than headroom, so the rolling and weekly windows stay
distinguishable instead of collapsing into one thick green band. The Claude coin now
carries the vendor mark, taken from the same MIT icon upstream that supplies the
other Lobe Icons agent glyphs; every other runtime icon is byte-for-byte unchanged,
with provenance and hashes updated insource-manifest.jsonand the MIT attribution
list inNOTICE.md. - The readout follows the alert (#864) — the coin used to always print the rolling
window while the ring colored itself from the tightest window, so a coin could read
"1% 5h" while the inner ring sat at 61% amber. The title now hands over to the
tightest window once it crosses the warning threshold, so in the common case the
digits report the alert instead of leaving color to carry it alone. A flashback
briefly replays the rolling number at the moments it is most likely to be asked
about; color remains the only alert channel during that ~1.6s window, in the 60-85%
band that does not pulse, and underprefers-reduced-motion. Each coin's glyph is
scaled to its own artwork rather than one shared zoom. - Used / Remaining display modes (#789) — a persisted preference selects whether
the ring reports consumption or headroom, without changing quota ingestion or the
warning thresholds. The same change consolidates reusable Settings buttons, warning
dialogs, segmented choices, and dropdown behavior, and stabilizes Settings scrolling
and dropdown lifecycles — including the theme-accessory case that previously lost its
real scroll range after a selection. Thanks to @YOIMIYA66. - Correct context windows for custom Claude models (#809, issue #797) — when local
Claude quota collection is enabled, context usage is read from the Claude statusline
rather than inferred, so a custom model no longer displays a context length that does
not match the model actually in use. Collection stays opt-in (Settings → General)
because it installs Clawd's own statusline; an occupied third-party statusline is
preserved rather than taken over, and Clawd falls back to transcript-derived context
when registration does not succeed.
Free Roam
- Constrain to axis (#795, issue #686) — an opt-in setting restricts idle wandering
to horizontal or vertical movement only, for users who prefer grid-aligned motion
over diagonal drift. Default off, so existing behavior is unchanged. Thanks to
first-time contributor @weed33834. - Optional roam fence (#810) — free roam can be bounded to a rectangle expressed as
fractions of the work area, so the pet can be kept to, say, the bottom-right quadrant.
The fence is re-read on every target pick, so edits apply live without a restart, and
the minimum hop distance scales down so small fences still produce reachable targets.
Thanks to @anthonyonazure. - Hardened axis targets (#819) — axis-constrained targets are clamped against the
same bounds as unconstrained ones, and the movement-style wording is clarified.
OpenCode Family
- Real session titles in the HUD (#841, issue #829) — OpenCode sessions show their
actual title instead of the project folder, and the title updates after OpenCode
renames a session. Titles are bounded, kept out of logs, stripped of Unicode
bidirectional formatting marks before display, and carry no telemetry stamp. Thanks
to @xiaoshidefeng. - No premature idle during long active work (#853, issue #850) — an active agent
could fall back to idle mid-task and release the session; the stale floor is now
scoped to interactive sessions and no longer fires while tools are still running.
Thanks to @PeterShanxin. - Ordered state delivery and directory-scoped disposal (#855, #858) —
/state
requests for one session are serialized so an older lifecycle request can no longer
arrive after a newer rename and restore the stale title, and
server.instance.disposedclears only the disposing directory's sessions instead of
every cached session process-wide. Sustained state updates queued behind an
unresponsive local endpoint are coalesced to the latest snapshot and the retained
backlog is hard-capped. Lifecycle and metadata barriers retain their order within
that bound;SessionEndreplaces stale queued snapshots without overtaking the
active request. Regression coverage locks these ordering and stale-floor boundaries. - Session cwd bound to its owning session (#798, issue #796) — a session's working
directory can no longer be attributed to a different session.
Codex Runtime
- Terminal turns fenced across event sources (#831, issue #821) — after a Codex turn
ends, latePreToolUse/PostToolUseevents can no longer pull the pet back into a
typing state, andtoken_counttelemetry is separated from session liveness so a
metadata refresh cannot keep a stuck working session from timing out. - Bounded rollout log reads (#820, issue #817) — rollout log consumption is bounded
and recovery retries are hardened, closing a main-process error path. - No flicker during Codex Pet drag transitions (#804, issue #620) — drag direction,
release, and state changes switch animation rows inside the already-loaded SVG
document rather than rebuilding the spritesheet, removing the intermittent transparent
frame. (#803 reverts an earlier direct push of the same fix so it could land through
review.)
Platform: macOS
- Menu bar and Dock settings restored (#851) — the menu-bar and Dock visibility
preferences apply and persist correctly again. - Pinning against physical display bounds (#826, issue #241) — edge pinning uses
physical display bounds, so the pet can reach the bottom of the screen when the Dock
is present and bottom pinning stays on-screen.
Platform: Windows
- Server-side process-chain resolution (#837, issue #694) — native Windows process
ancestry queries (NtQueryInformationProcessprimary, Toolhelp comparison) move
eligible/stateand Codex/permissionprocess-metadata resolution into the server,
with per-agentlegacy | shadow | b1a-authoritativecapability routing and bounded
shadow parity diagnostics. In authoritative mode the legacy hook-side PowerShell
snapshot is structurally skipped. - Hardened FFI initialization and per-registry Koffi caching (#839, #840, issue
#838) — process-query FFI initialization no longer fails open, and Koffi bindings are
cached per registry rather than re-resolved. - Target-native Koffi packaging and foreign-native audit (#824, issue #763) — each
release target keeps exactly one architecture-matchingkoffi.node, and a native
inventory audit rejects every foreign-architecture binary except the
electron-builder-managed Windows ia32elevate.exehelper.
Agents And Diagnostics
- QwenWork (千问办公) (#843) — a hook-only, state-only integration modeled on
QoderWork. The pet reflects QwenWork lifecycle state while permission decisions stay
entirely in QwenWork's native flow:PermissionRequest/PermissionDeniedare
observation-only and the hook always returns{}. Detection, install, and uninstall
go through~/.QwenWorkCN/settings.json. Windows and macOS only — QwenWork currently
ships no official Linux client. Thanks to @xiaoshidefeng. - Hermes WSL Pair and Unpair (#842, issue #540) — pairing and unpairing work against
WSL targets. - Unreviewed Codex hooks explained in Doctor (#854) — Doctor distinguishes "hooks
are missing" from "hooks are installed but still need review in Codex/hooks", which
was the actual cause behind several "no permission prompt appears" reports.
Dashboard, Remote Access, And Notifications
- Persisted Sessions/Dashboard window bounds (#807, #814, issue #801) — the window
remembers its position and size, with hardened persistence against invalid or
off-screen bounds. Thanks to @KaiC5504. - Serialized Codespaces SSH transport (#845, issue #546) — concurrent Codespaces
gh cs ssh --stdioactivity no longer breaks Remote SSH deploy/probe on Windows. - Safe Remote SSH reconnects (#808, issue #800) — reconnect after a dropped
connection recovers instead of failing permanently. - Safe HTML in Telegram messages (#802, issue #766) — message rendering escapes
agent-controlled content instead of emitting it into Telegram's HTML parse mode. - Distinct default completion sound (#833) — built-in themes now use a dedicated,
softened completion cue instead of sharing the ordinary confirmation sound.
Packaging, Security, And Localization
- WinGet manifest self-publishing groundwork (#861, issue #860) — a prepare-only
workflow generates the manifest komac would submit and gates it on an architecture
contract.rullerzhou-afk.clawd-on-deskhas been live inmicrosoft/winget-pkgs
since 2026-04-20 without ever being submitted by this project: a third-party release
tracker picked it up and, from v0.6.2 onward, produced manifests declaring two
Architecture: x64entries that both pointed at the ARM64 installer. The NSIS
stub runs on ...
v0.14.0
v0.14.0
v0.14.0 is a personalization, permission-automation, and remote-runtime
reliability release. It adds theme-aware pet colors and accessories, optional
holiday and test-result reactions, per-session permission automation, live pet
animation mirroring in Discord Rich Presence, ZCode support, account-wide
Claude/Codex subscription quota surfaces, and stronger terminal-focus and
startup recovery across supported agents.
This release also retires the legacy Telegram Go sidecar in favor of the native
transport and welcomes six first-time contributors.
Pet Personalization And Presence
- Theme-aware colors and accessory wardrobe (#529, #728, #730) — customize
supported pets with saved color tints and seven pixel-art accessories. The
accessory layer follows the pet across animations, respects direction and
theme capabilities, and degrades safely when a theme does not support a
customization. The original wardrobe, tint, seasonal, and test-reaction work
came from first-time contributor @anthonyonazure in #529 and was carried
forward with co-author credit through the hardened successor changes. - Optional holiday accessories (#791) — a separate opt-in can temporarily
select the Halloween, Christmas, or New Year accessory and then restore the
user's saved manual choice. The runtime override is never persisted as a
pseudo-accessory value. - Optional test-result reactions (#792) — recognized successful and failed
test-run summaries can trigger a short celebration or failure reaction. The
hook path is payload-bounded, accepts only explicit runner summaries, and is
disabled by default. - Live Discord animation mirror (#738) — Discord Rich Presence can mirror
Clawd's current on-screen animation through repository-hosted GIFs. The
animation mirror is a separate off-by-default option and keeps public status
text coarse. Thanks to returning contributor @KaiC5504. - Codex Pet V2 import (#786) — current Codex Pet V2 atlases can be imported
without regressing existing theme behavior.
Permission Automation And Agent Runtime
- Safer permission automation (#740, #748, #749) — replace the old global
all-or-nothing switch with explicit Ask every time, Question prompts only,
and Auto-approve modes. Automation can be scoped per live session, dangerous
modes require clear confirmation, and the most permissive mode is reduced
after restart instead of becoming a permanent unattended default. - Reliable multi-question remote replies (#623) — indexed Telegram and
Feishu/Lark answers now preserve the question-to-answer mapping instead of
applying an ambiguous response to the wrong prompt. - Codex subagent approval routing (#790) — interactive approval requests
from Codex subagents are attributed and intercepted without confusing them
with the parent session. - ZCode integration (#677) — ZCode gains state-only hooks, additive config
registration, Claude-import cleanup, lifecycle/process detection, and Windows
process-cache support. Clawd observes state but leaves permission decisions to
ZCode. Thanks to first-time contributor @liugou27. - Shared stable PID cache (#634, #729) — twelve remaining hook adapters now
share the stable process-tree cache while preserving agent-specific session
boundaries and SessionEnd cleanup. Thanks to first-time contributor
@LinYsssss. - Startup recovery (#653, #769) — active Claude sessions can be restored
after Clawd restarts, and Codex SessionStart can safely cold-launch the
packaged app without bypassing the agent gate. Thanks to returning
contributor @200780381 and first-time contributor @He-wei-gui. - Reasonix lifecycle and Windows delivery (#733, #745) — encoded hook
detection, config fallback, renamed desktop/CLI processes, cold starts,
deadlines, and post-idle delivery are hardened. Thanks to returning
contributor @sLingli. - Agent attribution and terminal focus (#759, #764, #776) — Cursor
compatibility hooks retain their real origin, Orca focus uses verified pane
identity and refuses ambiguous targets, and cmux uses the realworkspaceId
schema. Thanks to @KaiC5504 and first-time contributor @YOOGOMJA.
Subscription Quota And Context Usage
- Account-wide Claude and Codex quota (#660) — subscription limits are
stored independently of session lifetime and shown in the Dashboard and a
configurable pet-attached Orbit ring. Local and Remote SSH sources remain
distinguishable, with an opt-in merged view for users who intentionally
share one account. Remote Claude statusline chaining never silently replaces
an occupied third-party statusline. Thanks to returning contributor
@Tonic-Jin. - Codex provider routing (#782) — Codex Spark and other reported quota
windows remain separated by source instead of being merged into the wrong
subscription bucket. - Claude Opus 5 context size (#783) — current Opus 5 model identifiers are
recognized as one-million-token context models where applicable.
Remote, Desktop, And Settings Reliability
- Remote SSH isolation hardening (#736) — profiles use dedicated local
ingress, pinned routing identity, layout-scoped leases, fencing checks, and
owner-verified cleanup so sessions and mutations cannot silently cross
profiles. Experimental same-account profile isolation remains release-gated
and is not presented as full HOME or same-UID security isolation. - Native Telegram migration (#775) — the legacy Go sidecar is no longer
shipped, started, or accepted as fallback. Existing legacy users retain their
saved Telegram settings but must complete one real nonce verification callback
before native remote approval becomes active. - Display-edge and mini-mode convergence (#690, #747, #751) — render and hit
windows now share logical/physical edge mapping, topology reconciliation, and
guarded mini transitions across mixed display layouts. Free roam no longer
starts while the pet is being dragged (#716, #780). - Settings and updater polish (#731, #737, #739, #741, #746, #785, #787,
#793) — window titles and language controls are localized, tutorial and agent
icons are consistent, settings interactions survive resizing and bounds
persistence, destructive cleanup uses an in-app confirmation, and update
failures expose structured, copyable diagnostics. - Asset and package integrity (#760, #761, #762, #771, #774, #781) — agent
and tray icons use canonical sources, redundant packaged assets are removed,
every packaged architecture asserts that the retired Telegram sidecar is
absent, and the repository audit rejects missing provenance, unsafe
duplicates, malformed binaries, and retired sidecar content. macOS signed
payloads and Linux artifacts receive platform-appropriate structural checks. - Dependency security (#725) — the affected SDK dependency chain is updated
for the reported Axios security issue. Thanks to first-time contributor
@anupamme.
Contributors
Welcome to first-time contributors @LinYsssss, @He-wei-gui,
@liugou27, @YOOGOMJA, @anupamme, and @anthonyonazure.
Thanks also to returning contributors @KaiC5504, @sLingli,
@Tonic-Jin, and @200780381, to maintainers @rullerzhou-afk and
@YOIMIYA66, and to everyone who reviewed or tested real agent, terminal,
remote, and platform behavior.
Upgrade Notes
- Existing preferences, installed/enabled agent flags, themes, manual pet
colors, and manual accessories are preserved when upgrading from v0.13.0. - Users still configured for the legacy Telegram sidecar enter a blocking
migration-required state and receive a one-time startup reminder. Their token,
allowed user, and target chat remain saved. Open Settings → Remote
Approval and complete the real native verification callback; Telegram
approval and completion notifications remain disabled until that succeeds.
A failed check never revives the retired sidecar. - The most permissive unattended automation mode is not a permanent restart
default. Review the selected permission automation mode after upgrading and
keep Ask every time when automatic decisions are not intended. - ZCode is state-only. Its native permission flow remains authoritative, and an
explicitly disabled ZCode hook configuration is preserved rather than
overwritten. - Local Claude quota collection is opt-in because it installs Clawd's visible
statusline. An existing third-party statusline is preserved; Remote SSH
chaining is a separate per-profile opt-in. - Launch Clawd once after upgrading so installed and enabled integrations can
reconcile their managed hooks/plugins against the packaged v0.14.0 files.
Validation Status
Release validation is complete. Whole-version multi-agent review, independent
Claude cross-review, post-fix regression review, the full automated test suite,
the repository asset audit, and the final multi-platform package build all
passed on main commit 1d87aa12086c4952aed70642e3133abc6016be71.
The packaged v0.14.0 x64 installer was installed and smoke-tested on Windows 11
x64. The final checks covered upgrade preference and position preservation,
five-language Settings and contributor credits, packaged Codex hooks and a real
Codex lifecycle, saved-position cold starts, fullscreen click/drag behavior,
folder drag-and-drop, New Session, Windows Terminal prompt submission without a
visible PowerShell flash, lock/sleep/resume recovery, and sleep accessory
tracking. No release-blocking failure remained after the repair candidate was
installed. The ARM64 Windows installer was checked for identity, architecture,
contents, and retirement-manifest integrity but was not installed on x64
hardware.
The final macOS and Linux packages were built and structurally validated in CI;
this release candidate was not rerun on dedicated macOS or Linux hardware.
Feature-specific rea...
v0.13.0
v0.13.0
v0.13.0 is an agent-extensibility and runtime-reliability release. It adds
WorkBuddy and MiMo Code integrations, lets users register state-only custom HTTP
agents, adds a default idle-animation picker, brings remote approval to both
Feishu and Lark, surfaces Codex request_user_input questions on the desktop,
and hardens hook recovery and Windows/macOS window behavior.
This release welcomes seven first-time contributors.
New Integrations And Extensibility
- WorkBuddy support (#618) — optional Claude Code-compatible command hooks
support the current~/.workbuddy-ai/settings.jsonlocation and the legacy
~/.workbuddy/settings.jsonlocation. WorkBuddy is state + Notification only:
approval remains in WorkBuddy's native sandbox and GUI, and Clawd never
registers a/permissionhook. Thanks to first-time contributor @kkirito16. - MiMo Code support (#607) — MiMo joins the opencode family through
@mimo-ai/plugin, with comment-preserving JSONC install/repair/uninstall,
deterministic handling of multiple config candidates, and the same
Allow/Always/Deny permission bridge and DND fallback as opencode.taskchild
sessions are headless and do not participate in the visible multi-session
animation fanout. Thanks to first-time contributor @jiaxuan1101. - Custom HTTP agents (#652) — Settings can register local applications and
assign stablecustom-...IDs for state-only/statereporting through the
runtime-discovered port. Registration does not install a hook or observe a
process automatically; disabled, removed, stale, and forged IDs fail closed,
while server-side session namespacing prevents two custom applications from
overwriting one another. Thanks to first-time contributor @200780381. - Default idle animation picker (#679) — choose the idle visual used by a
theme while preserving eye-tracking capability rules. Thanks to returning
contributor @KaiC5504. - Lark remote approval (#493) — the existing Feishu channel now supports
Lark tenants as a first-class platform, with real-tenant fixes and updated
event-subscription guidance.
Agent Runtime And Permission Reliability
- Codex desktop questions (#707) — supported
request_user_inputprompts
can appear as desktop question cards, including recovery after restart and
correct resolution cleanup. Recovery is bounded by age, file count, and byte
budget, keeps durable read positions, handles exact 1 MiB record boundaries,
and does not replay stale completion events. Thanks to first-time contributor
@JesmonX; rollout read-position and unavailable-session work also came from
first-time contributor @lurui1997 (#698, #700). - Codex Desktop attribution and deduplication (#669) — Desktop originator
metadata is retained and Desktop sessions are counted separately where
needed. Thanks to first-time contributor @Dxy2326. - Claude hook self-healing (#673) — all in-process Claude settings mutations
now run through one server-owned queue. Directory watching catches atomic
replacement, a periodic read-only health audit finds deleted scripts even
without an fs event, and three repeated failed repairs transition to a manual
fix state. Explicit Install/Fix only reports success after the entire declared
hook set verifies healthy. - CodeBuddy permission ownership — local and explicitly configured custom
permission URLs remain supported, while unrelated HTTP hooks are preserved;
a bare hook named onlyclawdis never treated as owned. - Kimi passive approval cues (#675, #680, #702, #703) — permission cards are
tool-aware, batched approval state is tracked without taking over Kimi's
native decision, dismissing a cue can focus the terminal, and the legacy
suspect heuristic is migrated safely. New legacy~/.kimiinstalls now
default to persisted--permission-mode=suspectbecause current kimi-cli
versions do not emit explicit permission fields; an existing explicit choice
is preserved. Pre-approved gated commands lasting longer than about 0.8s may
briefly show a false-alarm cue. SetCLAWD_KIMI_PERMISSION_MODE=explicit
before reinstalling/syncing to opt out persistently, or use the same runtime
environment variable for a temporary override. - Permission fallback clarity (#704) — opencode-family bubbles can return
control to the terminal without silently deciding the request. - Nested hook Doctor checks (#668) — integration health is validated per
event instead of accepting a partially present nested hook configuration.
Desktop And Platform Fixes
- No residual Windows Terminal prompt flash (#672) — foreground Windows
Terminal sampling moves into the already-running Electron process, removing
the remaining per-prompt PowerShell spawn. Hook process-tree inspection is
also skipped when Clawd is offline and temporary caches no longer retain agent
command lines (#681). Thanks to @Dxy2326. - Windows DWM cloak recovery (#525, #701) — the pet can detect and recover
from an unexpectedly cloaked window across watchdog and power/display-wake
paths. - Windows first-frame visibility recovery — after the first pet visual is
actually rendered, Clawd replays the existing window bounds and native
visibility/topmost recovery sequence without relocating the saved pet
position. This prevents an upgrade launch from requiring the tray recovery
action before the pet appears. - Desktop shell fullscreen detection (#721) — Explorer/desktop shell
windows are no longer mistaken for fullscreen applications. Thanks to
returning contributor @KaiC5504. - Stable tray flash icon (#722, #723) — notification flashing no longer
changes tray icon size. Thanks to first-time contributor @chen86860. - macOS SkyLight editing dodge (#640, #664) — while a text-input bubble is
being edited, the pet and hit windows are transactionally moved out of the
private stationary Space so they sit behind the input/IME surface, with a
fade fallback if the native path cannot be applied. Thanks to returning
contributor @Yike-Ye. - Electron install integrity (#710, #712) — postinstall and explicit
verification detect incomplete or mismatched Electron distributions, retain
Linux override fallback behavior, and validate packaged platform binaries.
Electron is updated to 41.10.2; source builds now require Node.js 22.12.0 or
newer and the repository pins Node 24.18.0 in.nvmrc.
Release Hardening
- Release CI now runs the full test suite on Windows, macOS, and Linux before
building, so POSIX-only installer/JSONC behavior is no longer skipped by the
only test job. - Custom-agent session keys are namespaced at the HTTP trust boundary, Claude
explicit repairs require a fully healthy report, and local/remote Codex
recovery retains complete records that begin exactly at the tail window. - Windows still ships separate x64 and ARM64 NSIS installers. macOS and Linux
packages retain their platform-specific sidecars and executable checks.
Contributors
Welcome to first-time contributors @jiaxuan1101, @kkirito16,
@200780381, @Dxy2326, @lurui1997, @JesmonX, and @chen86860.
Thanks also to returning contributors @KaiC5504, @Yike-Ye, and
@Git-creat7, and to everyone who tested real agent and platform behavior.
Upgrade Notes
- Existing preferences, themes, and installed/enabled integration flags are
preserved when upgrading from v0.12.0. - WorkBuddy users should prefer
~/.workbuddy-ai/settings.json; the legacy
~/.workbuddy/settings.jsonpath remains supported. - Custom HTTP senders must continue discovering the active port from
~/.clawd/runtime.json; port 23333 must not be hardcoded. - After upgrading from v0.12.0 or earlier, fully quit and start Clawd once so
~/.clawd/runtime.jsongains itsownerPid. Until that first restart, hooks
fail closed for process-tree metadata: state/approval routing still works,
but terminal PID and click-to-focus metadata may be temporarily absent. - WorkBuddy has no verified standalone Linux/WSL CLI. MiMo/opencode
task
children remain headless rather than driving visible building fanout.
Validation Status
- Windows x64: packaged real-machine smoke passed on July 22, 2026. The final
win-unpackedapp opened a live window, owned its runtime identity, fell back
from occupied port 23333 to 23334, and returned a validGET /statehealth
response. The NSIS cleanup entry point also removed a managed MiMo plugin
from JSONC while preserving its comment, trailing comma, third-party plugin,
and unrelated settings. After the first draft installer exposed a blank pet
on upgrade launch, the rebuilt package was cold-started twice with the saved
pre-fix position/display snapshot: both runs kept the saved189,403
position, reported a visible uncloaked native window, and the first run's
captured HWND contained the rendered Cloudling visual without using the tray
recovery action. - Windows ARM64: not real-machine validated for v0.13.0.
- macOS: not real-machine validated for the final v0.13.0 package in this
Windows-first release environment. - Linux: not real-machine validated for the final v0.13.0 package in this
Windows-first release environment. - Feishu China tenant and QoderWork IDE: not real-machine validated for
v0.13.0. Lark tenant behavior and Qoder CLI are covered separately.
CI builds and unit tests are release gates, but do not count as real-machine
validation.
v0.12.0-diag699 诊断版(issue #699 专用)
v0.12.0
v0.12.0
v0.12.0 is a remote-approval and agent-coverage release. It ships Discord Rich
Presence, WSL auto-discovery with one-click pairing, the Feishu remote-approval
channel, Telegram elicitation (AskUserQuestion) support, LAN Approval (beta),
Kimi Code and QoderWork agent support, dedicated roam walk visuals, an
irreversible-action hint on permission bubbles, and a broad set of fixes around
Windows PowerShell window flashes, Antigravity stdin handling, macOS IME
occlusion, and multi-display mini mode.
This release also welcomes eight first-time contributors.
New Features
- Discord Rich Presence (#215, #508, #644, #649, #650) - Clawd can mirror your agent status to your Discord profile. Ships with the official "Clawd on Desk" Application ID so it works with zero configuration; a custom App ID remains available as a collapsed advanced option. Thanks to first-time contributor @KaiC5504.
- WSL auto-discovery and one-click pairing (#565) - Clawd detects WSL distros, pairs agent hooks into them in one click, and marks sessions with their WSL source so mixed Windows/WSL setups stay legible. Thanks to first-time contributor @V1staz.
- Feishu remote-approval channel (#511) - Permission requests can now be approved or denied from Feishu, joining Telegram as a remote-approval channel. Thanks to first-time contributor @yanguibao1997.
- Telegram elicitation (AskUserQuestion), beta (#609, #651) - When an agent asks a clarifying question, the Telegram and Feishu channels render the options as an interactive card with quote-safe Other answers, fail-closed auth on both approval and elicitation callbacks, secret redaction on the outgoing question/option text, and localized card text in five languages. Beta: two answer-fidelity edge cases (a long question's display form vs. its answer key, and option labels over 32 characters) are deferred and tracked in #659. Thanks to first-time contributor @JasonZH6600.
- LAN Approval (beta) and Settings sidebar consolidation (#645) - Remote Approval settings are consolidated under one sidebar entry with per-channel subtabs, and a LAN-based approval channel ships behind a beta flag.
- Kimi Code support (#593) - The new Kimi Code CLI (
~/.kimi-code) is supported alongside the legacy Kimi CLI, with hook auto-registration on startup (#563). - QoderWork IDE agent support (#598) - QoderWork sessions get state-only tracking (Phase 1), mirroring the existing Qoder integration. Thanks to first-time contributor @xiaoshidefeng, who built the original integration in #510.
- Context and account usage bars (#590) - Claude Code 1M-context detection is corrected, and Antigravity gains context and account-usage bars in the HUD/dashboard. Thanks to first-time contributor @Yike-Ye.
- Irreversible-action hint (#613, #625) - Permission bubbles show a warning badge when a command looks irreversible, with quote-aware segment splitting, command-position anchoring, capped input scanning, and dark-mode theming. Thanks to returning contributor @chrono-meta.
- Dedicated roam walk visuals (#612, #580) - Calico and Cloudling get their own walk animations during free roam, and the crab gets a direction-aware crabwalk with mirroring.
Bug Fixes And Hardening
- Windows PowerShell window flash (#627, #628, #630) - Hook events no longer cold-start a PowerShell window per event: snapshots are cached per session with a sliding TTL, and spawns carry
-WindowStyle Hidden. Thanks to first-time contributor @Schlaflied for the follow-up hardening. - Antigravity stdin reliability (#568, #582, #585, #638, #641) - Fixed the first-token stall when the hook runner never closes stdin, moved to EOF-driven reads with a 2s safety net, added
sid=defaultdiagnostics, and stopped the Antigravity wrapper from leaking a UTF-8 BOM into hook stdin on Windows (cp65001). - Telegram remote approval hardening (#600, #611) - Approvals now work with bubbles disabled, summaries fall back sanely,
$-replacement in card text is fixed, and the approval/Direct Send/settings surfaces are localized. Remote-only "go to terminal" resolves as no-decision instead of hanging the hook. Thanks to @JasonZH6600. - macOS IME occlusion (#626) - Text-input bubbles no longer cover the macOS IME candidate window, and IME editing-state visibility round-trips through one place. Thanks to @Yike-Ye.
- Mini mode stays on its display (#547) - Restoring from mini mode keeps the pet on the display it was snapped to instead of jumping to a neighbor. Thanks to first-time contributor @royhuang91.
- Windows executable icon (#621) - The packaged exe gets its icon and version info back by removing
signAndEditExecutable: falsefrom the build config. - Qoder Windows hooks (#597, #615) - Qoder hook commands are written bash-portable so Windows setups where Qoder executes hooks through bash work again.
- WSL-shared Codex config (#544, #594) - Codex hook entries write dual command fields so a
CODEX_HOMEshared between Windows and WSL works from both sides. - Fullscreen taskbar regression (#586, #587) -
skipTaskbaris reasserted after the hit-window focusable flip so the pet does not reappear in the taskbar during fullscreen overlay. - Roam size on mixed DPI (#569, #579) - Walk size is anchored so the pet no longer grows when roaming across displays with different DPI.
- Permission hotkeys while pet is hidden (#601, #604) - Allow/Deny global hotkeys stay live for visible bubbles even when the pet window is hidden.
- Telegram encoding cleanup (#622) - Stray BOM removed and mojibake arrows restored in Telegram strings from #609.
- Elicitation agent attribution (#651) - Elicitation cards attribute the requesting agent correctly, and the CodeBuddy installer gains an ownership test.
- Remote-approval hardening (pre-release) - Telegram approval callbacks fail closed when the allowed user is unset (parity with elicitation); agent-controlled text in Feishu cards is stripped of Markdown/structural characters and secrets so it can't forge a status line or inject a mention; elicitation question/option text is secret-redacted before it leaves the desktop; QoderWork writes its Windows hook in the bash-portable form (parity with #615); and a non-string tool-input field can no longer crash the permission bubble.
Removals
- Hardware Buddy (Clawstick) integration removed (#646) - The experimental hardware companion integration is retired. The
hardwareBuddyprefs key is no longer read; leftover keys in existing prefs files are ignored harmlessly. - Telegram migration-card layer retired (#647) - The dead v0.9.0 migration-card rendering layer is removed; the runtime migration state machine remains.
Upgrade Notes
- Release metadata is set to
0.12.0inpackage.jsonandpackage-lock.json. - No prefs version migration in this release. New keys (
discordPresence,feishuApproval,agents.qoderwork) are backfilled with defaults by the schema normalizer on first launch. - Discord Rich Presence is opt-in from Settings -> Discord and uses the official Application ID by default; no Discord developer setup is needed.
- The Feishu channel currently supports Feishu (feishu.cn) only. The SDK domain is hardcoded to Feishu and there is no region/domain setting, so Lark (international) tenants are not supported in this release.
- Remote Approval settings moved: Telegram, Feishu, and LAN Approval now live under the consolidated Remote Approval sidebar entry with per-channel subtabs.
- Kimi users: hook registration now targets Kimi Code (
~/.kimi-code) when present; legacy Kimi CLI installs keep working. Hooks re-sync automatically on startup. - After updating, launch Clawd once so hook registrations and the Antigravity wrapper refresh on the next startup sync (automatic — it just needs one launch).
- Codex on Windows: the dual
commandWindowsfield (#544) is only honored by Codex builds from ~2026-05 onward. Older Codex builds ignore it and would run the POSIX command form on Windows — update Codex if you run it there.
Contributors
Huge thanks to everyone who shipped code, tests, docs, QA, or release polish for v0.12.0 - and welcome to this release's eight first-time contributors:
- @rullerzhou-afk (鹿鹿 · creator) - Settings consolidation and LAN Approval beta, Kimi Code and QoderWork enablement, roam walk visuals, Windows PowerShell flash/exe icon/Qoder hook fixes, Antigravity stdin hardening, Telegram encoding cleanup, release work, and follow-up reviews.
- @KaiC5504 - Discord Rich Presence (#508). First-time contributor.
- @V1staz - WSL auto-discovery, one-click pairing, and session source badges (#565). First-time contributor.
- @yanguibao1997 - Feishu remote-approval channel (#511). First-time contributor.
- @JasonZH6600 - Telegram elicitation support (#609) and remote-approval hardening (#600). First-time contributor.
- @Yike-Ye - Context/account usage bars and Claude Code 1M detection (#590), macOS IME occlusion fix (#626). First-time contributor.
- @royhuang91 - Mini-mode display restore fix (#547). First-time contributor.
- @Schlaflied - PowerShell snapshot-spawn hardening (#628). First-time contributor.
- @xiaoshidefeng - QoderWork IDE agent integration (#510, landed via #598). First-time contributor.
- @chrono-meta - Irreversible-action hint on permission bubbles (#613).
- @YOIMIYA66 - Maintainer reviews and QA.
- @Bynlk - Continued core ownership of the Mobile / PWA companion line.
Known Limitations
- The Feishu channel has not yet had end-to-end real-device validation on a Feishu (feishu.cn) tenant; the flow is implemented against the Feishu domain but unverified on live hardware. Reports welcome.
- QoderWork support is state-only (Phase 1) and has not had a packaged-build smoke test on a machine with QoderWork installed; the integration author will help verify afte...
v0.11.0
v0.11.0
v0.11.0 is a user-facing release focused on first-run setup, desktop behavior,
Codex reliability, and release hardening. It adds the first-run onboarding
wizard, free-roam idle movement, the dizzy spin reaction, Windows fullscreen
overlay handling, Codex official-hook health surfacing, Remote SSH
connect-on-launch, safer hook settings backups, and a broad set of fixes around
completion celebrations, low-power wake recovery, Reasonix, Telegram approvals,
and Ghostty focus.
This release also welcomes seven first-time contributors.
New Features
- First-run onboarding tutorial (#524) - New users, and existing users who have never seen the tutorial, get a one-time setup wizard covering language, agent install/cleanup, shortcuts, and key features. Any dismissal marks it seen so it does not reopen on later launches.
- Free roam mode (#467, #570) - When enabled, the pet can wander around the desk while idle, with cancellation on state changes, mini-mode guards, hit-window/HUD/bubble sync during movement, and target-selection hardening. Thanks to first-time contributor @zhaoxv210, with a follow-up flake fix from first-time contributor @Git-creat7.
- Dizzy spin reaction (#507) - Rapidly circling the cursor around Clawd can trigger the existing dizzy animation on themes that support it, with cooldowns and theme-capability gating so unsupported themes keep normal idle behavior. Thanks to first-time contributor @IatomicreactorI.
- Windows fullscreen overlay mode (#538, #562) - Clawd can float over foreground fullscreen apps while keeping the hit window non-activating, so borderless-fullscreen games are not kicked out by clicks or drags. The old settings toggle was removed because it could not reliably force the pet behind borderless games; the hidden pref remains as an escape hatch.
- Codex official hook health (#571) - Since Codex approval awareness now depends on official
PermissionRequesthooks, the Agents tab and startup nudge now surface disabled, unreviewed, missing, or broken Codex hook states using the same detector as Doctor. - Remote SSH connect-on-launch (#561) - Remote SSH profiles can now connect silently at startup after the local hook server is actually listening, so reverse tunnels target the real bound port even if Clawd had to drift away from 23333. Thanks to first-time contributor @undownding.
- Settings UI cleanup (#521, #539, #541) - Settings uses consistent inline SVG sidebar icons, reorganizes General by usage frequency, moves Claude hook management into Agents, spells out Chinese language labels, and folds Animation Map into Animation & Sound.
- Context and tray menu cleanup (#523) - The pet right-click and tray menus are grouped into clearer state/work/display/app sections, the dangerous auto-approval entry is renamed to Auto-approve all requests, and New Session is clarified as New Claude Session across supported languages.
Bug Fixes And Hardening
- Hook settings backups before injection (#531) - Clawd now backs up
settings.jsonbefore injecting hooks and keeps the backup set bounded by a rolling window. Thanks to first-time contributor @chrono-meta. - Codex JSONL approval heuristic removed (#571) - JSONL fallback no longer guesses approval prompts from shell calls. It remains for state and metadata fallback events such as web search, compaction, aborted turns, and stuck local-turn rescue. Official
PermissionRequestis the only approval path. - Codex Desktop approval inference fixed (#543) - Codex Desktop sessions no longer synthesize passive approval notifications from JSONL activity. Thanks to first-time contributor @quantai1314.
- CJK Stop payload byte-fit (#567) - Long Chinese/Japanese/Korean completion text no longer overflows
/statebyte limits and drops the happy completion animation; hook payloads byte-fitassistant_last_outputwhile preserving structural completion fields. - Completion happy fixes (#548, #555, #567) - Short completions, background-only Claude stops, and busy Stop deliveries now reliably trigger the completion celebration instead of being swallowed by debounce, 413, or timeout edges.
- Windows crash/startup recovery and keep-size DPI freeze (#554, #560, #408) - Startup recovery, renderer crash recovery, display metrics debounce, and keep-size frozen work-area handling were hardened for Windows sleep/wake and DPI changes.
- Low-power eye tracking after resume (#557) - Low-power eye tracking rebuilds and reattaches after Windows resume/unlock, waits for renderer receipt, and accepts one late success after timeout. Thanks to @YOIMIYA66.
- Cloudling and low-power sleep polish (#526, #527) - Low-power idle mode reclaims hidden HUD resources, fixes a wake-poll start-timer leak, reduces sleep power, renames the scripted badge to fine motion, and adds Cloudling static sleep fallback assets.
- Reasonix Windows compatibility (#503) - Reasonix hook install now resolves the current config home and uses PowerShell
-EncodedCommandwhen Windows paths need it, avoidingcmd /cquoting failures in the Go CLI. Encoded Clawd hook entries are also recognized during reinstall so repeated startup syncs update/dedupe stale hooks instead of appending duplicates. Thanks to @sLingli. - Telegram approval outcome status (#466) - Telegram approval cards now show the final outcome for decisions made on Telegram or resolved elsewhere, with atomic claim handling to avoid racey rewrites. Thanks to @zxypro1 (Zone Tome).
- Ghostty cross-Space focus (#461) - macOS Ghostty focus now switches Spaces through a verified stepping-stone terminal instead of yanking windows to the current desktop, with follow-up latency reductions. Thanks to first-time contributor @serenNan.
- Renderer SVG cache-busting (#522) - Object-channel SVG loads now get the same cache-bust behavior as image-channel SVGs, so one-shot animations replay instead of sticking on their last frame.
Upgrade Notes
- Release metadata is bumped to
0.11.0in bothpackage.jsonandpackage-lock.json. prefsmigrates v11 -> v12 on first launch. The migration only backfillsshowDock=truefor pre-v12 files missing the key, preserving existing macOS users' Dock behavior while fresh installs default to a pet/menu-bar accessory with no Dock tile.tutorialSeenis intentionally not migration-backfilled. Existing users who have never seen the onboarding tutorial will see it once after upgrading; Finish, Skip, or closing the window marks it seen permanently.- Codex approval notifications now require official
PermissionRequesthooks. If the Codex hook is disabled, not reviewed, missing, or broken, use Settings -> Agents or Doctor to repair/review it. - The Windows fullscreen overlay pref defaults on and no longer has a Settings row. If a fullscreen app should hide the pet, use Hide Pet; DND remains the way to silence permission bubbles.
- Hook installers may create bounded backup copies of settings files before injecting Clawd-managed entries.
Contributors
Huge thanks to everyone who shipped code, tests, docs, QA, or release polish for v0.11.0 - and welcome to this release's seven first-time contributors:
- @rullerzhou-afk (鹿鹿 · creator) - Onboarding, Settings cleanup, Codex hook health and JSONL approval-path cleanup, Windows fullscreen/startup/recovery hardening, CJK byte-fit, completion-happy fixes, Cloudling/low-power polish, release work, and follow-up reviews.
- @zhaoxv210 - Free roam mode and review follow-ups (#467). First-time contributor.
- @serenNan - Ghostty cross-Space focus and latency improvements (#461). First-time contributor.
- @IatomicreactorI - Dizzy spin reaction and theme support gating (#507). First-time contributor.
- @quantai1314 - Codex Desktop approval inference fix (#543). First-time contributor.
- @Git-creat7 - Free-roam target-selection flake fix (#570). First-time contributor.
- @undownding - Remote SSH connect-on-launch (#561). First-time contributor.
- @chrono-meta - Bounded settings backup before hook injection (#531). First-time contributor.
- @sLingli - Reasonix Windows
cmd /c/EncodedCommandcompatibility and current config-home fix (#503). - @zxypro1 (Zone Tome) - Telegram approval outcome status and race hardening (#466).
- @YOIMIYA66 - Windows resume / low-power eye-tracking recovery (#557).
- @Bynlk - Continued core ownership of the Mobile / PWA companion line.
Known Limitations
- Codex terminal focus is still unavailable because official hooks and JSONL fallback do not carry a usable terminal PID.
- Codex JSONL fallback still has polling latency for hook-uncovered events such as web search, compaction, and aborted turns; approval prompts are not inferred from JSONL.
- Windows fullscreen overlay is best for borderless fullscreen. Exclusive fullscreen behavior is still platform/game dependent and must be smoke-tested on real hardware.
- macOS Ghostty cross-Space focus has unit coverage and contributor validation, but macOS real-machine release smoke should still verify the packaged artifact.
- macOS and Linux packaged auto-update remain manual-download only; git checkout users can still update through the git-mode updater.
v0.10.0
v0.10.0
v0.10.0 is built around five larger pieces of work: a rework of how agent
integrations get installed (on-demand and opt-in per agent, so startup is no
longer slowed by probing agents you do not use), two new state-only agent
integrations (Reasonix and CodeWhale), a danger-gated auto-pilot that
auto-approves permissions for a single session, global / per-display text
sizing across every Clawd surface, and mobile companion token-rotation
security — plus a broad round of platform hardening across Linux/Wayland,
tmux, Windows focus, and macOS.
This release also welcomes seven first-time contributors.
New Features
- On-demand agent integrations (#476, #481, #488, #489) - Clawd now separates "supported agent" from "integration installed on this machine." A fresh install defaults to managing only Claude Code and Codex; the other 15 agents start Not installed and are installed explicitly from Settings → Agents (each row gets an Installed / Not installed badge and Install / Uninstall buttons). This removes the startup cost of serially probing every agent's hooks/plugins/extensions (cold
/statewas ~4.2s of that being integration sync). Install commits only after a real sync succeeds; Uninstall runs a marker-scoped cleaner (backups on by default) that removes only Clawd-managed entries and leaves your other hooks intact. Doctor now shows unmanaged agents as an info-level not-managed state instead of misreporting them as broken. The data model migratesprefsv10 → v11. - Reasonix CLI integration — state-only (#483) - Added Phase 1 state-only Reasonix support: Clawd reflects Reasonix working / idle / attention state without injecting its own permission bubble. Thanks to first-time contributor @sLingli.
- CodeWhale integration — state-only (#415) - Added Phase 1 state-only CodeWhale support, wired through the on-demand install model and mode-change notifications. Thanks to first-time contributor @ustin-star.
- Auto-pilot — danger auto-approve, session-only (#448, #455) - A new danger-gated toggle in its own Permissions section auto-approves all agent permission requests for the current session. It is off by default, never persists across restarts (ephemeral by design), is labeled red / "Danger" in the menu, answers elicitation prompts with a deferral reply, and treats the confirm dialog as a real security boundary rather than UI-only. Thanks to @zxypro1 (Zone Tome).
- Global / per-display text size (#463) - A text-size slider scales bubbles, the Session HUD, the Dashboard, and Settings together, injected as CSS zoom so it survives reloads. Sizing is stored per display, the HUD dampens its width growth at large scales so chips and collapsible rows do not clip, and the auto-hide hot zone scales with it so the pin stays reachable.
- Mobile companion — token-rotation security (M2) (#452, #475) - The read-only mobile companion gains a static-token rotation / revocation / grace-period protocol, plus rotate-on-use: the 24h rotation is deferred when no clients are online and a grace token is delivered after the heartbeat starts so a connected phone is never abruptly locked out. Thanks to core contributor @Bynlk.
- Drag a folder onto the pet to open a terminal (#472) - Drop a folder onto the pet and Clawd opens a terminal there. Windows / Linux only in this release (see Upgrade Notes); the macOS OS-drop path is intentionally disabled. The macOS "New Session" flow still
cds explicitly into the target directory. - Hide / show the pet from the right-click menu (#469) - The context menu gains a "Hide pet" / "Show pet" entry (theme-agnostic wording, localized across all five languages). Hiding is not do-not-disturb: it tucks away the pet / HUD / update bubble, but newly arriving permission requests still bubble as before — use DND to silence those.
- Silence Task-subagent permission bubbles per agent (#454) - A per-agent sub-gate suppresses permission bubbles raised by Claude Code Task subagents, scoped to
claude-codeso it does not affect other agents. - Claude & Codex context usage (#397) - Sessions can surface Claude and Codex context-window usage. Thanks to first-time contributor @Tsdsj.
Bug Fixes
- Linux: relaunch under XWayland on Wayland sessions (#443, #441) - On a Wayland session Clawd now relaunches itself under XWayland (spawning the replacement directly rather than via
app.relaunch, with a guarded spawn fallback), fixing transparency / positioning regressions. Covered by a headless-Wayland CI smoke test. - tmux: switch to the focused pane on terminal focus (#462) - Focus resolution now resolves the terminal PID and switches the correct tmux pane / client for tmux users instead of grabbing the wrong client. Thanks to first-time contributor @cod3hulk.
- Windows: validate cached focus targets (#477) - Cached Windows focus targets are validated before reuse so a stale handle no longer focuses the wrong window. Thanks to first-time contributor @lxgxhsy.
- Windows: position persistence on restart (#405) - Fixed the pet not restoring its saved position on Windows restart.
- Windows: new-session launch failure 0x800700c1 (#438) - "New Session" on Windows now resolves the
claude.cmdshim and routeswt.exethroughcmd.exe, fixing the 0x800700c1 launch error. - macOS: restore minimized windows when jumping back to a session (#468, #465) - Jumping back to a session now restores a minimized macOS terminal window instead of silently failing.
- macOS: harden hook stdout safety and permission-bubble clicks (#420) - Hardened hook stdout handling and fixed a macOS permission-bubble click path. Thanks to first-time contributor @godlockin.
- macOS: permission hotkeys no longer refocus the terminal (#492, #482) - Answering a permission with the keyboard shortcut (Ctrl+Shift+Y / Ctrl+Shift+N) on macOS no longer pulls focus back to the agent terminal when the frontmost app cannot be captured — focus stays where you are. Reported by @Easton518.
- Packaging: agents unpacked from asar (#488) - Added
agents/**/*toasarUnpack, fixing aMODULE_NOT_FOUNDfor hook scripts in packaged release builds. Thanks to first-time contributor @rebootcrab-blip. - Doctor: don't flag all-info integrations as critical (#491, #490) - A set of agent integrations that are all info-level no longer summarizes to a false "critical" in Doctor.
- Codex: relabel MCP tool calls (#450, #445) - Codex MCP tool calls are labeled as the tool instead of a generic "Permission Request."
- Codex: deterministic subagent headless gate (#455, #448) - Codex subagent permissions are detected as headless by hook source and kept out of the auto-pilot allow path, with doc/comment cleanups.
- State: debounce Stop completion for headless sessions (#453, #449) - Headless sessions get a default Stop-completion debounce so they stop celebrating completion prematurely.
- State: stop replaying completion animation on duplicate Stop (#447) - A duplicate Stop no longer replays the end-of-session animation.
- Telegram: honor the system proxy for the native bot (#440, #359) - The native Telegram bot routes through the system proxy via Electron
session.fetch. - Telegram: surface legacy sidecar runtime failures (#439, #430) - Legacy Go-sidecar runtime failures now surface in the migration state instead of failing silently.
- Telegram: strip the approval keyboard when resolved on desktop (#446) - Resolving an approval on the desktop strips the inline keyboard from the Telegram message. Thanks to @zxypro1 (Zone Tome).
- Kiro: build Windows CLI candidate paths with
path.win32(#442) - Fixed Kiro CLI path resolution on Windows. - Updater: drop the duplicated
vprefix in update labels (#434) - Update labels no longer render a doubledvvprefix. - Antigravity: harden hook fail-open (#433) - The Antigravity hook fails open more robustly.
- Qwen Code: official icon (#458, #456) - Swapped the Qwen Code icon to the official mark.
Upgrade Notes
- On-demand agent integrations — existing users keep their setup. Upgrading does not change your current behavior: migration backfills
integrationInstalledonly for agents that already exist in your prefs and preserves each one'senabledstate, so nothing you already use is silently disconnected. What changes is the fresh-install default (only Claude Code / Codex are managed up front) and the fact that adding a new agent integration is now an explicit Settings → Agents → Install. Turning on a not-installed agent'senabledswitch only opens its event/monitor entry and writes no integration files. Uninstall removes only Clawd-managed hook/plugin/extension entries (backups on by default). - Auto-pilot is a danger feature, off by default, and session-only. It auto-approves every agent permission request for the current session, never persists across restarts, and lives behind a red "Danger" confirm. Enable it only when you intend to let an agent run unattended for that session.
- Drag-folder-to-terminal is Windows / Linux only. The macOS OS-drop path is intentionally disabled in this release; use the pet's "New Session" entry on macOS.
- Text size is stored per display. Existing defaults are unchanged; the slider unifies bubble / HUD / Dashboard / Settings scaling and is applied via injected CSS zoom.
- Release metadata is bumped to
0.10.0in bothpackage.jsonandpackage-lock.json;prefsmigrates v10 → v11 on first launch.
Contributors
Huge thanks to everyone who shipped code, tests, docs, or release polish for v0.10.0 — and an especially warm welcome to this release's seven first-time contributors:
- @rullerzhou-afk (鹿鹿 · creator) - On-demand agent integration install/uninstall model and prefs v10→v11 migration, auto-pilot follow-ups and Codex...
v0.9.0
v0.9.0
v0.9.0 is a milestone release built around three larger pieces of work: a ground-up
rework of Telegram remote approval into a native Node bot, a brand-new read-only
mobile companion over LAN, and Hermes Agent clarify / permission-bubble groundwork
— plus the usual round of Codex / opencode / macOS hardening.
New Features
- Telegram remote approval — native Node bot rework (#354, #369, #390, #393) - Clawd's Telegram remote approval moves from the bundled Go
cc-connect-clawdsidecar to a native Node bot. The migration follows a compatibility-first path: the legacy sidecar stays shipped and keeps working, new installs default to the native setup, and existing users switch only when they explicitly tap "Test native and switch". A runtime owner manager guarantees that the sidecar and the native bot never long-poll the same bot token at once (Telegram allows only onegetUpdatesconsumer, otherwise 409 Conflict). Native mode unlocks two things legacy never had: rich approval (Always allow / one-time approval andpermission_suggestionsbuttons) and completion notifications. - Telegram completion notifications (R1a) (#369) - When a session finishes, the native bot can send a completion notification to Telegram. This is native-only, off by default, and tied to the approval switch — turning Telegram approval off also stops notifications, so there is no orphaned toggle that keeps messaging after you think you turned it off.
completionOutputModecontrols whether the message includes the assistant's final text (full) or sends no completion output (off, the default). - Telegram R3 Direct Send (beta, opt-in, Windows-first) (#390, #393) - Reply to a completion notification from Telegram and Clawd resolves the matching local session, focuses its terminal, and pastes a one-line next prompt into it. This is an opt-in beta (
tgApproval.r3DirectSendEnabled, default off). It deliberately does not auto-press Enter — text is pasted and you press Enter locally — and it only delivers after a positive focus confirmation; anything ambiguous falls back to copying the text to the clipboard with a Telegram acknowledgement. Multi-line replies also fall back to clipboard instead of being pasted. Windows is the only platform with the paste primitive in v1; macOS / Linux are fallback-only (copy to clipboard). Direct Send reuses the existingsession-focus.jseligibility rules: remote / host / web-UI sessions and sessions waiting on a permission decision are never paste targets. On successful Windows paste, Clawd restores the previous text clipboard where available. - Mobile companion — read-only PWA LAN preview (M1) (#391, #412, #419) - A new read-only mobile companion serves a small PWA over the local network so you can watch your sessions from a phone on the same Wi-Fi. It shows live session cards (agent type, active time, event icons), pushes updates event-driven with smooth expand animation and live timers, and hardens reliability with visibility-based reconnect, an uncapped retry, and a socket guard. This is a preview / read-only surface — it does not approve permissions or send prompts.
- Hermes Agent permission bubble + elicitation (#387, #398) - Hermes' clarify tool now flows through Clawd's unified
/permissionroute and bubble UI instead of the legacy/clarifynative dialog. General Hermes tool permission interception is also wired through the same route, but remains opt-in behindCLAWD_HERMES_PERMISSION_TOOLSwhile Hermes' native approval flow stays the fallback. - Launch Claude Code from the pet (#409) - A "New Session" entry in the pet's right-click menu launches a fresh Claude Code session in a terminal; resume session ids are validated before use.
- Qoder integration (state-only) (#423) - Added state-only Qoder support: Clawd reflects Qoder working / idle / attention state without injecting a separate permission bubble.
- Keep the system awake while agent tasks run (#358) - Clawd can block system sleep while an AI task is in progress so long-running work is not interrupted by the machine dozing off, with the wake lock reconciled against live task state.
- Directional Codex Pet drag animations (#388) - The Codex Pet theme now supports directional drag animations that respond to which way the pet is being dragged.
- Mini-mode controls (#424, #426) - Added a toggle to disable mini-mode auto-snap on screen edges, and a setting to disable mini mode entirely.
Bug Fixes
- Codex same-process session ghosts (#427) - Fixed duplicate / ghost Codex sessions when multiple turns share one process.
- Stuck local Codex turns (#422) - Local Codex turns that never received a Stop now fall back to a JSONL
task_completesignal so sessions do not hang in a working state. - Premature completion celebration (#406, #421) - Stopped the completion celebration from firing mid-task before the work actually finished.
- Remote completion session timeout (#414, #418) - Remote completion sessions now respect the session timeout instead of lingering.
- opencode plugin loading and state flow (#417, #401, #366) - A single default export so opencode reliably loads the plugin; child sessions are marked headless via
parentID; and plugin state-flow dedup / sessionID capture were repaired. - macOS dock and pet visibility (#416, #425, #396, #410) - The pet now hides on Dock / ⌘H "Hide", the Dock icon is right-sized and scaled to fill the 1024×1024 canvas without aliasing, and the dock-icon override is guarded against null states.
- Claude hook shrink guard visibility (#407) - The Claude hook shrink guard is now visible so the state transition is observable.
- Mini post-completion notification alert (#404) - Fixed a missing post-completion alert in mini mode.
- Stale ExitPlanMode bubble (#402) - Clears a stale plan-mode bubble and adds a "give feedback on the plan" button.
- Ghostty same-cwd tab focus (#355) - Fixed Ghostty tab focusing for sessions that share a working directory.
- Windows Codex Desktop focus fallback (#381) - Hardened the focus fallback for Codex Desktop on Windows.
- Codex working state during silent permission turns (#385) - Long, silent permission turns no longer flip Codex out of its working state.
- Updater GitHub API fallback (#386) - The background update check falls back correctly when the GitHub releases API response is unavailable.
- Cloudling low-power idle RAF (#364) - Reduced idle
requestAnimationFramechurn for the Cloudling theme in low-power conditions.
Upgrade Notes
- Telegram remote approval — no action required for existing users. Your Telegram approval keeps working on legacy (Go sidecar) mode after upgrading. To move to native mode, open Settings → Remote Approval → Telegram and tap "Test native and switch". If the test fails, your legacy configuration stays intact and Clawd does not auto-deny or auto-allow real permission requests during the switch. The Go sidecar remains shipped in v0.9.0; its removal is a later, separately-gated decision.
- Telegram completion notifications are off by default and are tied to the approval switch. Switch completion output to Full answer from Telegram settings after switching to native mode if you want assistant text sent to Telegram; turning approval off also stops notifications.
- R3 Direct Send is an opt-in beta, default off, and Windows-first. Enable it only if you want phone-to-terminal prompt delivery. It pastes a single-line reply without auto-Enter, confirms focus before pasting, restores the previous text clipboard after successful Windows paste where available, and falls back to the clipboard on any ambiguity, on multi-line replies, or on macOS / Linux.
- The mobile companion is read-only. It previews sessions over the LAN and cannot approve permissions or send prompts.
- Telegram bot token storage is unchanged — the token still lives only in
userData/telegram-approval.envand is never read from environment variables. Secure OS-keystore storage is planned for a later release. - Release metadata is bumped to
0.9.0in bothpackage.jsonandpackage-lock.json.
Docs & Contributors
- A new
docs/connections/plan set documents the Telegram native rework end to end: the D-migration path, the native companion architecture, the R3 Direct Send design, and the code-state reviews that corrected it. - Added five bundled Clawd SVG animation assets (
clawd-coffee-hand,clawd-coffee-head-flip,clawd-aegyo-shy,clawd-dizzy,clawd-idle-low-battery) for future theme wiring; they are not yet bound to the default state map. - External contributors shipped code across mobile preview, launch-session, Hermes, keep-awake, opencode, theme, and UI fixes, including two first-time contributors (@QingXB, @29206394 / 藤知).
Contributors
Huge thanks to everyone who shipped code, tests, docs, or release polish for v0.9.0:
- @rullerzhou-afk (鹿鹿 · creator) - Telegram native rework end to end (migration state machine + owner manager, native client, rich approval, R1a completion notifications, R3 Direct Send), Codex session / state fixes, opencode attribution and loading fixes, macOS dock behavior, Qoder state-only integration, and release work.
- @Bynlk - Read-only mobile PWA companion (LAN preview M1, session cards, event-driven push, smooth expand + live timers, PWA reliability), macOS Dock icon sizing, and the mini-mode edge auto-snap toggle.
- @QingXB - Launch a Claude Code session from the pet's right-click menu (#409). First-time contributor.
- @29206394 (藤知) - Hermes Agent permission bubble + elicitation integration (#387). First-time contributor.
- @zxypro1 (Zone Tome) - Block system sleep while agent tasks are in progress (#358).
- @NeroAyase - opencode plugin headless child sessions and state-...