Releases: clawwork-ai/ClawWork
0.0.16
🐛 Bug Fixes
- widen gateway protocol compatibility range by samzong (ea65c56)
- Use stable base for stable release notes by @samzong in #496
🔧 Build / CI
📚 Docs
🧹 Chore
- bump desktop version to 0.0.16 by samzong (0861d49)
Full Changelog: v0.0.15...v0.0.16
0.0.15
🔥 Highlights
ClawWork v0.0.15 ships 97 PRs with 10 first-time contributors, bringing a sharper OpenClaw desktop workspace for commands, attachments, teams, and artifacts.
- Dashboard — usage overview, breakdowns, and a 30-day token chart.
- Live Gateway slash commands — the slash menu now pulls commands from the connected OpenClaw Gateway.
- Attachments and artifacts — non-image attachments, persisted media, thumbnails, preview drawers, and File Manager filtering.
- Beta update channel — opt into prerelease builds directly from Settings.
- Teams polish — resizable team file trees, shared Gateway selection, and persisted team skill bindings.
✨ Features
- Add Dashboard with usage overview, breakdowns and 30-day token chart by @samzong in #393
- add engineering deck and refresh product tour by @samzong in #418
- Support sending non-image attachments (pdf, office docs, zip, text). Attachments are saved locally per task and open with the OS default app on click. Image messages now survive app restarts. by @samzong in #424
- Slash commands (
/) are now sourced live from the connected gateway. Skills and plugin commands appear alongside native commands, with source badges in the menu and dashboard./think,/fast, and similar options retain their quick-select arg pickers. by @samzong in #429 - Settings: you can now cancel an in-progress app-update download. The cancel button appears next to the download progress and returns the UI to the "update available" state so you can retry immediately. by @samzong in #441
- Settings: you can now opt into the Beta update channel from Settings → About. Beta users receive prerelease builds like 0.0.15-beta.1 as well as stable releases; Stable users continue to only see fully released versions. Default is Stable. by @samzong in #444
- UI: Refreshed default light and dark themes, consolidated to auto / light / dark (legacy theme choices migrate automatically on startup), and grouped left-nav active tasks by Today / Yesterday / Previous 7 Days / Older. by @samzong in #457
- Team file trees can now be resized to show longer agent names. by @samzong in #459
- Added a shared gateway selector for the welcome screen and Team Hub install flow. by @samzong in #464
- Teams now persist and display the skills bound to each team agent. by @samzong in #468
- File artifacts now show image thumbnails in the file manager and conversation artifact panel, and file previews open in an overlay drawer without shrinking the file grid. by @samzong in #472
- File Manager now hides stored artifact filenames and supports type filtering for artifact search. by @samzong in #473
🐛 Bug Fixes
- Standardize errorCode in PWA gateway not-connected responses by @Qorex in #325
- log update check failures by @nightcityblade in #348
- log about section IPC failures by @nightcityblade in #349
- handle IPC load failures in mention flows by @nightcityblade in #350
- remove stable ref dependency from popover effect by @nightcityblade in #351
- guard initial file browser artifact load by @nightcityblade in #352
- handle startup IPC failures in app shell by @nightcityblade in #353
- replace hardcoded English strings in useTraySync with i18n… by @luchuanjia in #366
- log persistence errors instead of silently swallowing (#216) by @luchuanjia in #367
- guard FileBrowser search against stale out-of-order response… by @luchuanjia in #368
- allowlist http(s) schemes in shell.openExternal to prevent… by @kenwoodjw in #369
- centralize renderer settings state by @HiddenPuppy in #372
- Consolidate redundant map iterations in MentionPicker by @mvanhorn in #373
- add .catch() handlers to IPC calls in Settings sections by @Hamzaa6296 in #376
- Race condition in FileBrowser search: stale results from out-of-order responses by @mvanhorn in #378
- add payload size cap + per-event rate limiting to debug:renderer-event by @xyaz1313 in #414
- Clean up orphan artifact files when DB insert fails by @JasmineLCY in #415
- Hard-code renderer domain in debug:renderer-event handler by @JasmineLCY in #416
- Fixed a bug where sending messages in a newly created team could fail with "Failed to initialize team coordinator" when the gateway agent catalog had not finished loading. by @JasmineLCY in #420
- Fix: Stop the spurious "Agent not responding" system message from appearing after fast (<30s) agent replies. by @samzong in #430
- Add ad-hoc fallback when mac notarization fails by @samzong in #440
- [Fix] DevTools keyboard shortcut (Cmd+Alt+I / Ctrl+Shift+I / F12) now works in packaged builds when Developer Mode is enabled in Settings → About. by @samzong in #442
- reject disallowed fields in settings:update instead of silently dropping them by @HiddenPuppy in #449
- normalize IPv6 addresses in isPrivateIPv6 before private-range check by @mvanhorn in #450
- sync isDefault flag when removing default gateway by @HiddenPuppy in #451
- wrap GatewaysSection IPC handlers in try/finally by @HiddenPuppy in #452
- persist deviceId on first call when no config exists by @HiddenPuppy in #454
- show error toast when PairMobileDialog handleGenerate fails by @mvanhorn in #458
- Fixed model and thinking slash commands so they update the session instead of being sent as chat messages. by @samzong in #461
- Harden history normalization by @samzong in #462
- Replace silent-swallow .catch in AgentsSection avatar paths by @mvanhorn in #463
- Fixed pasted multiline user messages rendering with right-aligned text. by @samzong in #466
- writeConfig is now atomic with write-temp-then-rename by @HiddenPuppy in #470
- Persist assistant media attachments by @samzong in #471
- log fs.watch errors instead of silently swallowing them (#387) by @HiddenPuppy in #474
- return boolean from watchFolder instead of silently dropping when cap is reached (#388) by @HiddenPuppy in #475
- apply hidden-file filter at all depths by @mvanhorn in #476
- use URL pathname for extension detection in autoExtractArtifacts (#389) by @HiddenPuppy in #477
- Fix OpenClaw media attachments so gateway-relative images load when ClawWork and OpenClaw run from different locations. by @samzong in #478
- buffer events before initDebugLogger and replay on init (#412) by @SAY-5 in #481
- Handle fetchAgentMeta failure and floating Promise.all in AgentsSection by @mvanhorn in #483
- Harden initConductor against prompt injection in user task and agent catalog by @mvanhorn in #484
- Toast notifications now appear in the top-right corner and include a clearer dismiss button. by @samzong in #488
- replace appendFileSync with persistent WriteStream (#410) by @HiddenPuppy in #489
- pin DNS resolution in safeFetch to close DNS rebinding TOCTOU (#405) by @HiddenPuppy in #490
♻️ Refactor
- type ssrf lookup mock by samzong (5b19850)
- extract navActiveClass helper to deduplicate LeftNav styles by @reverb256 in #355
- Remove trivial UI useMemo calls by @HiddenPuppy in #356
- Split voice input hook responsibilities by @HiddenPuppy in #357
- extract duplicate mention tabs array in ChatInput by @reverb256 in #361
- extract repeated typeof IPC guard checks in useContextFolders by @reverb256 in #362
- extract SelectionTag component from ChatInput by @reverb256 in #364
- split gateway bootstrap hook by @HiddenPuppy in #370
- add unified gateway registry to ui-store by @reverb256 in #371
- Extract TeamCardShell from TeamCard and TeamHubCard by @Hamzaa6296 in #377
- unify ChatContentBlock with RawContentBlock by @mvanhorn in #379
- Extract ToolCallSummary and reuse in streaming view by @samzong in #419
- Refresh ClawWork's visual signature and screen-reader support: prune accumulated decorative drift (ambient orb animation, cyan-green accent gradient, banned border-left color stripes, bouncy spring easing, triple-layer glow, shell noise texture) and complete accessible labels on every icon-only button across sidebar, composer, settings, teams, and scheduler. PWA chat input touch targets now meet WCAG 2.2 AA (44×44). No feature changes. by @samzong in #422
- Add Layer 3 DB-asserting e2e business paths by @samzong in #437
- update keynote by @samzong in #455
- Session running indicators now consistently reflect waiting, responding, and tool activity across the desktop UI. by @samzong in #467
🔧 Build / CI
- Release maintainers can now run
pnpm release-notes <tag>to generate a categorized release notes draft from merged PR metadata. A newpublish-release-notesCI job runs the same generator on every tag push, saves the draft to the workflow summary and a downloadable artifact, and populates the GitHub Release body only when it is empty — existing hand-written notes are never overwritten. by @samzong in #421 - Add aggregation gate for CI required status checks by @samzong in #425
- Tighten CI: zero-warning lint + Test core step by @samzong in #426
- Typecheck test files via tsconfig.test.json by @samzong in #427
- Expand check-architecture from 1 rule to 4 by @samzong in #428
- Upgrade action runtimes to Node 24 and enable Dependabot by @samzong in #431
- Add secret-scan gate with gitleaks CLI by @samzong in #432
- Build mac x64 package on Intel runner by @samzong in #465
- Default CI bot merges to squash by @samzong in #482
📚 Docs
- Add Teams design journey blog post (v0.0.14 retro) by @samzong in #375
- Add zh/zh-TW/ja/ko README translations and dedupe English README by @samzong in #447
- add next multi-runtime control plane post by @samzong in #456
- Add Discord community badge by @samzong in #480
🧹 Chore
0.0.15-beta.4
sudo xattr -rd com.apple.quarantine /Applications/ClawWork.app✨ Features
- Teams now persist and display the skills bound to each team agent. by @samzong in #468
- File artifacts now show image thumbnails in the file manager and conversation artifact panel, and file previews open in an overlay drawer without shrinking the file grid. by @samzong in #472
- File Manager now hides stored artifact filenames and supports type filtering for artifact search. by @samzong in #473
🐛 Bug Fixes
- Replace silent-swallow .catch in AgentsSection avatar paths by @mvanhorn in #463
- Fixed pasted multiline user messages rendering with right-aligned text. by @samzong in #466
- Persist assistant media attachments by @samzong in #471
♻️ Refactor
- Session running indicators now consistently reflect waiting, responding, and tool activity across the desktop UI. by @samzong in #467
🧹 Chore
- prepare v0.0.15-beta.4 by samzong (cca74f2)
Full Changelog: v0.0.15-beta.3...v0.0.15-beta.4
0.0.15-beta.3
What's Changed
- fix(desktop): show error toast when PairMobileDialog handleGenerate fails by @mvanhorn in #458
- [Feat] Add resizable team file tree by @samzong in #459
- [Chore] Remove tray disconnect indicator by @samzong in #460
- [Fix] Apply model slash commands through session patch by @samzong in #461
- [Fix] Harden history normalization by @samzong in #462
- [Feat] Add shared gateway selector by @samzong in #464
- [Build] Build mac x64 package on Intel runner by @samzong in #465
Full Changelog: v0.0.15-beta.2...v0.0.15-beta.3
0.0.15-beta.2
sudo xattr -rd com.apple.quarantine "/Applications/ClawWork.app"✨ Features
- UI: Refreshed default light and dark themes, consolidated to auto / light / dark (legacy theme choices migrate automatically on startup), and grouped left-nav active tasks by Today / Yesterday / Previous 7 Days / Older. by @samzong in #457
🐛 Bug Fixes
- reject disallowed fields in settings:update instead of silently dropping them by @HiddenPuppy in #449
- sync isDefault flag when removing default gateway by @HiddenPuppy in #451
- wrap GatewaysSection IPC handlers in try/finally by @HiddenPuppy in #452
♻️ Refactor
📚 Docs
- Add zh/zh-TW/ja/ko README translations and dedupe English README by @samzong in #447
- add next multi-runtime control plane post by @samzong in #456
🧹 Chore
- bump version to v0.0.15-beta.2 by samzong (5153677)
📦 Other
- Fix/394 add gateway empty workspace by @HiddenPuppy in #446
Full Changelog: v0.0.15-beta.1...v0.0.15-beta.2
0.0.15-beta.1
✨ Features
- Add Dashboard with usage overview, breakdowns and 30-day token chart by @samzong in #393
- add engineering deck and refresh product tour by @samzong in #418
- Support sending non-image attachments (pdf, office docs, zip, text). Attachments are saved locally per task and open with the OS default app on click. Image messages now survive app restarts. by @samzong in #424
- Slash commands (
/) are now sourced live from the connected gateway. Skills and plugin commands appear alongside native commands, with source badges in the menu and dashboard./think,/fast, and similar options retain their quick-select arg pickers. by @samzong in #429 - Settings: you can now cancel an in-progress app-update download. The cancel button appears next to the download progress and returns the UI to the "update available" state so you can retry immediately. by @samzong in #441
- Settings: you can now opt into the Beta update channel from Settings → About. Beta users receive prerelease builds like 0.0.15-beta.1 as well as stable releases; Stable users continue to only see fully released versions. Default is Stable. by @samzong in #444
🐛 Bug Fixes
- Standardize errorCode in PWA gateway not-connected responses by @Qorex in #325
- log update check failures by @nightcityblade in #348
- log about section IPC failures by @nightcityblade in #349
- handle IPC load failures in mention flows by @nightcityblade in #350
- remove stable ref dependency from popover effect by @nightcityblade in #351
- guard initial file browser artifact load by @nightcityblade in #352
- handle startup IPC failures in app shell by @nightcityblade in #353
- replace hardcoded English strings in useTraySync with i18n… by @luchuanjia in #366
- log persistence errors instead of silently swallowing (#216) by @luchuanjia in #367
- guard FileBrowser search against stale out-of-order response… by @luchuanjia in #368
- allowlist http(s) schemes in shell.openExternal to prevent… by @kenwoodjw in #369
- centralize renderer settings state by @HiddenPuppy in #372
- Consolidate redundant map iterations in MentionPicker by @mvanhorn in #373
- add .catch() handlers to IPC calls in Settings sections by @Hamzaa6296 in #376
- Race condition in FileBrowser search: stale results from out-of-order responses by @mvanhorn in #378
- add payload size cap + per-event rate limiting to debug:renderer-event by @xyaz1313 in #414
- Clean up orphan artifact files when DB insert fails by @JasmineLCY in #415
- Hard-code renderer domain in debug:renderer-event handler by @JasmineLCY in #416
- Fixed a bug where sending messages in a newly created team could fail with "Failed to initialize team coordinator" when the gateway agent catalog had not finished loading. by @JasmineLCY in #420
- Fix: Stop the spurious "Agent not responding" system message from appearing after fast (<30s) agent replies. by @samzong in #430
- Add ad-hoc fallback when mac notarization fails by @samzong in #440
- [Fix] DevTools keyboard shortcut (Cmd+Alt+I / Ctrl+Shift+I / F12) now works in packaged builds when Developer Mode is enabled in Settings → About. by @samzong in #442
♻️ Refactor
- extract navActiveClass helper to deduplicate LeftNav styles by @reverb256 in #355
- Remove trivial UI useMemo calls by @HiddenPuppy in #356
- Split voice input hook responsibilities by @HiddenPuppy in #357
- extract duplicate mention tabs array in ChatInput by @reverb256 in #361
- extract repeated typeof IPC guard checks in useContextFolders by @reverb256 in #362
- extract SelectionTag component from ChatInput by @reverb256 in #364
- split gateway bootstrap hook by @HiddenPuppy in #370
- add unified gateway registry to ui-store by @reverb256 in #371
- Extract TeamCardShell from TeamCard and TeamHubCard by @Hamzaa6296 in #377
- unify ChatContentBlock with RawContentBlock by @mvanhorn in #379
- Extract ToolCallSummary and reuse in streaming view by @samzong in #419
- Refresh ClawWork's visual signature and screen-reader support: prune accumulated decorative drift (ambient orb animation, cyan-green accent gradient, banned border-left color stripes, bouncy spring easing, triple-layer glow, shell noise texture) and complete accessible labels on every icon-only button across sidebar, composer, settings, teams, and scheduler. PWA chat input touch targets now meet WCAG 2.2 AA (44×44). No feature changes. by @samzong in #422
- Add Layer 3 DB-asserting e2e business paths by @samzong in #437
🔧 Build / CI
- Release maintainers can now run
pnpm release-notes <tag>to generate a categorized release notes draft from merged PR metadata. A newpublish-release-notesCI job runs the same generator on every tag push, saves the draft to the workflow summary and a downloadable artifact, and populates the GitHub Release body only when it is empty — existing hand-written notes are never overwritten. by @samzong in #421 - Add aggregation gate for CI required status checks by @samzong in #425
- Tighten CI: zero-warning lint + Test core step by @samzong in #426
- Typecheck test files via tsconfig.test.json by @samzong in #427
- Expand check-architecture from 1 rule to 4 by @samzong in #428
- Upgrade action runtimes to Node 24 and enable Dependabot by @samzong in #431
- Add secret-scan gate with gitleaks CLI by @samzong in #432
📚 Docs
🧹 Chore
- bump version to v0.0.15-beta.1 by samzong (cded8bf)
- bump wzshiming/gh-ci-bot from 1.4.0 to 1.5.0 in the actions group by @app/dependabot in #433
- bump actions/upload-pages-artifact from 3 to 5 by @app/dependabot in #434
- bump actions/upload-artifact from 5 to 7 by @app/dependabot in #435
- bump actions/checkout from 4 to 6 by @app/dependabot in #436
- bump actions/setup-node from 5 to 6 by @app/dependabot in #439
📦 Other
- fix team database init by @afox666 in #380
- Security: Unbounded base64 decode in inbox save can cause memory/disk exhaustion by @tomaioo in #443
👋 New Contributors
- @nightcityblade made their first contribution in #348
- @reverb256 made their first contribution in #355
- @kenwoodjw made their first contribution in #369
- @Hamzaa6296 made their first contribution in #376
- @afox666 made their first contribution in #380
- @xyaz1313 made their first contribution in #414
- @JasmineLCY made their first contribution in #415
- @app/dependabot made their first contribution in #433
- @tomaioo made their first contribution in #443
Full Changelog: v0.0.14...v0.0.15-beta.1
0.0.14
🔥 Highlights
- 👥 Teams — Complete team lifecycle: multi-step creation wizard, TEAM.md file format, virtual file tree editor, AI Builder dialog, team chat with room runtime, and TeamsHub Git-native marketplace with one-click install.
- 🤖 Multi-Agent Orchestration — Ensemble task rooms with conductor/performer model, @ALL mention in chat, agent avatar bar, and subagent event routing via
sessions.changed. - 🔒 Security Hardening — Gateway credentials encrypted with Electron safeStorage, single instance lock prevents duplicate app windows, and deviceId hidden behind developer mode.
- ✨ WelcomeScreen Redesign — Tab-based agent/team/orchestrate selection with gateway selector, skill config dialog, and Skills management with ClawHub discovery.
- 🧩 Agent Enhancements — Avatar upload with custom Electron protocol, inline file editing, AI-guided creation, configurable agent descriptions, skills status panel.
✨ What's New
- 👥 Teams — Full team lifecycle: creation wizard with edit/delete, team detail view with virtual file tree and inline editor, TEAM.md parser, team install orchestrator, AI Builder dialog, team chat with room runtime, and data model with SQLite persistence by @samzong in #258 #259 #260 #261 #262 #266 #268 #270 #282 #283 #295 #296 #303
- 🏪 TeamsHub — Git-native marketplace: data layer, browse UI with tab switching, detail view, and one-click install with agent reuse on reinstall by @samzong in #288 #290 #294 #299
- 🤖 Multi-Agent Orchestration — Ensemble task rooms with native conductor and performer orchestration, @ALL mention, avatar bar, and subagent routing fix by @samzong in #210 #220 #260 #319
- 🧩 Agent Enhancements — Avatar upload with custom Electron protocol and fallback chain, inline file editing, AI-guided creation dialog, skills status panel, configurable agent description by @samzong in #245 #246 #257 #261 #283
- ⚡ Skills & ClawHub — Skills management section with ClawHub discovery and install flow, skill config dialog with disabled filter, skills/config Gateway IPC channels by @samzong in #256 #302 #304 #327
- ✨ WelcomeScreen — Tab-based agent/team/orchestrate selection with extracted gateway selector hook by @samzong in #304, by @HiddenPuppy in #320
- 📡 System Sessions — Ephemeral OpenClaw channels decoupled from Task/Chat by @samzong in #255
- 🔒 Security — Encrypt gateway credentials with Electron safeStorage by @samzong in #323, single instance lock by @samzong in #322, hide deviceId behind developer mode by @samzong in #297
- 📱 PWA — Offline caching, manual update control, GitHub Pages deployment, iOS fullscreen safe-area by @samzong in #205 #207
- 🔍 Diagnostics — Copy session key and conversation diagnosis runbook by @samzong in #312
🐛 Bug Fixes
- Fix subagent events not routed — use
sessions.changedsubscription by @samzong in #319 - Fix tool call activity excluded from response timeout check by @samzong in #316
- Fix
cachedDeviceIdleaked outside store factory closure by @qorexdev in #326 - Fix inline-block message bubbles causing horizontal scroll by @samzong in #324
- Fix ensemble flag not persisted/synced between WelcomeScreen and task state by @samzong in #310 #311
- Fix nested button in FileCard replaced with stretched button pattern by @samzong in #315
- Fix
useEffectscroll replaced with ResizeObserver for reliable auto-scroll by @samzong in #317 - Fix copy timer in FilePreviewModal not cleaned up on unmount by @qorexdev in #308
- Fix syncChains entries not cleaned up after sync completes by @qorexdev in #307
- Fix QR code not regenerated when gateway selection changes by @samzong in #301
- Fix share-identity toggle not wired in pair mobile dialog by @samzong in #298
- Fix team chat task created eagerly — deferred until first message sent by @samzong in #295
- Fix button visual hierarchy across Teams panel by @samzong in #321
- Catch
ws.send()throw after WebSocket close by @mvanhorn in #292 - Wrap PWA
updateTaskin readwrite transaction by @mvanhorn in #293 - Fix hardcoded Copy/Copied strings in FilePreviewModal by @mvanhorn in #291
- Clean up ChatInput abort reset timer on unmount by @HiddenPuppy in #286
- Roll back failed agent creation when follow-up update fails by @HiddenPuppy in #264
- Fix agent edit form name fallback when name is undefined by @samzong in #235
- Reset hydration cache after local hydration failures by @sablecode in #247
- Log persistence failures in core stores by @sablecode in #249
- Preserve error context in core warning paths by @sablecode in #248
- Log persistence and service errors instead of swallowing by @qorexdev in #309
- Avoid stale Zustand selector for model and tools catalog by @samzong in #252
- Add scroll to model selector dropdown when providers overflow by @samzong in #271
- Log unexpected errors in DB migration instead of swallowing by @samzong in #272
- Trim auth credentials and URL in test-gateway handler by @samzong in #265
- Validate sourcePath in artifact:save IPC handler by @samzong in #204
- PWA iOS fullscreen safe-area for native app feel by @samzong in #207
🔧 Engineering
- Extract duplicated message-merge logic in syncFromGateway by @HiddenPuppy in #254
- Extract WelcomeScreen gateway selector hook by @HiddenPuppy in #320
- Use type guard instead of manual cast for PromiseSettledResult by @wiliyam in #250
- Add updatePending/setPending actions to task-store by @luchuanjia in #318
- Add file-reader truncation test for large files by @ronak-create in #284
- Remove renderer shim re-exports by @samzong in #203
- Deterministic i18n key sorting to reduce merge conflicts by @samzong in #267
- Replace real file I/O with fs mocks in file-reader test by @samzong in #289
- Fix knip false positives by updating schema to v6 by @samzong in #287
- Unify team detail view layout with info card by @samzong in #296
- Remove emoji from agent update path, add model info and file set wiring by @samzong in #238
- Website overhaul: CSS variables, merged GitHub API, routing fixes by @samzong in #208
🎉 New Contributors
- @sablecode (Sable) — 3 PRs: error handling and hydration resilience (#247 #248 #249)
- @wiliyam — 1 PR: type safety improvement (#250)
- @HiddenPuppy (Jerome Xu) — 4 PRs: code cleanup, bug fixes, and refactoring (#254 #264 #286 #320)
- @ronak-create (ronak parmar) — 1 PR: test coverage (#284)
- @mvanhorn (Matt Van Horn) — 3 PRs: WebSocket, PWA, and i18n fixes (#291 #292 #293)
- @qorexdev (qorex) — 4 PRs: memory leak fix, cleanup, and error logging (#307 #308 #309 #326)
- @luchuanjia — 1 PR: store action refactoring (#318)
Full Changelog: v0.0.13...v0.0.14
v0.0.14-beta.1
What's New
- Teams — Full team lifecycle: creation wizard, detail view with virtual file tree, inline editor, agent description, and room runtime wiring (#258 #262 #266 #268 #270 #282 #283)
- TeamsHub — Git-native marketplace with data layer, browse UI, detail view, and one-click install (#288 #290 #294)
- Multi-Agent Orchestration — Ensemble task rooms with conductor/performer model, @ALL mention, and avatar bar (#210 #220 #260)
- Agent Enhancements — Avatar upload, inline file editing, AI-guided creation dialog, skills status panel (#245 #246 #261 #218)
- System Sessions — Ephemeral OpenClaw channels decoupled from Task/Chat (#255)
- Skills & Config IPC — Wire skills.install, skills.update, skills.bins and config.* Gateway channels (#256)
Bug Fixes
- Catch
ws.send()throw after WebSocket close (#292) by @mvanhorn - Wrap PWA
updateTaskin readwrite transaction (#293) by @mvanhorn - Fix hardcoded Copy/Copied strings in FilePreviewModal (#291) by @mvanhorn
- Clean up ChatInput abort reset timer on unmount (#286) by @HiddenPuppy
- Roll back failed agent creation when follow-up update fails (#264) by @HiddenPuppy
- Reset hydration cache after local hydration failures (#247) by @sablecode
- Log persistence failures in core stores (#249) by @sablecode
- Preserve error context in core warning paths (#248) by @sablecode
- Trim auth credentials and URL in test-gateway handler (#265)
- Log unexpected errors in DB migration instead of swallowing (#272)
- Add scroll to model selector dropdown when providers overflow (#271)
- Avoid stale Zustand selector for model and tools catalog (#252)
Engineering
- Extract duplicated message-merge logic in syncFromGateway (#254) by @HiddenPuppy
- Use type guard instead of manual cast for PromiseSettledResult (#250) by @wiliyam
- Add file-reader truncation test for large files (#284) by @ronak-create
- Deterministic i18n key sorting to reduce merge conflicts (#267)
- Replace real file I/O with fs mocks in file-reader test (#289)
- Fix knip false positives by updating schema to v6 (#287)
New Contributors 🎉
Welcome to our first community contributors!
- @HiddenPuppy (Jerome Xu) — 3 PRs: bug fixes and code cleanup
- @mvanhorn (Matt Van Horn) — 3 PRs: WebSocket, PWA, and i18n fixes
- @sablecode (Sable) — 3 PRs: error handling and resilience improvements
- @wiliyam — 1 PR: type safety improvement
- @ronak-create (ronak parmar) — 1 PR: test coverage
Full Changelog: v0.0.13...v0.0.14-beta.1
0.0.13
🔥 Highlights
- 📱 ClawWork on your phone — Brand-new PWA mobile companion with a native chat experience, swipe gestures, and seamless QR pairing that keeps your desktop connected.
- 🐧 Linux support — First-class Linux builds ship starting this release — AppImage and deb for x64.
- ✨ Visual refresh — Glass panels, glow accents, and ambient gradients give the entire app a polished new look while respecting reduced-motion preferences.
- 🔒 Security hardening — Four fixes close a private key leak, an SSRF bypass, a TOCTOU race, and a path traversal vector in the artifact handler.
✨ What's New
-
📱 PWA mobile companion — Brand-new mobile web app with native iOS chat experience: OLED dark theme, edge-swipe gestures, drag-to-dismiss bottom sheets, settings panel with 8-language selector, and QR pairing with independent device identity — your desktop stays connected when a phone joins. by @samzong in #183
-
🎨 Premium design system — Glass surfaces, 3-layer glow effects, ambient gradient orbs, display typography (Instrument Serif), extended motion presets, and CI enforcement rules. All with dark + light theme coverage,
prefers-reduced-motionrespect, and@supportsfallbacks. by @samzong in #200 #201 -
🐧 Linux desktop builds — AppImage (portable) and deb (Ubuntu/Debian) packages for x64, fully integrated into the CI/CD release pipeline. by @samzong in #174
🔒 Security
- Removed private key exposure and raw IPC backdoor from the renderer preload bridge — neither surface had any renderer consumers by @samzong in #184
- Production-grade SSRF guard with numeric IPv4/IPv6 range checks and DNS pre-resolution, replacing the string-prefix check that missed all RFC 1918 ranges by @samzong in #189
- Eliminated TOCTOU race in context file path validation by merging validate + read into a single fd-centric atomic operation by @samzong in #185
- Fixed path traversal vector in artifact handler — replaced naive
url.replace('file://', '')withfileURLToPath()by @samzong in #194
🐛 Bug Fixes
- Fixed macOS crash on dock re-open — IPC handlers registered inside
createWindow()threw on second invocation; centralized window lifecycle viawindow-managermodule by @samzong in #195 - Fixed PWA status bar color not updating when switching between dark and light themes by @samzong in #192
- Fixed invisible text in Gateway debug log caused by undefined
--text-tertiaryCSS variable by @samzong in #193 - Fixed per-token forced reflow during streaming — replaced
scrollToBottomon every token with ResizeObserver; fixed Virtuoso dual scroll context by @samzong in #196 - Fixed PWA client version stuck at hardcoded
0.1.0— now injected from package.json at build time by @samzong in #191 - Fixed PWA i18n gaps — en.json is now the authoritative superset, all
defaultValueanti-patterns eliminated, Gateway debug log fully translated across 8 languages by @samzong in #199
🔧 Engineering
- Extracted
@clawwork/corepackage with port-based dependency injection — stores, session sync, gateway dispatching, and protocol parsing are now platform-agnostic, enabling future PWA code sharing by @samzong in #178 - Extracted chat composer service into
@clawwork/core— split the 1655-lineChatInput.tsxgod component into 9 focused modules by @samzong in #180 - Added knip for dead code detection, removed 52 dead code items, added Renovate for automated dependency updates and vitest coverage by @samzong in #176
- Extracted
BottomSheetprimitive from 3 PWA components, fixing 3 accessibility bugs and adding body scroll lock by @samzong in #186 - Extracted
useOverlayhook — unified portal rendering, ref-counted scroll lock,inertsupport, andprefers-reduced-motionfor all overlays by @samzong in #198 - Extracted
useFocusTraphook from DrawerLayout and AgentSelector by @samzong in #190 - Extracted client registry and eliminated
composerBridgemonkey-patching hack by @samzong in #188 - Replaced manual base64 encode/decode with ES2025
Uint8Array.toBase64()platform API by @samzong in #197 - PWA polish: removed type lies (
!non-null assertions), dead tsconfig paths, added IndexedDB migration guard, reduced edge-swipe dead zone by @samzong in #187
📖 Docs
- Keynote: full 8-language translations and dark/light theme toggle by @samzong in #182
- Keynote slide polish and toolchain integration focus by @samzong in #179
- Fixed SPA fallback for GitHub Pages keynote routes by @samzong in #175
📥 Download
| Platform | File |
|---|---|
| 🍎 macOS Apple Silicon | ClawWork-0.0.13-mac-arm64.dmg |
| 🍎 macOS Intel | ClawWork-0.0.13-mac-x64.dmg |
| 🪟 Windows x64 | ClawWork-0.0.13-win-x64.exe |
| 🐧 Linux x64 (AppImage) | ClawWork-0.0.13-linux-x86_64.AppImage |
| 🐧 Linux x64 (deb) | ClawWork-0.0.13-linux-amd64.deb |
macOS: App is signed and notarized — opens normally on first launch.
Windows: If SmartScreen warns "unrecognized app", click More info → Run anyway.
Linux: AppImage requires
chmod +xbefore first run. deb installs viasudo dpkg -i.
🙏 Contributors
We welcome more contributors — come help make ClawWork better → Contributing Guide
Full Changelog: v0.0.12...v0.0.13
Dev Build (main@165872e)
Automated dev build from main branch.
Commit: 165872e
Date: 2026-03-27 20:29:31 +0800
Message: chore(desktop): bump version to v0.0.13
This is a development build and may be unstable. For stable releases, see the latest release.
