Changelog
0.19.1 (2026-08-02)
Bug Fixes
- deps: complete the
go-orav2→v3 migration — the earlier version bumps (#268, #276) only added thev3module requirement without touching any.../v2imports, which left the build broken; this rewrites the Oracle conncheck probe and test suite to importv3and drops the now-unusedv2requirement (#272) (43b1aba) - ui: show full query columns on the home page (#274) (ab7f879)
0.19.0 (2026-07-22)
Features
- auth: add a device authorization flow for API key provisioning, following the OAuth 2.0 Device Authorization Grant (RFC 8628). A CLI or desktop app opens a request (
POST /auth/device), the user approves it in the browser on a consent page (with a manual code-entry fallback), and the app polls the token endpoint (POST /auth/device/token) for adbb_key — no manual copy/paste from the web UI. Approval mints a key owned by the approving user; the key is delivered exactly once and never transits a browser URL, and the flow works over SSH/headless (#269) (5fa16ee). - auth: the login redirect now preserves the originally requested URL, so opening a deep link (such as the device consent page) while logged out returns you to that page after signing in instead of dropping you on the dashboard (#269).
0.18.0 (2026-07-21)
Lands the batch of work accumulated on local main in one squash-merged PR (#266) (421ceae); the individual changes are broken out below.
Features
- user-groups: add user groups with full CRUD — new
user_groupstables plus grant-definition scope columns (migrations + store). - grants: grant definitions can now be scoped to specific user groups and databases, surfaced through the API and a new UI admin page with scope pickers.
- proxy,api,ui: add server connectivity testing — a
POST /servers/{uid}/testendpoint with an opt-in inline check, a staged connectivity check that probes SSH bastions and DB targets (including an Oracle login probe), and a per-server "Test connection" action in the UI with staged feedback.
Bug Fixes
- postgresql: resolve bind-parameter OIDs from
ParameterDescriptionso prepared statements report correct parameter types. - proxy: guard the PostgreSQL, MySQL, Oracle and MongoDB proxy listeners with a mutex to fix an
Addr/Startdata race. - api: make
test_connectionoptional in the database request schemas. - ui: render the breadcrumb separator as a sibling of the item so it aligns correctly.
- docs: silence the
baseUrldeprecation and fix React 19 JSX types in the website typecheck.
0.17.0 (2026-07-18)
⚠ BREAKING CHANGES
- api:
/api/v1/databasesis renamed to/api/v1/servers(and/api/v1/ssh-serversis added for bastion management); no/databasesalias is kept (#262) (7d5008b)
Features
- grants: grant definitions can be flagged
auto_approve— matching requests are instantly approved with no admin decision needed, with a required justification, a Slack notification without action buttons, and a dedicated audit trail (#262) (7d5008b) - ui: inline auto-approve toggle on the grant-definitions table, plus an "approve & enable auto-approve" action on pending grant requests (#262) (7d5008b)
- proxy,store,api,ui: SSH tunnel support for upstream connections across all four proxied protocols (PostgreSQL, Oracle, MySQL, MongoDB) — the
databasestable/model is renamed toservers, gains a self-referencingvia_uidfor SSH bastions, and a shared pooled dialer with host-key TOFU routes upstream connections through the tunnel when configured (#262) (7d5008b) - ui: the "Databases" page becomes
/servers, listing SSH bastions alongside database servers, with create/edit UI for SSH servers;/databasesredirects to/servers(#262) (7d5008b) - api: creating a server, grant definition, or user with a name that already exists now returns
409 DUPLICATE_NAMEinstead of a generic error (#262) (7d5008b) - ui: the query detail breadcrumb now shows the connection it belongs to (#262) (7d5008b)
- api,ui: connections now have a detail page, with connector access properly scoped (#262) (7d5008b)
Bug Fixes
- api: block admin password change in demo mode (#257) (55d6ee1)
- api: silence exhaustive lint on grant-status switch (#260) (83a5e14)
- deps: update module github.com/go-mysql-org/go-mysql to v1.16.0 (#259) (c986832)
- ui: the SSH server create dialog now includes
ssl_mode/listabledefaults in its payload (#262) (7d5008b) - store: the test-mode wipe now also drops the legacy
databasestable (#262) (7d5008b) - ci: pin the
bun-versionused in CI to avoid asetup-bunlatest-tag lookup failure (#262) (7d5008b) - dev:
make devno longer depends onscripts/run-backend-dev.sh(#262) (7d5008b)
0.16.0 (2026-07-14)
Lands the batch of work accumulated on local main in one squash-merged PR (#255) (e6cbeeb); the individual changes are broken out below.
Features
- oracle: upgrade legacy per-key-salt O5LOGON verifiers to the newer per-user-salt format automatically on successful login (#255)
- api,ui: scope the API-key list to the caller's own keys by default, with an admin-only toggle (
all_users) to review other users' keys (#255) - store,api,ui: add a configurable
web_ui_url(falling back tocfg.PublicURL) and split the settings page's single port field into distinct HTTP/TCP listener fields, replacing hard-coded values (#255) - proxy: shared
BuildUpstreamNamehelper encodes the dbbat user name into the upstream connection metadata (application_name/program_name/AUTH_PROGRAM_NM) for PostgreSQL, Oracle, and MySQL (#255) - proxy: shared
LimitGuardenforces grant time/bandwidth limits mid-stream (not only between commands) across PostgreSQL, Oracle, and MySQL (#255) - grants: shared revocation registry — revoking a grant now blocks queries and disconnects live sessions across all three protocols (#255)
- api,ui: global queries list now shows user, database, and connection columns (#255)
- ui: replace the stale "PostgreSQL Proxy" subtitle with generic wording, since dbbat now proxies PostgreSQL, Oracle, MySQL/MariaDB, and MongoDB (#255)
- store,postgresql,oracle,mysql: persist the bytes transferred by a query aborted mid-stream by a grant limit, so byte quotas stay accurate (#255)
- mongodb: full MongoDB wire-protocol proxy (PLAIN-over-TLS + SCRAM upstream auth, command classification/enforcement, query + result logging, API/UI integration, mid-session revoke/quota rejection), plus phase-5 enhancements — stored per-user SCRAM-SHA-256 verifiers, configurable per-database
authSource,loadBalancedsupport,OP_COMPRESSEDcompression, filteredlistDatabases, andgetMorecursor lineage linking (#255)
0.15.5 (2026-07-12)
Bug Fixes
- oracle: migration name collision left users.protocol_data missing; don't mask store errors as user-not-found (#245) (f8e343c)
0.15.4 (2026-07-12)
Bug Fixes
- oracle: per-user O5LOGON salts — any API key works for Oracle login (#243) (2b3e8c0)
- oracle: shared-service-name resolution by grants + dbbat-name connect strings + dotted thin usernames (#242) (430e704)
0.15.3 (2026-07-12)
Implements seven backlog specs in one squash-merged PR (#240) (caa73cb); the individual changes are broken out below.
Features
- ui: query detail breadcrumb now reads
Queries › <sql-preview>— a link back to the queries list plus the first ~40 chars of the SQL — instead of a generic "Details"; the parent crumb now appears on every detail route and a bare UUID no longer collapses to "Details" (#240) - ui: grants list and grant-definitions always show the applied limits (
9 / 100 queries,169.8 MB / 1 GB) with a usage bar, a warning colour ≥80%, destructive ≥100%, and an explicitunlimitedmarker when no limit is set (#240) - api: rename the connection-URL password placeholder
{API_KEY}→{DBBAT_KEY}so it unambiguously names a dbbat-issueddbb_…token (#240)
Bug Fixes
- ui: the grant-definition edit dialog now opens pre-filled with the definition's current values instead of an empty form (which silently blanked the definition on save) (#240)
- ui: the "New Definition" dialog now opens blank on consecutive opens instead of retaining the previously-submitted values (#240)
- oracle: surface grant/auth denials as a clean error — no active grant →
ORA-01045, bad credentials →ORA-01017— instead of tearing the socket down and letting the client report a genericORA-12566/ORA-03113(root cause: the auth-reject frame used legacy TNS framing that v315+ clients misread) (#240) - oracle: rename the misleading
isPrintableASCIIhelper (it only accepted the Oracle identifier set) and fix three latent call sites that truncated dotted usernames or rejected special-character passwords — the same class of bug as #235 (#240)
0.15.2 (2026-07-12)
Features
Bug Fixes
- deps: update docusaurus monorepo to v3.10.2 (#236) (25f4adb)
- oracle: harden Phase 2 rewrite against big-CLR-chunk connect strings (#238) (242bd8c)
0.15.1 (2026-07-10)
Bug Fixes
- ci: prevent shell injection from commit message in image workflow (#233) (a436a05)
- oracle: handle dotted usernames in OCI/sqlplus auth (both phases) (#235) (d822022)
0.15.0 (2026-07-09)
Implements five backlog specs in one squash-merged PR (#230) (42c4e37); the individual changes are broken out below.
Features
- ui: admin user-management UI — edit users and promote/demote admin rights from the users page, guarded so the last admin can't be demoted or deleted (UI lock plus a backend
409on update/delete) (#230)
Bug Fixes
- oracle: make sqlplus / OCI instant client work through the proxy — root-caused the long-standing stall to a malformed wide-encoding AUTH challenge (not the TCP-urgent OOB break probe that was long assumed), fixing four wide-encoding bugs; works even over an OOB-dropping network path (#230)
- config: accept the documented
DBB_SLACK_SIGNING_SECRETenv var for the Slack signing secret, with the legacyDBB_SLACK_NOTIFY_SIGNING_SECRETkept as an accepted alias (canonical wins if both are set) (#230)
Documentation
- document the three Slack interactivity deployment shapes and Socket Mode (
DBB_SLACK_NOTIFY_APP_TOKEN) for gated deployments, plus a startup warning when the inbound endpoint must be reachable from Slack (#230) - document HTTPRoute (Gateway API) exposure on the website and fix the Docusaurus build (#230)
0.14.0 (2026-07-08)
Features
- api: add Slack interactive grant approval (Approve/Deny buttons) (#223) (516d4ca)
- api: add Slack Socket Mode transport for Approve/Deny interactions (#229) (d1d33d4)
Bug Fixes
- deps: update module golang.org/x/crypto to v0.54.0 (#226) (d53ede1)
- deps: update module golang.org/x/text to v0.39.0 (#221) (c10f410)
- deps: update module golang.org/x/text to v0.40.0 (#225) (abf43ff)
0.13.0 (2026-07-05)
Features
- add Gateway API HTTPRoute support to the Helm chart (#218) (1de8a62)
- oracle: modern client support — sqlplus/OCI auth, SQLcl result capture, verifier-18453 (#205) (a9858f6)
- oracle: type-aware row & value capture with describe-record parser and bind extraction (#195) (933a91e)
Bug Fixes
- ci: restore unified dbbat-proxy service (pg+oracle+mysql) (#220) (7bd9aa0)
- deps: update module github.com/jackc/pgx/v5 to v5.10.0 (#190) (d6a86c5)
- deps: update module github.com/knadh/koanf/v2 to v2.3.5 (#187) (88f286e)
- deps: update module github.com/slack-go/slack to v0.24.0 (#184) (c532e11)
- deps: update module github.com/slack-go/slack to v0.25.0 (#191) (b6d2b01)
- deps: update module github.com/slack-go/slack to v0.26.0 (#200) (5d72fc1)
- deps: update module github.com/slack-go/slack to v0.27.0 (#210) (294d902)
- deps: update module github.com/urfave/cli/v3 to v3.10.0 (#201) (02d077e)
- deps: update module github.com/urfave/cli/v3 to v3.10.1 (#211) (76d52b9)
- deps: update module github.com/urfave/cli/v3 to v3.9.1 (#196) (78b61fa)
- deps: update module golang.org/x/crypto to v0.52.0 (#180) (eadd0ba)
- deps: update module golang.org/x/crypto to v0.53.0 (#194) (0566f88)
- deps: update testcontainers-go monorepo to v0.43.0 (#203) (6d9e06f)
0.12.0 (2026-05-15)
Features
Bug Fixes
- dev: fix dev mode routing so DBB_REDIRECTS proxy works without built frontend (#173) (cb945d5)
- ui: fix favicon path and point preview at port 4200 (#175) (863d123)
0.11.0 (2026-05-15)
Features
- db: add listable flag to databases (#166) (c23c179)
- grant definitions, grant requests, Slack notifications, global settings, connection URLs, auth fixes (#168) (5136fc6)
Bug Fixes
- deps: update module github.com/urfave/cli/v3 to v3.9.0 (#163) (3a320b2)
- ui: avoid setState-in-effect in PublicAdvertisementSection (#169) (7c036fb)
0.10.1 (2026-05-11)
Bug Fixes
0.10.0 (2026-05-10)
Features
- grants: grant request workflow with Slack notifications and auto-refresh (#157) (743fe20)
- proxy: PostgreSQL upstream TLS and SCRAM-SHA-256 auth (#154) (196d5cc)
Bug Fixes
- config: default Slack notify channel to #dbbat (#159) (d47eba2)
- deps: update module github.com/knadh/koanf/parsers/toml/v2 to v2.2.1 (#158) (616a10f)
- deps: update module github.com/slack-go/slack to v0.23.1 (#160) (7d732e2)
- deps: update module golang.org/x/crypto to v0.51.0 (#155) (7e04182)
- deps: update module golang.org/x/text to v0.37.0 (#152) (58b3265)
- grants: populate query_count and bytes_transferred + UI polish (#156) (e63de8c)
0.9.0 (2026-05-08)
Features
- oracle: customHash mode in O5LOGON server (#143) (ff1a700)
- oracle: derive combined key for empty-AUTH_PASSWORD path (#148) (ce4bb2c)
- oracle: forward client's actual Phase 1 to upstream (#138) (126caa1)
- oracle: forward client's actual Phase 2 to upstream (#144) (ebc9df1)
Bug Fixes
- oracle: trim AUTH challenge end-marker to 33 bytes (SQLcl unblocks) (#150) (189f011)
- oracle: unbreak upstream auth parser; patch AUTH_SVR_RESPONSE (#136) (db28eb6)
0.8.0 (2026-05-06)
Features
Bug Fixes
- api: fold accents in Slack OAuth username generation (#130) (08b7fd7)
- oracle: use user_id_len for structured Phase 1 username parsing (#134) (5593564)
0.7.0 (2026-05-06)
Features
- proxy: add MySQL/MariaDB proxy with caching_sha2_password and TLS (#112) (b916818)
- proxy: harden MySQL upstream against LOCAL INFILE + verify binary row capture (#115) (4a17b6f)
- proxy: Oracle terminated auth — go-ora end-to-end working (#118) (3a27833)
- proxy: wire up MySQL session packet dumps (#116) (f7a81b8)
Bug Fixes
- deps: update docusaurus monorepo to v3.10.1 (#122) (102bd08)
- deps: update module github.com/go-mysql-org/go-mysql to v1.15.0 (#128) (ad6b2a3)
- deps: update module github.com/go-sql-driver/mysql to v1.10.0 (#132) (14be368)
- deps: update module github.com/jackc/pgx/v5 to v5.9.2 (#108) (b837285)
- proxy: keep relay socket through AUTH so SQLcl avoids ORA-03120 (#129) (a23c060)
0.6.0 (2026-04-15)
Features
0.5.2 (2026-04-14)
Bug Fixes
0.5.1 (2026-04-14)
Bug Fixes
0.5.0 (2026-04-14)
Features
- proxy: API key auth for PG proxy, Oracle auth, and Oracle SERVICE_NAME handling rewrite (#79) (83858a1)
Bug Fixes
- deps: update dependency zod to v4 (#91) (c92061a)
- deps: update docusaurus monorepo to v3.10.0 (#89) (a6c417c)
- deps: update module golang.org/x/crypto to v0.50.0 (#93) (13a91fa)
- deps: update testcontainers-go monorepo to v0.41.0 (#88) (79fecd7)
- deps: update testcontainers-go monorepo to v0.42.0 (#94) (9977e30)
0.4.0 (2026-04-04)
Features
- proxy: Add a first draft of Oracle support (#75) (908abbb)
- proxy: Oracle session TNS dump capture (#78) (7e0b45a)
Bug Fixes
- ci: autoupdate (#57) (bb9b9ad)
- deps: update dependency openapi-fetch to ^0.16.0 (#68) (567412d)
- deps: update module github.com/knadh/koanf/v2 to v2.3.2 (#59) (9b57552)
- deps: update module golang.org/x/crypto to v0.48.0 (#69) (ff7856b)
- resolve test races, E2E error format, and lint issues (#77) (c95b303)
0.3.0 (2026-01-24)
Features
- api: add admin password reset endpoint (#51) (529fc92)
- ui: add quota fields to grant creation form (#49) (626fa90)
Bug Fixes
- deps: update dependency lucide-react to ^0.563.0 (#48) (e7ca0b6)
- deps: update module github.com/knadh/koanf/v2 to v2.3.1 (#52) (8b26ec9)
- deps: update module github.com/urfave/cli/v3 to v3.6.2 (#46) (32684fe)
- reduce argon2id memory and protect admin in demo mode (#50) (fc90f6d)
- test: remove flaky toBeDisabled assertions in E2E tests (#54) (2dc8e1a)
0.2.0 (2026-01-13)
Features
Bug Fixes
- deps: update module github.com/knadh/koanf/parsers/toml to v2 (#35) (7c56f99)
- deps: update module github.com/knadh/koanf/parsers/toml to v2 (#37) (767bcc8)
- deps: update module github.com/knadh/koanf/providers/env to v2 (#38) (bfe821c)