✨ What's New
📄 Office Suite Assistants
New built-in assistants powered by officecli let you create, edit, and preview documents directly in chat:
- Word Creator — Generate and edit Word documents with AI
- PPT Creator — Build PowerPoint presentations from prompts
- Excel Creator — Create spreadsheets and tables
- Pitch Deck Creator — Design investor-ready pitch deck presentations
- Dashboard Creator — Generate visual data dashboards
- Academic Paper Creator — Draft structured research papers
- Financial Model Creator — Build financial models and reports
The Word / PPT / Excel trio is **enabled by default** for all new sessions.
👁️ Live Document Preview
Word and Excel files now support live preview via officecli watch mode. When an agent generates a file, a preview opens automatically — no need to switch apps.

🎤 Voice Input
- Press the microphone button to use speech-to-text input in the chat box — no typing required.
🚀 Codex Full Auto Mode
- New no-sandbox full auto mode for Codex — ideal for automated, unattended workflows.
🗂️ Chat History Improvements
- Use
/exportto export the current conversation - The send box now remembers your message history — scroll through previous inputs with the arrow keys
- Right-click in the send box to access history entries quickly
🔒 Per-Agent TLS Verification
Each agent can now have its own TLS certificate verification setting — useful when connecting to internal services or endpoints with self-signed certificates.
💬 WeChat Integration
- Log in to WeChat WebUI by scanning a QR code directly in AionUi
- Receive and handle incoming image and file attachments from WeChat contacts
🐛 Bug Fixes
- Fixed database locking errors that could stall agent operations
- Resolved unhandled promise rejections causing silent failures
- Fixed WebSocket crashes on unstable connections
- Prevented white-screen crashes caused by stale session restoration
- Fixed errors triggered by unmounted component contexts
- Various UI polish and stability improvements
What's Changed
- fix(guid): pill bar + button should navigate to assistant settings by @IceyLiu in #1814
- feat(assistant): add Word/PPT/Excel Creator assistants powered by officecli by @IceyLiu in #1815
- feat(weixin): add WebUI QR-code login via SSE by @JerryLiu369 in #1744
- update data-dashboard skills by @IceyLiu in #1827
- feat(assistant): add academic-paper & dashboard-creator, enable office trio by default by @IceyLiu in #1831
- fix(guid): swap plus button settings targets by @JerryLiu369 in #1832
- fix(settings): align mobile settings nav labels by @JerryLiu369 in #1842
- feat(assistant): add Financial Model Creator assistant by @IceyLiu in #1853
- feat(skill): add officecli-financial-model skill to resources by @IceyLiu in #1855
- chore(skills): fix markdown table alignment in officecli skill files by @piorpua in #1861
- fix(webui): inline NODE_ENV in main process build to ensure correct default port by @Jassy930 in #1748
- fix(settings): guard JSON.parse in JsonImportModal to prevent unhandled SyntaxError by @kaizhou-lab in #1772
- fix(weixin): fix channel mode model selection and Google OAuth fallback by @JerryLiu369 in #1764
- feat(weixin): support incoming image and file attachments by @JerryLiu369 in #1765
- feat(chat): add /export slash command for conversation export by @amanharshx in #1684
- fix(database): set busy_timeout to prevent "database is locked" errors by @kaizhou-lab in #1777
- fix(settings): catch form validation rejection in EditModeModal by @kaizhou-lab in #1779
- fix(preview): use static Message API to prevent addInstance crash in OfficeDocViewer by @kaizhou-lab in #1781
- fix(window): guard close handler against destroyed BrowserWindow by @kaizhou-lab in #1783
- chore(fix-sentry): add skip-list for cross-session dedup and refine triage rules by @kaizhou-lab in #1785
- chore(ci): add docs-only pr checks workflow and fix branch protection gap by @piorpua in #1863
- feat(workspace): add file changes tracking panel by @kaizhou-lab in #1789
- fix(gemini): ensure workspace dir exists before initialization by @kaizhou-lab in #1784
- fix(acp): prevent white-screen crash from stale session restore by @kaizhou-lab in #1791
- fix(preview): guard messageApi calls against unmounted context holder by @kaizhou-lab in #1793
- fix(task): prevent unhandled rejection in getOrBuildTask (ELECTRON-A) by @kaizhou-lab in #1787
- chore(ci): disable Windows Defender before unit tests by @piorpua in #1865
- fix(pptPreview): handle promise rejection in startWatch ENOENT path by @kaizhou-lab in #1795
- fix(modelBridge): move OpenAI constructor inside try-catch (ELECTRON-6X) by @kaizhou-lab in #1797
- fix(assistant): use dynamic backend list in assistant editor dropdown by @kaizhou-lab in #1798
- feat(server): add standalone resetpass command by @JAVA-LW in #1801
- feat(skill): sync morph-ppt Python migration from OfficeCLI by @IceyLiu in #1860
- fix(mcp): use static Message API to prevent null context crash by @kaizhou-lab in #1775
- fix(shellBridge): handle shell.openPath errors to prevent unhandled rejections by @kaizhou-lab in #1806
- chore(docs): update WeChat group QR code image to wx-5 by @IceyLiu in #1871
- chore(ci): enable bun cache in all pr-checks jobs by @piorpua in #1872
- feat(agent): add per-agent TLS certificate verification toggle by @TCP404 in #1812
- feat(chat): add btw side question flow for Claude Code by @amanharshx in #1818
- feat(pr-automation): add PR automation orchestrator with label state machine by @piorpua in #1874
- fix(settings): persist display zoom across app restarts by @amanharshx in #1820
- fix(websocket): guard ws.send/close in checkClients against EPIPE by @kaizhou-lab in #1821
- fix(fsBridge): prevent unhandled rejection in downloadRemoteBuffer by @kaizhou-lab in #1825
- fix(gemini,acp): sanitize Gemini tool names and decode Windows taskkill errors by @kaizhou-lab in #1828
- fix(gemini): catch bootstrap rejection in send() to prevent worker crash by @kaizhou-lab in #1830
- chore(docs): remove AI-generated plans/specs and ignore docs/superpowers by @piorpua in #1875
- fix(openclaw): catch write errors in deviceAuthStore (ELECTRON-6F) by @kaizhou-lab in #1835
- fix(skills): align SKILL.md name fields with directory names by @IceyLiu in #1833
- feat(tools): add speech-to-text voice input by @cdxiaodong in #1838
- fix(openclaw): prevent duplicate replies from late chat events by @kaizhou-lab in #1844
- fix(test): repair broken layout_theme and getNpxCacheDir tests by @IceyLiu in #1849
- feat(assistant): add pitch-deck-creator assistant by @IceyLiu in #1846
- fix(webui): use public directory icon for favicon by @kaizhou-lab in #1857
- fix(weixin): accept voice transcription text by @JerryLiu369 in #1864
- feat(office): word/excel live preview via officecli watch + auto-preview on file generation by @IceyLiu in #1869
- add: kiro by @djunny in #1873
- fix(webui): resolve CSRF token login failure after cache expiration by @cdxiaodong in #1689
- feat(acp): support user-defined custom ACP agents by @gobylor in #1800
- chore(pr-automation): centralize CRITICAL_PATH_PATTERN in Configuration section by @piorpua in #1878
- fix(openclaw): normalize WebSocket URL to prevent Invalid URL crash by @kaizhou-lab in #1852
- chore(deps): add cookie package to bun.lock by @piorpua in #1880
- feat(codex): add no-sandbox full auto mode by @JAVA-LW in #1877
- feat(chat): add sendbox message history by @cdxiaodong in #1881
- chore(docs): remove pr-automation plans and specs by @piorpua in #1886
- feat(conversation): support right-click history menu by @cdxiaodong in #1885
- chore: bump version to 1.9.3 by @piorpua in #1887
New Contributors
Full Changelog: v1.9.2...v1.9.3