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
- prepare v0.0.15 by samzong (496354b)
- prepare v0.0.15-beta.4 by samzong (cca74f2)
- bump version to v0.0.15-beta.1 by samzong (cded8bf)
- bump version to v0.0.15-beta.2 by samzong (5153677)
- bump version to v0.0.15-beta.3 by samzong (ab7af4e)
- 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
- Removed the tray warning indicator for disconnected gateways. by @samzong in #460
- add reviewer routing by @samzong in #479
📦 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
- Fix/394 add gateway empty workspace by @HiddenPuppy in #446
👋 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
- @SAY-5 made their first contribution in #481
Full Changelog: v0.0.14...v0.0.15
