Releases: iOfficeAI/AionUi
v1.9.5
✨ What's New
🧠 ACP Inline Thinking & Plan Display
AionUi now displays inline thinking as the agent reasons through tasks, deduplicates plan steps to avoid repeated output, and shows a cleaner processing indicator during active agent execution.
🎨 Assistant Homepage & Sidebar Refresh
The assistant homepage has been polished with improved UX and smoother agent switching. The sidebar actions and skills market entry have also been refreshed for a more intuitive layout.
💬 Message Timestamps on Hover
Hover over any message to see its exact timestamp — no more guessing when something was sent.
📁 WeChat Channel File Send
The WeChat channel now supports the file send protocol, allowing files to be sent through the channel alongside messages.
🐛 Bug Fixes
ACP / Agent
- Detect CLI config errors on startup and surface actionable guidance
- Fix inline thinking, plan deduplication, and processing indicator regressions
Conversation & Chat
- Fix failed conversation auto-titles
- Prevent command queue dequeue before status hydration completes
- Prevent duplicate conversation creation under weak network conditions
- Guard against invalid
typefield when creating conversations - Ignore transient info messages from appearing in chat
Sandbox
- Repair Worker→Host message routing
- Add storage backend to sandbox environment
Themes
- Restore Discourse Horizon theme menu scroll
- Restore Y2K skin hover and click interactions
Channels
- Use
markdownToTelegramHtmlfor correct Telegram text formatting
Codex / OpenClaw / Remote Agent
- Handle signal-killed process exit gracefully during Codex startup
- Validate CLI binary exists before spawn to prevent
ENOENTcrash - Validate URL and prevent TDZ crash in
testConnection
Platform
- Add
getLogsDirfallback for inline platform services - Add fallback when
app.getPath('logs')fails
Adapter / Bridge
- Catch
JSON.stringifyRangeErroron oversized bridge data
WebUI
- Force headless Ozone backend on Linux to fix rendering issues
Media
- Retry image loading in
FilePreviewto fix pasted clipboard image race condition
i18n
- Localize WebUI modal buttons and password validation error messages
What's Changed
- refactor(pr-automation): replace git checkout with worktree isolation by @piorpua in #1976
- refactor(chat): remove unused send box draft hooks by @yejiming in #1958
- fix(pr-automation): symlink node_modules in worktree for lint/tsc/test by @piorpua in #1977
- feat(acp): inline thinking display, plan dedup, and processing indicator fixes by @kaizhou-lab in #1953
- fix(preview): clarify scroll sync fallback comments by @yejiming in #1959
- fix(adapter): catch JSON.stringify RangeError on oversized bridge data by @kaizhou-lab in #1960
- fix(codex): handle signal-killed process exit during startup by @kaizhou-lab in #1963
- fix(chat): ignore transient info messages by @cdxiaodong in #1964
- fix(platform): add fallback for app.getPath('logs') failure by @kaizhou-lab in #1967
- chore(renderer): remove unused draft hooks by @cdxiaodong in #1970
- fix(webui): force headless ozone backend on linux by @yejiming in #1973
- fix(docs): correct relative links in localized readmes by @yejiming in #1974
- fix(conversation): prevent duplicate conversation creation under weak network by @kaizhou-lab in #1975
- fix(channels): use markdownToTelegramHtml for Telegram text formatting by @kaizhou-lab in #1978
- fix(remoteAgent): validate URL and prevent TDZ crash in testConnection by @kaizhou-lab in #1823
- fix(openclaw): validate CLI binary exists before spawn to prevent ENOENT crash by @kaizhou-lab in #1837
- fix(i18n): localize WebUI modal buttons and password validation errors by @kaizhou-lab in #1917
- feat(settings): add Playwright MCP config and improve CDP layout by @kaizhou-lab in #1979
- fix(media): retry image loading for pasted clipboard images by @kaizhou-lab in #1928
- fix(acp): detect CLI config errors on startup and provide actionable guidance by @kaizhou-lab in #1947
- feat(guid): refresh sidebar actions and skills market entry by @ringringlin in #1945
- fix(conversation): guard invalid create type by @cdxiaodong in #1936
- fix(platform): add getLogsDir fallback to inline platform services by @kaizhou-lab in #1980
- fix(snapshot): return empty array from getBranches in snapshot mode by @kaizhou-lab in #1982
- fix(conversation): prevent queue dequeue before status hydration by @Ericwong5021 in #1984
- feat(messages): show message timestamp on hover by @kaizhou-lab in #1986
- fix(theme): restore y2k skin interactions by @ringringlin in #1987
- fix(theme): restore discourse horizon menu scroll by @ringringlin in #1989
- fix(conversation): fix failed conversation auto-titles by @Ericwong5021 in #1992
- Fix(sandbox): repair Worker→Host message routing and add storage backend by @TCP404 in #1991
- chore(pr-automation): include matched critical path files in review comment by @piorpua in #1994
- feat(weixin): support channel file send protocol by @JerryLiu369 in #1993
- chore(pr-automation): add configurable Claude model selection by @piorpua in #1996
- feat(guid): polish assistant homepage UX and agent switching by @ringringlin in #1941
- chore: bump version to 1.9.5 by @IceyLiu in #1999
Full Changelog: v1.9.4...v1.9.5
v1.9.4
✨ What's New
🗓️ Command Queue Workflow
Conversations now support a command queue — queue up multiple instructions and AionUi will execute them in order, one at a time, without manual intervention.
🔐 ACP Session Permission Modes
When starting an ACP session, you can now choose non-YOLO permission modes (e.g. ask / auto-edit) — giving you granular control over what the agent is allowed to do without interrupting.
📜 Preview Scroll Sync
Scroll sync between the editor and preview pane is now smarter and more responsive, with optimized unlock scheduling that reduces jitter when working with long documents.
📱 Mobile Improvements
- Safe Area support on mobile for better display on notch/island devices
- Updated app icon
🐛 Bug Fixes
ACP / Agent
- Extended permission request timeout to 30 minutes to prevent premature rejections
- Fixed slash commands not appearing during bootstrap
- Improved error message when CLI exits with code 0 on startup
- Prevented unhandled promise rejections during bootstrap initialization
Conversation & Chat
- Fixed conversation creation failing when the
typefield was invalid - Synced renamed conversation titles with the detail view
- Deduplicated filenames when pasting multiple images
Gemini / Codex
- Fixed Gemini losing context after stopping a reply mid-stream
- Guarded against
EACCESerrors during workspacerealpathinit - Fixed Codex start promise not rejecting immediately when the process exits during startup
Channels / WeChat
- Fixed model restore retrying infinitely on a stale provider (now capped)
- Fixed WeChat WebUI login sending wrong QR ticket in SSE
- Fixed Weixin channel not awaiting Gemini tool continuations
Snapshot / Workspace
- Guarded against non-existent workspace during snapshot init
- Handled permission-denied files in snapshot init
- Added
maxBuffertogit add/commitcalls to prevent buffer overflow on large repos
File & Preview
- Guarded
readFileagainst oversized files that exceed the V8 string limit - Fixed CodeMirror
mapPosRangeError in editor preview (ELECTRON-3Y)
Other
- Normalized WebSocket test URL for remote agents
- Normalized language code to ISO 639-1 for OpenAI Whisper STT
- Fixed
sendMessageanddatabaseBridgeproviders crashing on undefined params - Preserved preset agents when saving custom agent settings
What's Changed
- chore(pr-automation): add database service dir to CRITICAL_PATH_PATTERN by @piorpua in #1895
- fix(i18n): add WeChat channel i18n support with weixin namespace by @gobylor in #1891
- feat(agent): support non-YOLO session modes at ACP start by @gobylor in #1894
- fix(ci): allow edited events to trigger full CI run by @piorpua in #1897
- refactor(agents): hide custom agent UI entry points by @piorpua in #1903
- fix(guid): add dismiss button to skills market banner by @amanharshx in #1848
- fix(channels): await persisted session hydration before enabling plugins by @amanharshx in #1888
- chore(pr-automation): expand CRITICAL_PATH_PATTERN to cover config and docs files by @piorpua in #1915
- fix(guid): show upload progress on new chat by @JerryLiu369 in #1905
- fix(settings): preserve preset agents when saving custom agents by @kaizhou-lab in #1908
- chore(agents): add i18n validation to agent context and pre-PR workflow by @piorpua in #1923
- fix(snapshot): guard against non-existent workspace in init by @kaizhou-lab in #1906
- fix(snapshot): handle permission-denied files in workspace snapshot init by @kaizhou-lab in #1907
- fix(bridge): guard against undefined params in sendMessage provider by @kaizhou-lab in #1909
- chore(pr-automation): verify auto-merge success with 10s retry by @piorpua in #1930
- fix(channels): send raw QR ticket in WeChat WebUI login SSE by @kaizhou-lab in #1910
- fix(gemini): guard against EACCES in workspace realpath during init by @kaizhou-lab in #1912
- refactor(acp): consolidate AGENT_SKILLS_DIRS into ACP_BACKENDS_ALL by @kaizhou-lab in #1913
- fix(snapshot): add maxBuffer to git add/commit exec calls by @kaizhou-lab in #1914
- fix(conversation): validate type field before creating conversation by @kaizhou-lab in #1921
- docs(officecli): update assistant demo GIFs (PPT/Word/Excel) by @ringringlin in #1919
- fix(database): add error handling to getRemoteAgents and getRemoteAgent by @kaizhou-lab in #1922
- fix(database): guard against undefined params in databaseBridge providers by @kaizhou-lab in #1924
- fix(mobile): add SafeArea support and update app icon by @kaizhou-lab in #1926
- fix(paste): deduplicate filenames when pasting multiple images by @kaizhou-lab in #1931
- fix(conversation): sync renamed titles with detail view by @cdxiaodong in #1927
- fix(codex): reject start promise immediately on process exit during startup by @kaizhou-lab in #1929
- fix(gemini): restore context after stopping a reply by @cdxiaodong in #1932
- fix(agents): prevent unhandled promise rejection in bootstrap initialization by @kaizhou-lab in #1933
- fix(fsBridge): guard readFile against oversized files exceeding V8 string limit by @kaizhou-lab in #1934
- fix(channels): cap model restore retries to prevent freeze on stale provider by @kaizhou-lab in #1935
- fix(remote-agent): normalize websocket test url by @cdxiaodong in #1937
- fix(stt): normalize language code to ISO 639-1 for OpenAI Whisper by @kaizhou-lab in #1939
- fix(acp): extend permission request timeout to 30 minutes by @kaizhou-lab in #1942
- fix(acp): improve error message when CLI exits with code 0 during ACP startup by @kaizhou-lab in #1943
- fix(preview): catch CodeMirror mapPos RangeError in editors (ELECTRON-3Y) by @kaizhou-lab in #1940
- fix(weixin): wait for gemini tool continuations by @JerryLiu369 in #1946
- fix(acp): slash commands not showing during bootstrap by @kaizhou-lab in #1949
- feat(conversation): implement command queue workflow by @Ericwong5021 in #1856
- feat(renderer): optimize preview scroll sync unlock scheduling by @yejiming in #1951
- chore: bump version to 1.9.4 by @piorpua in #1954
- refactor(settings): remove custom agents UI from LocalAgents by @piorpua in #1956
New Contributors
Full Changelog: v1.9.3...v1.9.4
v1.9.3
✨ 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 https://github.com/iO...
v1.9.2
New Features
Remote Agent Support
You can now connect to remote AI agents via the OpenClaw protocol. A new Agent management page with Local / Remote tabs lets you add, configure, and switch between local and remote agents in one place.

