What's Changed
- Add vitest coverage for client/src/contexts/ (#113) by @dpage in #119
- tests: collector utils, config, and pure-function coverage (partial #107) by @dpage in #120
- tests: alerter LLM providers coverage (#108) by @dpage in #121
- Add unit tests for client utility modules by @dpage in #122
- Add tests for client hooks by @dpage in #126
- Add tests for client dialogs, Chat panel, and shared components by @dpage in #125
- Add tests for server memory/MCP/chat packages by @dpage in #130
- Add tests for client Dashboard components by @dpage in #127
- Require 90% test coverage floor in CLAUDE.md and sub-agent briefs by @dpage in #131
- Add tests for client AdminPanel components by @dpage in #129
- Add comprehensive unit tests for alerter engine package (#109) by @dpage in #124
- Reject cors_origin "*" at startup when auth is enabled (#81) by @dpage in #132
- Migrate listConnections to VisibleConnectionIDs and delete the ambiguous helper by @dpage in #133
- Add tests for server tools package by @dpage in #128
- Hoist RBAC checks above datastore calls (#67) by @dpage in #134
- Migrate to golangci-lint v2 and fix surfaced findings (#66) by @dpage in #136
- Add tests for shared packages (pkg/) by @dpage in #123
- Refactor ClusterNavigator group ID flow to keep string format (#63) by @dpage in #135
- Improve Ellie database context awareness and per-database cache hit ratio by @dpage in #140
- Fix flaky ServerDialog tests that time out on Node.js 20 by @dpage in #142
- Fix dashboard graph overflow when chat panel is open by @dpage in #143
- Remove legend from tile graphs (#139) by @dpage in #144
- Enforce token connection scope on session-based MCP access by @dpage in #145
- Clean up unused code in alerter (#82) by @dpage in #146
- Fix wildcard resolution in MCP and admin scope intersection (#96) by @dpage in #147
- Fix walkthrough scripts for macOS bash 3.2 and LLM reconfiguration by @AntTheLimey in #148
- Consolidate duplicated server traversal functions into clusterHelpers (#80) by @dpage in #150
- Decompose oversized Go files (#75) by @dpage in #149
- Extract shared BaseAnalysisDialog from analysis dialog components (#80) by @dpage in #154
- Fix locale-dependent date assertions in client tests by @dpage in #155
- Decompose oversized React components into modular directories (#80) by @dpage in #156
- Fix clipboard copy in token dialog (#71) by @dpage in #158
- Eliminate duplicated code in collector probes (#76) by @dpage in #157
- Fix dismissed auto-detected clusters reappearing in topology (#36) by @dpage in #159
- Extract shared CRUD pattern from admin notification channels (#80) by @dpage in #160
- Decompose AdminTokenScopes and TopologyPanel into focused sub-components (#80) by @dpage in #162
- Decompose useChat hook and fix key={index} anti-patterns (#80) by @dpage in #163
- Centralize console.error calls behind a logging utility (#165) by @dpage in #167
- Replace Record<string, unknown> with typed Selection discriminated union (#164) by @dpage in #169
- refactor: eliminate duplicated server code (#77) by @dpage in #168
- Split context files into separate provider and hook modules (#166) by @dpage in #170
- chore(client): clear ~600 Codacy findings via Biome + ESLint auto-fix by @dpage in #175
- chore(client): clear @typescript-eslint/no-confusing-void-expression by @dpage in #176
- chore(client): upgrade vite 8.x, vitest 4.x, happy-dom 20.9 by @dpage in #178
- fix: add listen_addresses and missing export to compose files by @AntTheLimey in #179
- fix(server): honor config file data_dir setting by @dpage in #181
- test: raise coverage in crypto + memory and add -race to Go Makefiles (#78) by @dpage in #183
- refactor(server): consolidate duplicated code patterns (#77) by @dpage in #184
- fix(collector): filter probe configs by scope and inherit is_enabled (#151) by @dpage in #189
- fix(server): preserve grandchildren and correct IsExpandable in topology trees by @dpage in #190
- fix(server): replace auto-detected relationship set transactionally by @dpage in #191
- test(collector): add probe tests to reach 90% coverage (#106) by @dpage in #192
- fix(client): prevent blank UI when LLM summary is non-string (#182) by @dpage in #186
- fix: align password policy with NIST SP 800-63B (#177) by @dpage in #193
- fix(client): wrap Ask Ellie markdown tables in horizontal scroll container by @dpage in #194
- fix: redact notification channel secrets from API responses by @dpage in #196
- fix(client): stop Ask Ellie loop when user has no MCP privileges by @dpage in #197
- fix: reorder config and secret file lookup precedence (#195) by @dpage in #198
- Add Spock exception and conflict alerts (#200) by @dpage in #202
- fix(server): return distinct message when user has no connection access by @dpage in #204
- fix(client): use ESM imports for MUI icons and echarts-for-react by @dpage in #205
- refactor(db): extract scanAll[T] helper for query scaffolding by @dpage in #210
- refactor(client): extract ScopedOverridesPanel by @dpage in #208
- refactor(api): extract generic handler scaffolding by @dpage in #211
- refactor(client): extract Admin* CRUD panel pattern by @dpage in #209
- fix(server,client): gate cluster mutations on manage_connections (#207) by @dpage in #217
- fix(client): unify non-Error fallback wording across Admin panels (#212) by @dpage in #218
- fix(client): guard useCrudPanel refresh against stale results by @dpage in #222
- fix(client): unambiguous runMutation result (#214) by @dpage in #223
- fix(client): decouple useCrudPanel busy flag from errorTarget (#216) by @dpage in #225
- fix(client): suppress useCrudPanel success toast when refresh fails (#215) by @dpage in #226
- fix(server): guide Ellie to use spock_output plugin name (#220) by @dpage in #229
- fix(alerter): fire replication_slot_inactive alert (#224) by @dpage in #228
- fix(alerts): restore button HTTP 500 and auto-reactivation panic (#227) by @dpage in #230
- perf(collector): datastore schema and probe efficiency improvements (#219) by @dpage in #231
- fix(client): prevent copy/run icons overlapping SQL text (#221) by @dpage in #232
- feat(e2e): add Playwright smoke-test suite with 3-browser CI matrix by @dpage in #236
- docs: require TLS-terminating reverse proxy for network deployments (#234) by @dpage in #237
- perf(tests): speed up test-all by ~65% (10m49s → 3m49s) by @dpage in #239
- ci(client): run coverage on both Node 22 and 24 to A/B timing by @dpage in #241
- fix(server,client): gate remaining connection mutations on manage_connections (#207 follow-up) by @dpage in #240
- fix(client): add friendly titles for anomaly metrics and v3 alert rules by @dpage in #244
- fix(client): derive replication type from auto_cluster_key in cluster settings by @dpage in #243
- fix(server): soft-dismiss empty auto-detected cluster after DeleteConnection by @dpage in #245
Full Changelog: v1.0.0-beta1...v1.0.0-beta2