v4.3.15
·
239 commits
to master
since this release
Fixed
- Installing the Codex integration no longer wipes
~/.codex/config.toml(#63) —load_toml_fileusedcontents.parse::<toml::Value>(), which in thetoml = "1"crate parses a single TOML value rather than a document. Any well-formedconfig.tomltherefore parsed as an error and silently fell back to an empty table;install_mcp_serverthen serialized that empty-plus-tokensave table back over the file, erasing every other key the user had set (model, approval_policy, other[mcp_servers.*]entries, comments).load_toml_filenow usestoml::from_str::<toml::Table>so real documents round-trip, returnsResultinstead of swallowing errors, and refuses to overwrite when an existing file cannot be parsed (so a typo or partial edit leaves the original intact for the user to fix).doctor_check_config,install_mcp_server,uninstall_mcp_server, andCodexIntegration::has_tokensavewere updated to handle theResultshape — the doctor now reports parse errors as a failed check, andhas_tokensavereturnsfalseon parse error rather than panicking.
Changed
- Every config-file write across all agent integrations now leaves a
.bakcopy first. Previously only install paths went throughbackup_config_file; uninstall paths anddoctorauto-repair paths calledstd::fs::writedirectly, so a corrupted serialization or a bug in the rewrite logic could destroy the user's settings with no recovery. A new sharedbackup_and_write_jsonhelper (insrc/agents/mod.rs) wrapsbackup_config_file+safe_write_json_filewith best-effort error handling suited to uninstall flows. Every agent's uninstall path (claude, cursor, copilot, cline, zed, kilo, roo-code, opencode, gemini) now goes through this helper, as do the claudedoctorauto-repair and local-settings-cleanup paths. The Codex TOML write path (write_toml_file) also creates a.bakbefore writing for the same reason. Nine per-agent install regression tests plus a cursor uninstall regression test were added totests/agent_test.rsto guard the new invariant.