# Changelog

## Score

- CAI 53 → 55 (+1.5)
- Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

## Lenses

- Code Health 63 → 65 (+2.0)
- Architecture 62 → 69 (+7.4)
- Maturity 67 → 71 (+4.1)
- Readiness 55 → 61 (+6.3)
- Security 61 → 67 (+5.4)
- Event-Driven 100 → 100 (+0.0)
- Event Sourcing 100 → 100 (+0.0)
- Accessibility 44 → 44 (+0.1)
- Performance 60 (new)

## Resolved (1849)

- AgentDriverClient::call_typed_with_timeout_and_cancel (cognitive 21) (crates/dbx-core/src/db/agent_driver.rs)
- AgentDriverClient::call_typed_with_timeout_and_cancel (cyclomatic 16) (crates/dbx-core/src/db/agent_driver.rs)
- AgentManager::collect_driver_store_usage (cognitive 21) (crates/dbx-core/src/agent_manager.rs)
- Analyzer::visit_expr (cyclomatic 24) (crates/dbx-core/src/sql_analysis.rs)
- AppState::get_or_create_pool_for_session_inner (cognitive 160) (crates/dbx-core/src/connection.rs)
- AppState::get_or_create_pool_for_session_inner (cyclomatic 90) (crates/dbx-core/src/connection.rs)
- AppState::insert_connection_pool_inner (cognitive 18) (crates/dbx-core/src/connection.rs)
- AppState::refresh_connections (cognitive 81) (crates/dbx-core/src/connection.rs)
- AppState::refresh_connections (cyclomatic 55) (crates/dbx-core/src/connection.rs)
- AppState::remove_stale_connection_pool (cognitive 50) (crates/dbx-core/src/connection.rs)
- AppState::remove_stale_connection_pool (cyclomatic 52) (crates/dbx-core/src/connection.rs)
- AppState::start_keepalive_task (cognitive 58) (crates/dbx-core/src/connection.rs)
- AppState::start_keepalive_task (cyclomatic 22) (crates/dbx-core/src/connection.rs)
- Change coupling: DataGrid.vue ↔ tabResultCache.ts (apps/desktop/src/components/grid/DataGrid.vue)
- Change coupling: DriverStoreDialog.vue ↔ plugins.rs (apps/desktop/src/components/config/DriverStoreDialog.vue)
- Change coupling: agent_connection.rs ↔ agent_runtime.rs (crates/dbx-core/src/agent_connection.rs)
- Change coupling: columns.rs ↔ tests.rs (crates/dbx-core/src/table_structure_sql/columns.rs)
- Change coupling: connectionPresentation.ts ↔ connection.rs (apps/desktop/src/lib/connection/connectionPresentation.ts)
- Change coupling: connection_secrets.rs ↔ query.rs (crates/dbx-core/src/connection_secrets.rs)
- Change-coupling hub: ConnectionDialog.vue → DatabaseIcon.vue, DatabaseSearchDialog.vue, agent_catalog.rs, connection_secrets.rs, database_capabilities.rs (apps/desktop/src/components/connection/ConnectionDialog.vue)
- …and 1829 more

## New (3377)

