This commit completes the Phase 10 migration to MCP-only architecture by removing all legacy mode code paths and configuration options. **Breaking Changes:** - Removed `McpMode` enum from configuration system - Removed `mode` setting from `[mcp]` config section - MCP architecture is now always enabled (no option to disable) **Code Changes:** - Simplified `McpSettings` struct (now a placeholder for future options) - Updated `McpClientFactory` to remove legacy mode branching - Always use MCP architecture with automatic fallback to local client - Added test infrastructure: `MockProvider` and `MockMcpClient` in test_utils **Documentation:** - Created comprehensive v0.x → v1.0 migration guide - Added CHANGELOG_v1.0.md with detailed technical changes - Documented common issues (cloud model 404s, timeouts, API key setup) - Included rollback procedures and troubleshooting steps **Testing:** - All 29 tests passing - Fixed agent tests to use new mock implementations - Updated factory test to reflect new behavior This completes the 10-phase migration plan documented in .agents/new_phases.md, establishing Owlen as a production-ready MCP-only TUI application. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.9 KiB
Changelog for v1.0.0 - MCP-Only Architecture
Summary
Version 1.0.0 marks the completion of the MCP-only architecture migration, removing all legacy code paths and fully embracing the Model Context Protocol for all LLM interactions and tool executions.
Breaking Changes
1. Removed Legacy MCP Mode
What changed:
- The
[mcp]section inconfig.tomlno longer accepts amodesetting - The
McpModeenum has been removed from the configuration system - MCP architecture is now always enabled - no option to disable it
Migration:
# old config.toml
[mcp]
-mode = "legacy" # or "enabled"
# new config.toml
[mcp]
# MCP is always enabled - no mode setting needed
Code changes:
crates/owlen-core/src/config.rs: RemovedMcpModeenum, simplifiedMcpSettingscrates/owlen-core/src/mcp/factory.rs: Removed legacy mode handling fromMcpClientFactory- All provider calls now go through MCP clients exclusively
2. Updated MCP Client Factory
What changed:
McpClientFactory::create()no longer checks for legacy mode- Automatically falls back to
LocalMcpClientwhen no external MCP servers are configured - Improved error messages for server connection failures
Before:
match self.config.mcp.mode {
McpMode::Legacy => { /* use local */ },
McpMode::Enabled => { /* use remote or fallback */ },
}
After:
// Always use MCP architecture
if let Some(server_cfg) = self.config.mcp_servers.first() {
// Try remote server, fallback to local on error
} else {
// Use local client
}
New Features
Test Infrastructure
Added comprehensive mock implementations for testing:
-
MockProvider (
crates/owlen-core/src/provider.rs)- Located in
provider::test_utilsmodule - Provides a simple provider for unit tests
- Implements all required
Providertrait methods
- Located in
-
MockMcpClient (
crates/owlen-core/src/mcp.rs)- Located in
mcp::test_utilsmodule - Provides a simple MCP client for unit tests
- Returns mock tool descriptors and responses
- Located in
Documentation
-
Migration Guide (
docs/migration-guide.md)- Comprehensive guide for migrating from v0.x to v1.0
- Step-by-step configuration update instructions
- Common issues and troubleshooting
- Rollback procedures if needed
-
Updated Configuration Reference
- Removed references to legacy mode
- Clarified MCP server configuration
- Added examples for local and cloud Ollama usage
Bug Fixes
- Fixed test compilation errors due to missing mock implementations
- Resolved ambiguous glob re-export warnings (non-critical, test-only)
Internal Changes
Configuration System
McpSettingsstruct now only serves as a placeholder for future MCP-specific settings- Removed
McpModeenum entirely - Default configuration no longer includes mode setting
MCP Factory
- Simplified factory logic by removing mode branching
- Improved fallback behavior with better error messages
- Test renamed to reflect new behavior:
test_factory_creates_local_client_when_no_servers_configured
Performance
No performance regressions expected. The MCP architecture may actually improve performance by:
- Removing unnecessary mode checks
- Streamlining the client creation process
- Better error handling reduces retry overhead
Compatibility
Backwards Compatibility
Breaking: Configuration files with mode = "legacy" will need to be updated:
- The setting is ignored (logs a warning in future versions)
- User config has been automatically updated if using standard path
Forward Compatibility
The McpSettings struct is kept for future expansion:
- Can add MCP-specific timeouts
- Can add connection pooling settings
- Can add server selection strategies
Testing
All tests passing:
test result: ok. 29 passed; 0 failed; 0 ignored
Key test areas:
- Agent ReAct pattern parsing
- MCP client factory creation
- Configuration loading and validation
- Mode-based tool filtering
- Permission and consent handling
Upgrade Instructions
See Migration Guide for detailed instructions.
Quick upgrade:
-
Update your
~/.config/owlen/config.toml:# Remove the 'mode' line from [mcp] section sed -i '/^mode = /d' ~/.config/owlen/config.toml -
Rebuild Owlen:
cargo build --release -
Test with a simple query:
owlen
Known Issues
- Warning about ambiguous glob re-exports - Non-critical, only affects test builds
- First inference may be slow - Ollama loads models on first use (expected behavior)
- Cloud model 404 errors - Ensure model names match Ollama Cloud's naming (remove
-cloudsuffix from model names)
Contributors
This release completes the Phase 10 migration plan documented in .agents/new_phases.md.
Related Issues
- Closes: Legacy mode removal
- Implements: Phase 10 cleanup and production polish
- References: MCP architecture migration phases 1-10