Upload Progress Indicator
File uploads now display a real-time progress bar. The send button is automatically disabled while files are still uploading, so you'll never accidentally send an incomplete message again.
PWA Support for WebUI
AionUi WebUI can now be installed as a Progressive Web App. Add it to your home screen on mobile or install it on desktop for a native app-like experience — faster launches and offline-ready.
Smarter Timeout Handling
Long-running tasks (like generating large documents or complex presentations) will no longer falsely time out. AionUi now checks whether the agent process is actually still working before triggering a timeout, so your big tasks can finish reliably.
Improvements
- Cmd+F search works everywhere — Find-in-chat now works correctly when the conversation is inside a folder or when using the mobile interface.
- Built-in skills always available — Skills like office-cli are now reliably injected regardless of which backend is in use.
- Added MiniMax models — MiniMax model options are now available in the model selector.
- Codex startup improved — Better fallback handling when starting the packaged Codex backend.
Bug Fixes
- Fixed multiple crash scenarios reported via Sentry, significantly improving overall stability:
- App no longer crashes when the workspace directory is missing or inaccessible
- Fixed crash when storage directory doesn't exist on first launch
- Fixed crash when opening an invalid URL from the app
- Fixed crash when the API key is empty or invalid
- Fixed file read errors when a file is temporarily locked by another process
- Fixed PPT preview crash when the rendering provider encounters an error
- Fixed WebUI server crash when the default port is already in use
- Fixed WeChat plugin crash when the login QR code scan times out
- Fixed Gemini backend crash when initialization fails
- Fixed health check crash when the connection times out
What's Changed
- fix(skills): fallback to prompt injection for custom workspaces by @kaizhou-lab in #1717
- fix(model): add missing MiniMax models by @FencyJay in #1637
- fix(acp): clear cronBusyGuard and status on sendMessage failure by @JerryLiu369 in #1700
- test(skills): add tests for customWorkspace skill injection fallback by @kaizhou-lab in #1722
- fix(acp): address review issues from PR #1700 by @piorpua in #1723
- feat(acp): add process-liveness keepalive to prevent false prompt timeouts by @JerryLiu369 in #1702
- fix(skills): always inject _builtin skills for native-skill backends by @JerryLiu369 in #1718
- fix(acp): address review issues from PR #1702 by @piorpua in #1725
- fix(pptPreview): return error result instead of throwing in provider callback by @kaizhou-lab in #1731
- fix(webui): handle EADDRINUSE when starting server in WebUI mode by @kaizhou-lab in #1733
- fix(weixin): clear poll interval on timeout to prevent accessing destroyed BrowserWindow by @kaizhou-lab in #1728
- feat(upload): add progress indicator and disable send during upload by @JerryLiu369 in #1705
- chore: bump @office-ai/aioncli-core to 0.30.2 by @kaizhou-lab in #1751
- fix(fsBridge): handle EBUSY in readFile/readFileBuffer by @kaizhou-lab in #1754
- fix(health-check): prevent unhandled rejection on timeout by @kaizhou-lab in #1756
- fix(model-bridge): validate apiKey before creating OpenAI client in new-api branch by @kaizhou-lab in #1758
- chore(fix-sentry): add daemon script and single-issue mode by @kaizhou-lab in #1759
- fix(initStorage): ensure parent directory exists before WriteFile (ELECTRON-68) by @kaizhou-lab in #1761
- fix(workspace): prevent unhandled rejection on missing workspace directory by @kaizhou-lab in #1763
- fix(shellBridge): validate URL before openExternal to prevent Invalid URL errors by @kaizhou-lab in #1767
- refactor(fix-sentry): migrate Sentry API logic from daemon to skill by @kaizhou-lab in #1770
- fix(gemini): prevent unhandled rejection when bootstrap fails by @kaizhou-lab in #1769
- fix(acp): improve packaged codex startup fallback by @JAVA-LW in #1594
- feat(webui): add pwa support by @Ericwong5021 in #1688
- fix(search): make Cmd+F work when chat is in a folder or on mobile by @amanharshx in #1692
- feat(agent): add remote agent support with OpenClaw protocol by @TCP404 in #1739
- chore: bump version to 1.9.2 by @kaizhou-lab in #1802
- fix(agent): apply missing remote agent UI updates from #1739 by @TCP404 in #1807
New Contributors
- @FencyJay made their first contribution in #1637
- @Ericwong5021 made their first contribution in #1688
Full Changelog: v1.9.1...v1.9.2
v1.9.1
What's New
- fix(acp): improve prompt timeout handling with cancel support and configurable duration by @kaizhou-lab in #1709
What's Changed
- refactor(morph-ppt): switch to remote style source and add localized Morph README showcase by @ringringlin in #1681
- chore(readme): replace WeChat group QR image by @IceyLiu in #1690
- docs(readme): mention OfficeCLI in Morph sections by @ringringlin in #1683
- chore: fix test local env isolation and cleanup tooling by @piorpua in #1694
- test: mock UserRepository in webuiQR unit test by @piorpua in #1695
- fix: ensure SQLite WAL is checkpointed on graceful shutdown by @piorpua in #1696
- perf(warmup): add conversation bootstrap preheating on input focus by @kaizhou-lab in #1703
- chore(oss-pr): add quality checks and test steps to workflow by @piorpua in #1706
- fix(acp): improve prompt timeout handling with cancel support and configurable duration by @kaizhou-lab in #1709
- feat(weixin): add WeChat channel plugin with QR login and UI by @piorpua in #1704
- fix(guid): use effective backend type for preset agent config lookups by @kaizhou-lab in #1711
- feat(preview): auto-refresh preview when external tools modify files by @luanruisong in #1686
- fix(skills): complete native skill symlink mapping and add prompt injection fallback by @kaizhou-lab in #1713
- test(preview): add mtime polling tests for PreviewContext file watch by @piorpua in #1714
- chore: bump version to 1.9.1 by @piorpua in #1715
New Contributors
- @luanruisong made their first contribution in #1686
Full Changelog: v1.9.0...v1.9.1
v1.9.0
✨ Highlights
1) AionUi Morph PPT with real-time rendering, powerred by OfficeCLI x AionUi
- Expanded
morph-pptcapabilities for a more visual and transparent slide-building workflow. - Added clearer preview and system-app warning messages to reduce confusion during generation.
- Improved WebUI/Server-mode support for PPT preview and shell-open actions, making local and remote usage more consistent.
- Result: users can see the PPT being produced step by step instead of waiting for a black-box final output.
2) OfficeCli now includes built-in Skills
- OfficeCli ships with built-in skills to reduce setup friction and speed up onboarding.
- Skills sync reliability improved by separating built-in and user skill directories.
- Better end-to-end flow from intent → generation → preview → iteration in PPT workflows.
🚀 Other Improvements
- i18n: replaced Chinese fallback strings with English in
t()calls. - Search: added
Cmd/Ctrl + Shift + Fhistory shortcut. - Conversation UX: cycle visible sessions with
Ctrl + Tab. - Server: added webserver standalone mode.
- UI polish: formatting fixes in channel config forms and skills hub settings.
- Mobile: mobile-related enhancements and fixes.
What's Changed
- fix(i18n): replace Chinese fallback strings with English in t() calls by @amanharshx in #1651
- feat(search): add Cmd/Ctrl+Shift+F history shortcut by @Eric-Song-Nop in #1625
- fix(morph-ppt): clarify preview and system app warning by @IceyLiu in #1664
- refactor(morph-ppt): remove hardcoded inspiration topics by @IceyLiu in #1666
- style: fix formatting issues in channel config forms and skills hub settings by @piorpua in #1668
- feat(server): webserver standalone mode by @piorpua in #1665
- fix(skills): separate builtin and user skills directories for reliable sync by @kaizhou-lab in #1673
- fix(conversation): cycle visible sessions with ctrl+tab by @Eric-Song-Nop in #1623
- Mobile by @xavierliang in #1506
- fix(webui): support PPT preview and shell open in server mode by @piorpua in #1679
- chore: bump version to 1.9.0 by @piorpua in #1680
New Contributors
- @amanharshx made their first contribution in #1651
- @Eric-Song-Nop made their first contribution in #1625
Full Changelog: v1.8.33...v1.9.0
v1.8.32
New Features
What's Changed
- chore(tooling): migrate from ESLint + Prettier to oxc ecosystem (oxlint + oxfmt) by @loonghao in #1488
- fix(coverage): switch from whitelist to full-source coverage reporting by @loonghao in #1491
- docs(skills): update coverage config references for glob-based include by @piorpua in #1576
- refactor: reorganize src/ directory structure (835 files, 0 TS errors) by @kaizhou-lab in #1583
- fix(builtin-mcp): make image-gen server runnable by external node in packaged app by @piorpua in #1584
- refactor(settings): restructure SystemModalContent, fix CDP switch, hide dev tools in production by @kaizhou-lab in #1587
- fix(utils): replace runtime require with static import for initStorage by @kaizhou-lab in #1600
- fix(mcp): align image generation agent badges with dynamic registration state by @Castor6 in #1505
- fix(image-generation-mcp): address review issues from PR #1505 by @piorpua in #1601
- feat(display-settings): add CSS theme presets by @Asunfly in #1598
- chore: bump version to 1.8.32 by @piorpua in #1603
Full Changelog: v1.8.31...v1.8.32
v1.8.31
What's Changed
- ci(pr-checks): cancel runs on PR close and add skip_build_test option by @piorpua in #1418
- docs: add project skills for architecture, commit, PR, testing, and i18n by @kaizhou-lab in #1420
- fix(tray): hide app to tray from tray menu by @cdxiaodong in #1404
- fix(tray): refresh recent chats after conversation changes by @cdxiaodong in #1398
- fix(shellEnv): 修复Windows环境下npx路径验证逻辑 by @JAVA-LW in #1427
- feat: add Novita provider integration by @Alex-wuhu in #1359
- fix(chatLib): replace throw with console.warn for unsupported message types by @kaizhou-lab in #1428
- docs(skills): require test coverage verification in commit workflow by @kaizhou-lab in #1431
- refactor(commands): migrate pr-review to skill, remove pr-assess by @piorpua in #1432
- feat(mcp): add built-in image generation MCP server by @Castor6 in #1243
- fix(sentry): rewrite source map paths for GitHub code mapping by @kaizhou-lab in #1435
- fix(image-gen-mcp): address follow-up review issues from #1243 by @piorpua in #1441
- fix(fs): handle ENOENT in readDirectoryRecursive and bridge providers by @kaizhou-lab in #1450
- chore(skills): add pr-fix skill and update oss-pr and pr-review skills by @piorpua in #1453
- docs(architecture): add testability rules and test file mapping by @kaizhou-lab in #1457
- refactor(process): main process decoupling phase 2 — full DI for all bridge/service modules by @piorpua in #1447
- docs(architecture): add testability rules and restructure skill by @kaizhou-lab in #1460
- refactor(skills): use native workspace symlinks instead of prompt injection by @audichuang in #1246
- docs(pr-fix): add path routing for internal branch vs fork PRs by @piorpua in #1467
- feat(pr-review): add CI status gate before code review by @piorpua in #1480
- docs(pr-review): handle missing CI jobs when workflow skipped by paths-ignore by @piorpua in #1481
- refactor(renderer): restructure directory layout by @kaizhou-lab in #1449
- chore: bump version to 1.8.31 by @piorpua in #1484
New Contributors
- @Alex-wuhu made their first contribution in #1359
Full Changelog: v1.8.30...v1.8.31
v1.8.30
New Features
- WebUI file upload – Added file upload support in WebUI, making it easier to send files from mobile/remote devices (#1241, Fixes #1233).
- CSS themes – New Retroma Y2K CSS-only theme + cover, and a Retroma Obsidian Book themed style (#1399, #1401).
What's Changed
- chore(dev): clean renderer cache before starting dev server by @kaizhou-lab in #1382
- feat(sentry): integrate error tracking with source map support by @kaizhou-lab in #1396
- fix(build): package bun runtime with cache-first strategy by @loonghao in #1371
- chore(ci): disable project-automation workflow by @piorpua in #1400
- fix(webserver): handle special characters in cookies properly by @zhzy0077 in #1321
- fix(webui): pass custom CLI args correctly for electron-vite 5 by @kaizhou-lab in #1408
- feat(webui): add file upload for mobile/remote devices (Fixes #1233) by @audichuang in #1241
- fix(ci): downgrade actions/checkout from v6 to v4 by @piorpua in #1409
- feat(css-theme): retroma y2k css-only + cover by @ringringlin in #1399
- Feat/css retroma obsidian book by @ringringlin in #1401
- fix(ci): remove secrets context from if: conditions in coverage job by @piorpua in #1410
- refactor: decouple main process modules via interfaces and constructor injection by @piorpua in #1402
- fix: add @types/cookie and fix prettier formatting by @piorpua in #1412
- docs(specs): update phase2 design doc post PR #1402 merge by @piorpua in #1413
- refactor(css-theme): replace base64 covers with Vite static imports and extract CSS by @kaizhou-lab in #1411
- 修复消息检索bug+Windows对话异常+对话工作中/完成提示 by @JAVA-LW in #1386
- ci(pr-checks): add workflow_dispatch trigger for manual PR re-runs by @piorpua in #1415
- chore: bump version to 1.8.30 by @piorpua in #1417
New Contributors
Full Changelog: v1.8.29...v1.8.30
v1.8.29
What's New
Features
- Conversation history – Message search in conversation history (#1203).
- Skills Hub – AionUi Local Skills Management (#1210).
- Settings – CDP settings UI and DevTools toggle Onlfy (#1374).
- Coversation Optimization — Optimize the entrance of the minimap, and allow the user to edit the title on the top
- Environment separation – Separate dev/release environments for simultaneous debugging (#1128).
Fixes
- Tray – Include
app.pngin extraResources for production builds (#1348). - WebUI – Binary file download no longer returns 0KB; context menu download added (#1324).
- Download – Extract
base64ToBlobutility and fix MIME resolution (#1356). - WebUI – Skip symlinks outside allowed paths in directory browse (#1350).
- Gemini – Clear
activeMsgIdRefon stop to fix message filtering (#1354). - Gemini – Sync
waitingResponseRefon stop and adduseGeminiMessagetests (#1370). - ACP / log / main – Revert codex-acp 0.10.0, fix log persistence, refactor index.ts (#1368).
- UI – Polish search popover and settings icon styles (#1365).
- Guid – Remove add-assistant button hover animation (#1362).
- Tray / Skills – Stabilize tray test in CI; always show SkillsMarketBanner description/details (#1380).
What's Changed
- update expired wx group qr code by @IceyLiu in #1346
- 对话历史消息检索 by @JAVA-LW in #1203
- fix(tray): include app.png in extraResources for production builds by @kaizhou-lab in #1348
- chore: fix CSS prettier formatting and document format requirement by @piorpua in #1352
- Feature/skills hub by @kylinhou in #1210
- chore: add format auto-fix step to bump-version workflow by @piorpua in #1353
- fix: binary file download fails with 0KB in WebUI mode + add context menu download by @JerryLiu369 in #1324
- refactor: extract base64ToBlob utility, fix MIME resolution in download by @piorpua in #1356
- feat: implement environment separation for simultaneous debugging by @kylinhou in #1128
- fix(webui): skip symlinks outside allowed paths in directory browse by @piorpua in #1350
- feat(env): isolate dev/release symlinks with getEnvAwareName by @piorpua in #1364
- fix(gemini): clear activeMsgIdRef on stop to prevent message filtering bug by @BillionClaw in #1354
- ci(workflows): add coverage test job to PR checks by @loonghao in #1369
- fix(gemini): sync waitingResponseRef on stop and add useGeminiMessage tests by @piorpua in #1370
- fix(acp,log,main): revert codex-acp 0.10.0, fix log persistence, refactor index.ts by @kaizhou-lab in #1368
- chore(ci): remove AI review and external contributor jobs by @piorpua in #1372
- feat(settings): add CDP settings UI and DevTools toggle by @kaizhou-lab in #1374
- fix(ui): polish search popover and settings icon styles by @ringringlin in #1365
- fix(guid): remove add-assistant button hover animation by @TCP404 in #1362
- chore: bump version to 1.8.29 by @piorpua in #1377
- fix: stabilize tray test CI & always show SkillsMarketBanner desc/details by @kaizhou-lab in #1380
New Contributors
- @kylinhou made their first contribution in #1210
- @JerryLiu369 made their first contribution in #1324
- @BillionClaw made their first contribution in #1354
- @TCP404 made their first contribution in #1362
Full Changelog: v1.8.28...v1.8.29
