|
2 | 2 |
|
3 | 3 | All notable changes to ClickyX are documented here. |
4 | 4 |
|
| 5 | +## [0.2.0] - 2026-07-31 |
| 6 | + |
| 7 | +### Fixed — Critical Stability & Security |
| 8 | + |
| 9 | +- **Bridge API**: Fixed `StatusCode::from_u16().unwrap()` panic on non-standard HTTP status codes from upstream APIs — now safely falls back to `OK` or `BadGateway` |
| 10 | +- **Bridge API**: Fixed zombie process leaks — added `child.wait()` after `child.kill()` in MCP command execution paths (`mcp_list_tools_sync`, `mcp_call_tool_sync`) |
| 11 | +- **Computer Use (Linux)**: Fixed shell injection vulnerability in `wtype_text()` — replaced naive escaping with POSIX-safe single-quote wrapping protecting against `$`, `` ` ``, `!`, `#`, `'` characters |
| 12 | +- **Computer Use (Windows)**: Fixed redundant `CoInitializeEx` calls — now uses `std::sync::Once` to ensure COM initialization happens only once per process |
| 13 | +- **Computer Use (Linux)**: Fixed xdotool search with empty class filter that matched nothing — removed `--class ""` argument |
| 14 | +- **Audio Pipeline**: Fixed potential deadlock from `rt.block_on()` called inside Tauri async command handlers — now creates dedicated runtime via `Runtime::new()` |
| 15 | +- **Audio Pipeline**: Removed misleading VAD state transition from `Listening` to `Speaking` during TTS ducking (state was unchanged correctly) |
| 16 | +- **Platform Detection**: Fixed `display_server()` returning `"x11"` for all non-Linux platforms — now returns platform-specific values (`core-graphics` for macOS, `gdi` for Windows) |
| 17 | +- **Config Paths**: Replaced panicking `dirs::config_dir().expect(...)` with safe fallback to `.clickyx` directory in `config.rs` and `agent/session.rs` |
| 18 | +- **Overlay Lifecycle**: Fixed annotation cleanup ordering — `miss()` now properly removes entries and cleans `kind_order`; lifecycle sweep calls `miss()` before removal |
| 19 | +- **Frontend Types**: Fixed `getAudioLevel` type mismatch — now correctly returns `AudioLevelResponse` struct (rms, peak, clipping) instead of `number` |
| 20 | +- **Frontend**: Removed phantom command references (`sendChatMessageStreamVision`, `testMcpServer`, `getAppUsageLog`, `clearAppUsageLog`, `getAutomationRuns`) that had no Rust backend counterparts |
| 21 | +- **Today Stats**: Implemented real statistics computation in `get_today_stats()` instead of hardcoded zeros — now counts completed agents, voice commands, and failed sessions from agent store |
| 22 | + |
| 23 | +### Changed |
| 24 | + |
| 25 | +- Version bumped from **0.1.3 → 0.2.0** across all config files (package.json, Cargo.toml, tauri.conf.json, bindings.ts) |
| 26 | +- Added `#[allow(dead_code)]` at crate level to fix Flatpak build strictness |
| 27 | +- Updated mock defaults in bindings.ts to match Rust implementation (openai_base_url, provider tiers/names) |
| 28 | + |
| 29 | +--- |
| 30 | + |
5 | 31 | ## [Unreleased] |
6 | 32 |
|
7 | 33 | ### Fixed — First-Run Experience |
@@ -172,7 +198,8 @@ All notable changes to ClickyX are documented here. |
172 | 198 | - NVIDIA NIM API support via configurable `openai_base_url` |
173 | 199 | - Cross-platform CI/CD (Linux, Windows, macOS) |
174 | 200 |
|
175 | | -[Unreleased]: https://github.com/unn-Known1/clickyX/compare/v0.1.3...HEAD |
| 201 | +[Unreleased]: https://github.com/unn-Known1/clickyX/compare/v0.2.0...HEAD |
| 202 | +[0.2.0]: https://github.com/unn-Known1/clickyX/compare/v0.1.3...v0.2.0 |
176 | 203 | [0.1.3]: https://github.com/unn-Known1/clickyX/compare/v0.1.2...v0.1.3 |
177 | 204 | [0.1.2]: https://github.com/unn-Known1/clickyX/compare/v0.1.1...v0.1.2 |
178 | 205 | [0.1.1]: https://github.com/unn-Known1/clickyX/compare/v0.1.0...v0.1.1 |
|
0 commit comments