github pgEdge/ai-dba-workbench v2.0.0-beta1

pre-release34 minutes ago

What's Changed

  • Updates release workflow to build native packages and push to repos by @maqeel75 in #298
  • package cells: native arm64 runners to avoid QEMU ldconfig segfault by @maqeel75 in #299
  • Update binary_install.md by @paul-pgedge in #310
  • chore(deps): bump softprops/action-gh-release from 3.0.0 to 3.0.1 by @dependabot[bot] in #305
  • chore(deps): bump actions/cache from 5.0.5 to 6.0.0 by @dependabot[bot] in #306
  • chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #307
  • ci(walkthrough): fix smoke test failing on empty LLM key by @dpage in #311
  • Remove runtime pgedge-ai-kb dependency by @maqeel75 in #316
  • Adds ubuntu resolute in platforms list by @maqeel75 in #338
  • Fix metrics API returning empty response on NaN/Inf samples by @susan-pgedge in #339
  • Fix blank object dashboards: add latest-row metrics query mode by @susan-pgedge in #340
  • Fix flaky E2E failure from collector schema-migration poll race by @susan-pgedge in #341
  • chore(deps): bump docker/build-push-action from 7.2.0 to 7.3.0 by @dependabot[bot] in #333
  • chore(deps): bump docker/setup-qemu-action from 4.1.0 to 4.2.0 by @dependabot[bot] in #334
  • Fix blank Activity Charts: add per-second rate and dead-tuple-ratio metrics by @susan-pgedge in #342
  • docs(examples): document supported embedding providers in server sample by @susan-pgedge in #312
  • Reorganise admin guide into Managing Users and Permissions by @susan-pgedge in #300
  • chore(deps): bump actions/setup-go from 6.4.0 to 6.5.0 by @dependabot[bot] in #320
  • chore(deps): bump actions/setup-python from 6.2.0 to 6.3.0 by @dependabot[bot] in #321
  • chore(deps): bump actions/cache from 6.0.0 to 6.1.0 by @dependabot[bot] in #322
  • fix(embedding): store embeddings as halfvec(4000) for all providers by @dpage in #295
  • Migrate all LLM interface code to pgedge-go-llm-lib v0.1.0 (Phases B-E) by @dpage in #297
  • fix(chat): stop emitting pg_stat_bgwriter.buffers_backend on PG17+ by @dpage in #314
  • docs(config): update knowledgebase database_path for pgedge-ai-kb by @dpage in #315
  • fix(client): show group-inherited admin privileges on the Users tab by @dpage in #317
  • feat(cli): add -group-description flag for creating groups by @dpage in #318
  • chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #358
  • chore(deps): bump docker/login-action from 4.2.0 to 4.4.0 by @dependabot[bot] in #357
  • chore(deps): bump docker/metadata-action from 6.1.0 to 6.2.0 by @dependabot[bot] in #356
  • chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 by @dependabot[bot] in #355
  • chore(deps): bump docker/setup-buildx-action from 4.1.0 to 4.2.0 by @dependabot[bot] in #354
  • Fix missing Table Size and Index Size on object dashboards by @susan-pgedge in #343
  • Fix Estate dashboard panels getting stuck on "No data" after a transient failure by @susan-pgedge in #344
  • fix(rbac): preserve specific connection grants when granting All Connections by @dpage in #319
  • Fix latest-row metrics query returning stale historical data by @susan-pgedge in #352
  • Fix Index Scan Activity chart always showing no data by @susan-pgedge in #353
  • Fix blank Database Summaries chart for databases with no history yet by @susan-pgedge in #361
  • Fix cache hit ratio graph not rendering for flat time series by @susan-pgedge in #359
  • Fix ghost database cards persisting after a database is dropped by @susan-pgedge in #363
  • feat(cli): surface group admin permissions and members in the CLI by @dpage in #324
  • fix(cluster-groups): populate and persist description and share flag by @dpage in #325
  • chore(collector): harden shutdown diagnostics, timeouts and compose (#308) by @dpage in #326
  • fix(client): resolve connection names in admin privilege chips by @dpage in #327
  • fix(client): clarify token scope "All" label as owner-scoped by @dpage in #328
  • fix(server): reject blank connection password on update by @dpage in #332
  • fix(client): normalise tool schemas to the library's wire contract by @moizpgedge in #372
  • fix(chat): teach Ellie to restart Workbench components, not pgwatch by @dpage in #330
  • chore(deps): bump actions/setup-python from 6.3.0 to 7.0.0 by @dependabot[bot] in #374
  • chore(deps): bump docker/login-action from 4.4.0 to 4.5.2 by @dependabot[bot] in #375
  • chore(deps): bump actions/setup-go from 6.5.0 to 7.0.0 by @dependabot[bot] in #376
  • chore(deps): bump softprops/action-gh-release from 3.0.1 to 3.0.2 by @dependabot[bot] in #377
  • docs: add SECURITY.md by @AntTheLimey in #431
  • chore(deps): bump softprops/action-gh-release from 3.0.2 to 3.0.3 by @dependabot[bot] in #434
  • chore(deps): bump docker/setup-qemu-action from 4.2.0 to 4.3.0 by @dependabot[bot] in #436
  • chore(deps): bump docker/setup-buildx-action from 4.2.0 to 4.3.0 by @dependabot[bot] in #432
  • chore(deps): bump docker/login-action from 4.5.2 to 4.6.0 by @dependabot[bot] in #392
  • Add regression tests documenting alerter defects by @dpage in #410
  • Stop metric_staleness alerts firing and clearing in a loop by @dpage in #412
  • chore: give sub-agents Skill access and fix stale KB listings by @dpage in #415
  • Remove the C1 audit tests that #405 superseded by @dpage in #443
  • deps: bump pymdown-extensions to 11.0.2 by @katsugtgz in #426
  • fix(metrics): build the bucket series in FROM, not the select list by @vyruss in #433
  • Replace blackout status icon with FrontHandSharp by @susan-pgedge in #393
  • fix(server): widen memory embedding test fixture to halfvec(4000) by @dpage in #382
  • Remove dead code identified by reachability analysis by @dpage in #395
  • Fix five built-in alert rules that could never fire by @dpage in #418
  • docs(config): document monitored-database user privileges by @dpage in #380
  • ci: run Postgres services on pgvector images so vector-gated tests actually execute by @dpage in #383
  • Remove dead code that needed test edits rather than deletions by @dpage in #397
  • Hide the Workbench's own datastore queries from Top Queries by @dpage in #390
  • feat(dashboard): paginate Top Queries and filter it by database by @dpage in #379
  • Clean up Claude Code configuration and enforce the coverage floor by @dpage in #444
  • Stop test and coverage targets killing developer processes by @dpage in #446
  • Split the connections chart into a gauge and a counter by @dpage in #417
  • Repoint handler tests at the WithSecurity constructors by @dpage in #396
  • fix(server): use Gemini embeddings in knowledgebase search by @dpage in #378
  • Stop the AuthHandler login rate limiter on shutdown by @dpage in #398
  • Time partition retention from its last run, not from process start by @dpage in #442
  • Add custom time-range selection for graphs and the event timeline by @dpage in #388
  • Guard against non-explainable statements in the Query Plan panel by @dpage in #385
  • Fix two dashboard charts that plotted the wrong data by @dpage in #416
  • feat(dashboard): add connection monitoring grouped by user, client, and database by @dpage in #391
  • fix(llm): honour configured max_tokens on AI analysis paths by @dpage in #411
  • Removes bullseye from supported platform list by @maqeel75 in #452
  • Distinguish an explicitly passed flag from its default value by @dpage in #419
  • Move to Go 1.26.8 and clear reachable dependency vulnerabilities by @dpage in #394
  • Plot rates and per-interval deltas instead of raw counters by @dpage in #449
  • feat(dashboard): surface additional query metrics in the drill-down by @dpage in #386
  • Compute cache hit ratios from per-interval deltas by @dpage in #450
  • Standardise deferred pgx Rollback() calls on a non-cancelable context by @dpage in #420
  • Untrack the committed collector binaries (#447) by @dpage in #463
  • Give the AdminTokenScopes test file a load-tolerant timeout by @dpage in #460
  • Echo Gemini thought signatures back on Ask Ellie tool calls by @dpage in #456
  • Centralise LLM chat request construction in the client by @dpage in #451
  • Detect a missing collector config file through the wrapped error (#421) by @dpage in #461
  • Fix rate derivation defects in the metrics query layer by @dpage in #457
  • Count deadlocks and temp files per hour in the alerter, enforce required_extension, retire table_bloat_ratio by @dpage in #455
  • Roll back the StoreMetrics transaction on the INSERT failure path by @dpage in #487
  • Format and staticcheck-clean pkg/, and gate it in CI by @dpage in #488
  • Plot one real filesystem in the Disk Space chart and KPI tile by @dpage in #496
  • Detect pg_stat_statements columns through the search path by @dpage in #464
  • Attribute a client address to a query in the drill-down (#384) by @dpage in #468
  • Report the queried time window from the metrics query endpoint by @dpage in #494
  • Key the feature-detection cache per database, and stop the silence by @dpage in #493
  • Stagger past-due probes at startup and cap probe concurrency by @dpage in #495
  • Collect and chart an estimated available memory figure by @dpage in #492
  • Stop treating missing metric data as a resolved alert condition (#407) by @dpage in #462
  • Remove the embedding model allow-list by @dpage in #491
  • Prefer time-aware baselines and scope anomaly detection by database by @dpage in #489
  • Add Telegram as an alert notification channel (#475) by @dpage in #476
  • Add OIDC login with group mapping (#261, phases 0 and 1) by @dpage in #474
  • Aggregate top queries over the selected time window (#387) by @dpage in #481
  • Add an audit log for RBAC operations by @dpage in #470
  • Move the alerter's default Gemini reasoning model to gemini-3.6-flash by @dpage in #507
  • Fix the client typecheck errors and gate tsc in CI by @dpage in #510
  • Fix empty sparkline canvas in Database Summaries by @dpage in #511
  • Hold a staleness alert open when its probe goes unavailable (#465) by @dpage in #509
  • Slim CLAUDE.md and move its reasoning next to the code by @dpage in #516
  • Difference transaction counters per database in the performance summary by @dpage in #515
  • Add Top Queries to the Database Dashboard by @dpage in #514
  • Keep the account lockout default when the config file omits the key by @dpage in #518
  • Follow the time selector in the summary panels (#387) by @dpage in #517
  • Correct the alerter metric and alert rule documentation by @dpage in #513
  • Replace the stale collector migration list with a pointer to the code by @dpage in #523
  • Scope the CREATE TABLE convention to notification_channels by @dpage in #527
  • Close alerts on a server that is no longer monitored by @dpage in #533
  • Stop webhook URLs leaking into logs and notification history by @dpage in #536
  • Surface the authentication source of every account by @dpage in #537
  • Cap the length of connection_ids and batch the client's requests by @dpage in #531
  • Key the RBAC audit log's hash chain with the server secret by @dpage in #529
  • Correct how the schema tests pick a database in the collector guide by @dpage in #526
  • Alert when a probe stops being available (#512) by @dpage in #534
  • Pass the audit key in the tests that predate it by @dpage in #545
  • Make every built-in tool switch actually take effect by @dpage in #524
  • Bump docker/setup-qemu-action from 4.3.0 to 4.4.0 by @dependabot[bot] in #541
  • Bump docker/setup-buildx-action from 4.3.0 to 4.4.1 by @dependabot[bot] in #542
  • Bump docker/build-push-action from 7.3.0 to 7.4.0 by @dependabot[bot] in #543
  • Fix a missing connection description breaking the connection list by @dpage in #546
  • Update retired and outdated default LLM models by @dpage in #550
  • Report database-summaries query failures instead of an empty success by @dpage in #547
  • Leave system schemas out of the table and index leaderboards by @dpage in #548
  • Cap open collector connections per monitored server by @dpage in #549
  • Honour an explicit llm.temperature of 0 by @dpage in #552
  • Bump soupsieve to 2.10 and click to 8.3.3 by @katsugtgz in #557
  • Resolve top-queries statement database from its dbid by @dpage in #554
  • Escape alert text for Slack and Mattermost markup by @dpage in #586
  • Require a superuser to change superuser status; return store refusals as 400 by @dpage in #553
  • Skip paid Tier 2/3 anomaly calls when the alert would be discarded by @dpage in #570
  • Make OIDC login states single-use and rate-limit the start endpoint by @dpage in #555
  • Make the RBAC checker fail closed without an auth store by @dpage in #560
  • Treat a nil RBAC checker as deny everywhere by @dpage in #564
  • Make SetConnectionSharingLookup a no-op on a nil checker by @dpage in #573
  • Alerter: don't create anomaly candidates that could never raise an alert by @dpage in #578
  • Refuse OIDC behind a proxy with no trusted_proxies unless opted out by @dpage in #562
  • Skip re-evaluating acknowledged alerts whose inputs are unchanged by @dpage in #580
  • Stop connection-scoped tools revealing connections the caller cannot see by @dpage in #574
  • Stop collector tests leaking pools and databases by @dpage in #558
  • Alerter: stop anomaly candidates accumulating after a reload that disables Tier 2 and Tier 3 by @dpage in #583
  • Raise a system alert when a failing provider degrades anomaly detection by @dpage in #584
  • Count only client backends in pg_stat_activity anomaly baselines by @dpage in #569
  • Catch audit log head deletion and check schema definitions by @dpage in #556
  • Give connection deletes their own budget; raise pool_max_conns default to 20 by @dpage in #559
  • Alerter: count an unparseable Tier 3 or re-evaluation verdict as a provider failure by @dpage in #597
  • Apply the datastore password read from -db-password-file by @dpage in #598
  • Classify EXPLAIN by the statement it explains, and escape the database override by @dpage in #538
  • Alerter: exclude max_connections and inactive_count from anomaly baselines by @dpage in #579
  • Bind an API token's scope to its owner, superusers included by @dpage in #528
  • Check a user's superuser status inside the update and delete transactions by @dpage in #604
  • Make connection access and visibility agree on wildcard grants by @dpage in #606
  • Alerter: raise the provider health alert on a steady failure rate by @dpage in #603
  • Alerter: use the max_connections in force for the latest utilisation sample by @dpage in #602
  • Audit log: coalesce and cap failure events by @dpage in #563
  • Collector: stop reporting Spock as missing on quiet clusters by @dpage in #613
  • Decline -delete-user unless the confirmation is an explicit yes by @dpage in #609
  • Validate Ellie's generated SQL before offering it as runnable by @dpage in #535
  • Bump urllib3 to 2.8.0 and idna to 3.15 in requirements.txt by @katsugtgz in #601
  • Add a replication slot health panel to the server dashboard by @dpage in #600
  • Apply the OIDC login policy on configuration reload by @dpage in #599
  • Clear anomaly alerts once their metric recovers by @dpage in #618
  • Require sustained samples to raise and clear threshold alerts by @dpage in #620
  • Batch alerter retention deletes and index anomaly candidate references by @dpage in #621
  • Retune default alert rules that fire on healthy servers by @dpage in #622
  • Check a token owner's superuser status inside the transaction by @dpage in #610
  • Fix the replay_lag_seconds alert metric query by @dpage in #636
  • Fix flaky TestPoolManager_CapHoldsUnderConcurrency by @dpage in #630
  • Alerter: send re-evaluation requests with a clear/keep system prompt by @dpage in #632
  • Baseline four more metrics for anomaly detection by @dpage in #637
  • Count deadlocks and temp files baselines within each hour by @dpage in #641
  • Report slow_query_count once per server by @dpage in #642
  • Flush coalesced RBAC denials on shutdown and at cleanup by @dpage in #634
  • Scroll to the start of a long Ellie reply by @dpage in #631
  • Detect a truncated audit tail with sqlite_sequence rewritten by @dpage in #565
  • Audit blackout, override and cluster-group refusals by @dpage in #633
  • Fix list_probes hiding probes and listing partitions by @dpage in #653
  • Bump actions/download-artifact from 8.0.1 to 8.0.2 by @dependabot[bot] in #657
  • Bump actions/upload-artifact from 7.0.1 to 7.0.2 by @dependabot[bot] in #656
  • Bump actions/setup-node from 7.0.0 to 7.1.0 by @dependabot[bot] in #655
  • Stop anomaly detection flagging trivial values by @dpage in #619
  • Alerter: optional decision model for Tier 3 classification by @dpage in #654
  • Make query_datastore structured and scoped to visible connections by @dpage in #638
  • Cap the client address in the failed-request audit key by @dpage in #665
  • Fix Ask Ellie tool calls failing with OpenAI by @dpage in #689
  • Quote untrusted text in the alerter's LLM prompts by @dpage in #684
  • Check connection visibility on the probe-config read routes by @dpage in #660
  • Confine token creation and widening to the caller's own tokens by @dpage in #661
  • Treat SELECTs that call side-effecting functions as writes by @dpage in #659
  • Hide cluster groups the caller cannot see from update and delete by @dpage in #666
  • Add a Run button to SQL blocks in Ellie's chat replies by @dpage in #624
  • Store pg_hba.conf lines PostgreSQL cannot parse, and mask HBA secrets by @dpage in #685
  • Redact passwords in collected settings and statement text by @dpage in #658
  • Raise the server test timeout to 20 minutes by @dpage in #713
  • Wait for in-flight requests before the shutdown audit flush by @dpage in #664
  • Reset monitored-database sessions when a pooled connection is released by @dpage in #715
  • Make query_database read-only and drop its connection-string path by @dpage in #692
  • Mask credentials in the latest metrics endpoints by @dpage in #671
  • Mask connection_error in list_connections and the cluster topology by @dpage in #697
  • Redact the arguments of collected shell-command settings by @dpage in #693
  • Admit API tokens on connection handlers and delete connections in the background by @dpage in #688
  • Make a missing and a hidden connection cost the same to refuse by @dpage in #699
  • Audit connection-access refusals on the read and action routes by @dpage in #701
  • Audit refusals for missing admin permissions by @dpage in #667
  • Answer hidden override scopes and alerts as missing on write by @dpage in #687
  • Audit connection-access and system-memory refusals by @dpage in #703
  • Check connection visibility on the cluster relationship routes by @dpage in #702
  • Check visibility of what cluster writes point at by @dpage in #700
  • Apply one visibility rule to empty cluster groups by @dpage in #717
  • Hide connections a manager cannot see from update and delete by @dpage in #720
  • Raise the server coverage ratchet to 91.8 by @dpage in #725
  • Audit MCP tool and connection access refusals by @dpage in #721
  • Wait for the sleeper's query_id in the activity probe test by @dpage in #727
  • List a server's databases when one is dropped mid-query by @dpage in #729
  • Lex statement text as stored in query_datastore by @dpage in #730
  • Require store_system_memory to pin, unpin or delete a system memory by @dpage in #722
  • Drop a moved connection's relationships in its old cluster by @dpage in #718
  • Refuse cluster and group override writes over hidden members by @dpage in #731
  • Generate Tier 3 reasoning on demand for decision-model anomaly alerts by @dpage in #733
  • Redact supplied secrets on both sides of format-character deletion by @dpage in #736
  • Install the repo client certificate before configuring the pgEdge repos by @maqeel75 in #734
  • Fix shadow-view probe tests under -count>1 by @dpage in #737
  • Drop a connection's old relationships when auto-detection moves it by @dpage in #738
  • Follow the reloaded group_map in federated group protections by @dpage in #739
  • Check member visibility on cluster and group blackouts by @dpage in #740
  • Require every connection for estate-wide configuration writes by @dpage in #746
  • Audit the privilege changes a federated login makes by @dpage in #745
  • Configure reasoning effort, prompt caching and extra request fields by @dpage in #750
  • Apply custom LLM headers from the server configuration file by @dpage in #756
  • End federated sessions and tokens when the identity provider stops vouching by @dpage in #749
  • Bump docker/login-action from 4.6.0 to 4.7.0 by @dependabot[bot] in #752
  • Bump actions/setup-python from 7.0.0 to 7.1.0 by @dependabot[bot] in #753
  • Audit federated provisioning, linking and unlinking by @dpage in #751
  • Add column sorting and a text filter to Top Queries by @dpage in #760
  • Give the connection-scope token tests a load-tolerant timeout by @dpage in #780
  • Stop the shutdown tests racing an abandoned closer by @dpage in #781
  • Share the scratch-database test helper across server packages by @dpage in #782
  • Add a baseline comparison view to the server dashboard by @dpage in #761
  • Bound the anomaly comparison's inner scan above by @dpage in #783
  • Drop trust in the compromised eMudhra CAs (CVE-2026-111943) by @dpage in #747
  • Upgrade the client image CA bundle to drop the distrusted eMudhra root by @maqeel75 in #787
  • Refuse a package upgrade whose server config the new server rejects by @dpage in #785
  • Document upgrading from 1.0.0 to 2.0.0 by @dpage in #786
  • Fix Codacy security findings in Go dependencies and code by @dpage in #797
  • Keep the Users list when a row action is refused by @dpage in #793
  • Move the Go service images to Alpine and refresh client packages by @dpage in #798
  • Fix the shutdown-drain overview stream test flake by @paul-pgedge in #799
  • Store the metrics tables in pgEdge ColdFront when configured by @paul-pgedge in #789
  • Run the server's metrics queries on pgEdge ColdFront by @paul-pgedge in #790
  • Run the alerter's metrics queries on pgEdge ColdFront by @paul-pgedge in #791
  • Document storing metrics in pgEdge ColdFront by @paul-pgedge in #792
  • Pin the E2E jobs to the Ubuntu 24.04 runner by @dpage in #828
  • Keep chart tick labels distinct and tooltip values precise by @dpage in #818
  • Describe the query drill-down tiles as they actually ship by @dpage in #816
  • Show "All databases" in the Top Queries database filter by @dpage in #813
  • Tell the LLM features which database they inspect by @dpage in #819
  • Include alert activity in the AI Overview recent events by @dpage in #812
  • Round fractional byte values on the WAL Bytes tile by @dpage in #815
  • Label every server in the Comparative Metrics bar charts by @dpage in #821
  • Offer Cluster blackout scope for auto-detected clusters by @dpage in #823
  • Rate-limit AI Overview generations per user by @dpage in #826
  • Colour Vacuum Status dead ratio by the ratio and hide system tables by @dpage in #824
  • Update pgedge-go-llm-lib to v1.0.0 by @dpage in #829
  • Stop the AI Overview card waiting forever on its skeleton by @dpage in #820
  • Make probe configuration changes reach monitored servers by @dpage in #817
  • Report Top queries per statement and database by @dpage in #825
  • Show the latest server info on the status panel card by @dpage in #814
  • Bump docker/login-action from 4.7.0 to 4.8.0 by @dependabot[bot] in #830
  • Bump softprops/action-gh-release from 3.0.3 to 3.0.4 by @dependabot[bot] in #831
  • Release 2.0.0-beta1 by @dpage in #832

New Contributors

Full Changelog: v1.0.0...v2.0.0-beta1

Don't miss a new ai-dba-workbench release

NewReleases is sending notifications on new releases.