- AbstractJdbcAgent.finishPooledRequest (cognitive 16) (agents/common/src/main/java/com/dbx/agent/AbstractJdbcAgent.java)
- AbstractJdbcAgent.finishPooledRequest (cyclomatic 16) (agents/common/src/main/java/com/dbx/agent/AbstractJdbcAgent.java)
- AgentDriverClient::call_typed_with_timeout_and_cancel (cognitive 21) (crates/dbx-driver-agent/src/agent_driver.rs)
- AgentDriverClient::call_typed_with_timeout_and_cancel (cyclomatic 16) (crates/dbx-driver-agent/src/agent_driver.rs)
- AgentManager::collect_driver_store_usage (cognitive 21) (crates/dbx-driver-agent/src/agent_manager.rs)
- Analyzer::visit_expr (cyclomatic 24) (crates/dbx-sql-core/src/sql_analysis.rs)
- AppState::get_or_create_pool_for_session_inner (cognitive 162) (crates/dbx-core/src/connection/mod.rs)
- AppState::get_or_create_pool_for_session_inner (cyclomatic 95) (crates/dbx-core/src/connection/mod.rs)
- AppState::insert_connection_pool_inner (cognitive 18) (crates/dbx-core/src/connection/mod.rs)
- AppState::refresh_connections (cognitive 87) (crates/dbx-core/src/connection/mod.rs)
- AppState::refresh_connections (cyclomatic 60) (crates/dbx-core/src/connection/mod.rs)
- AppState::remove_stale_connection_pool (cognitive 54) (crates/dbx-core/src/connection/mod.rs)
- AppState::remove_stale_connection_pool (cyclomatic 57) (crates/dbx-core/src/connection/mod.rs)
- AppState::start_keepalive_task (cognitive 58) (crates/dbx-core/src/connection/mod.rs)
- AppState::start_keepalive_task (cyclomatic 22) (crates/dbx-core/src/connection/mod.rs)
- BackupSchedule::next_after (cognitive 17) (crates/dbx-core/src/scheduled_backup/models.rs)
- BackupService::cleanup (cognitive 19) (crates/dbx-core/src/scheduled_backup/service.rs)
- BackupService::command (cyclomatic 16) (crates/dbx-core/src/scheduled_backup/service.rs)
- BackupService::export_job (cognitive 101) (crates/dbx-core/src/scheduled_backup/engine.rs)
- BackupService::export_job (cyclomatic 40) (crates/dbx-core/src/scheduled_backup/engine.rs)
- …and 3357 more

## Changes since last survey

- 300 commits — 118 feature/other, 182 fixes

## By area

- apps/desktop — 168 commits
- crates/dbx-core — 31 commits
- agents/drivers — 20 commits
- (root) — 13 commits
- crates/dbx-drivers — 8 commits
- agents/versions.json — 6 commits
- docs/data — 6 commits
- src-tauri/src — 6 commits
- .github/scripts — 5 commits
- crates/dbx-sql-dialect — 4 commits
- crates/dbx-driver-agent — 3 commits
- crates/dbx-driver-mysql — 3 commits
- crates/dbx-plugin-runtime — 3 commits
- docs/content — 3 commits
- crates/dbx-driver-postgres — 2 commits
- crates/dbx-sql-data — 2 commits
- crates/dbx-sql-schema — 2 commits
- packages/app-tests — 2 commits
- (repo) — 1 commit
- .github/workflows — 1 commit

## Notable commits

- fix: fix(agent): install sqlite ssh worker per remote arch from offline zip
- fix: fix(agent): release external Windows process locks
- fix: fix(ai): compact composer controls based on overflow
- fix: fix(ai): improve responsive composer controls
- fix: fix(ai): initialize conversation bindings before default action selection
- fix: fix(cassandra): return materialized view definitions
- fix: fix(cassandra): use cursor pagination for table data and exports
- fix: fix(ci): refresh standalone DuckDB lockfile
- fix: fix(ci): remove unused storage imports breaking clippy gate
- fix: fix(cli): distinguish missing connections table from failed store open
- fix: fix(completion): keep FROM tables across blank lines in one statement
- fix: fix(connection): per-id saves stop cross-client connection clobber
- fix: fix(core): cache resolved secret codec per storage instance
- fix: fix(core): drop needless return in test secret key path
- fix: fix(core): gate default secret key path resolution out of test builds
- fix: fix(core): isolate Linux keyring access from async runtimes
- fix: fix(core): stop no-keyring builds creating the global fallback key
- fix: fix(dameng): reject binary LOB columns in keyless row predicates
- fix: fix(dameng): resolve empty schema via session current schema
- fix: fix(dameng): show declared char/byte length unit in table structure
- …and 280 more
