|
| 1 | +## [2.0.6] - 2026-03-02 |
| 2 | + |
| 3 | +This release migrates the **theme engine to the standalone Opaline library** (removing ~3,600 lines of code), adds **Google/Gemini support for parallel subagents**, and improves **API key security** with validation and sanitized error messages. |
| 4 | + |
| 5 | +### Added |
| 6 | + |
| 7 | +- ✨ Add **Google/Gemini provider support** to `parallel_analyze` subagents alongside OpenAI and Anthropic (14c27a9) |
| 8 | +- ✨ Expand OpenAI API key validation to accept both `sk-` and `sk-proj-` prefixes for project-scoped keys |
| 9 | +- ✨ Add `api_key_if_set()` helper to `ProviderConfig` for cleaner empty-string handling |
| 10 | +- ✨ Add content update tools (`UpdateCommitTool`, `UpdatePRTool`, `UpdateReviewTool`) to agent builders for chat mode (f241f14) |
| 11 | + |
| 12 | +### Changed |
| 13 | + |
| 14 | +- ♻️ Replace custom theme engine with **Opaline library** (`opaline = "0.2.0"`), removing entire `src/theme/` directory (~4,262 lines) (7f364d1) |
| 15 | +- ♻️ Replace hardcoded theme token strings with `opaline::names` constants for compile-time validation (4eeb8c3) |
| 16 | +- ⬆️ Upgrade dependencies: `ratatui` 0.29→0.30, `crossterm` 0.28→0.29, `tui-textarea`→`ratatui-textarea` 0.8.0 |
| 17 | +- ♻️ Replace `DynClientBuilder` with explicit provider dispatch using `DynAgent` enum for rig-core 0.27+ compatibility (dfbd9c5) |
| 18 | +- ♻️ Switch Studio generation tasks from streaming to non-streaming execution for clean structured output parsing (228afda) |
| 19 | +- ♻️ Migrate CI/CD workflows to shared-workflows repository, reducing workflow files from 887→654 lines (1ff091d) |
| 20 | +- ⬆️ Bump GitHub Actions: `actions/checkout` v4→v6, `actions/setup-node` v4→v6, `docker/build-push-action` v5→v6 |
| 21 | +- ♻️ Switch to **OIDC trusted publishing** for crates.io via `rust-lang/crates-io-auth-action` |
| 22 | +- ♻️ Apply Clippy suggestions: `sort_by_key`, `is_ok_and()`, `checked_div()` for idiomatic Rust patterns (d66dd2f) |
| 23 | +- ♻️ Replace `unwrap()` with `expect()` in tests for clearer failure diagnostics (5d5f81e) |
| 24 | + |
| 25 | +### Fixed |
| 26 | + |
| 27 | +- 🐛 Remove silent fallback to OpenAI when configured provider fails in `parallel_analyze`—now returns clear error (713a9fe) |
| 28 | +- 🐛 Fix state management: mark state dirty when opening settings modal, load file tree when switching to Explore mode (5dd47cd) |
| 29 | +- 🐛 Fix theme tests to handle parallel execution safely by removing global state assertions (be64764) |
| 30 | +- 🐛 Replace panicking `unwrap`/`expect` calls with proper error handling in `ParallelAnalyze`, `FileWatcherService`, and `GitRepo` (ee4a7df) |
| 31 | + |
| 32 | +### Security |
| 33 | + |
| 34 | +- 🔒️ **Prevent API key exposure in error messages**: sanitize client creation errors to avoid leaking key material (aeefd91) |
| 35 | +- 🔒️ Add `validate_api_key_format()` for format validation (prefix and length checks) to catch misconfigurations early (d2b02e6) |
| 36 | +- 🔒️ Make `resolve_api_key()` and `ApiKeySource` public for consistent resolution across codebase |
| 37 | +- 🔒️ Update test assertions to verify error messages don't contain key fragments |
| 38 | + |
| 39 | +### Removed |
| 40 | + |
| 41 | +- 🔥 Remove entire `src/theme/` directory (36 files): `color.rs`, `gradient.rs`, `schema.rs`, `loader.rs`, `resolver.rs`, adapters, and 13 builtin theme TOML files |
| 42 | +- 🔥 Remove unused dependencies: `once_cell`, `tiktoken-rs`, `tokio-retry` |
| 43 | + |
| 44 | +### Metrics |
| 45 | + |
| 46 | +- Total Commits: 14 |
| 47 | +- Files Changed: 61 |
| 48 | +- Insertions: +611 |
| 49 | +- Deletions: -4,987 |
| 50 | + |
1 | 51 | ## [2.0.4] - 2026-01-09 |
2 | 52 |
|
3 | 53 | This release improves **API key management** with config-based credential resolution, adds **Google/Gemini support** for parallel analysis subagents, and strengthens error handling across provider operations. |
|
0 commit comments