v0.22.6
What's Changed
- feat: Add SQL Server Connector by @Popplywop in #1
- chore(build): use tsup by @boojack in #2
- chore: update build script by @boojack in #3
- fix: update sql server DSN to match documentation. by @Popplywop in #4
- fix: Fix the path resolution to the production dist folder by @Popplywop in #6
- Fix Password Handling in MySQL DSN Parser by @shmuelb-everc in #17
- Add Maria DB Connector by @Thomas-Matheus in #18
- Adding authentication flag to sqlserver connector. by @AddisonRogers in #19
- refactor: standardize string quotes with a prettier config by @theboringhumane in #25
- feat: implement allowed keywords for SQL queries by @theboringhumane in #24
- feat: add Oracle database support and update documentation by @theboringhumane in #32
- add random string by @cvaldit in #46
- Fix sqlite3 bindings and revert sqlite support by @mtichavsky in #71
- Update README.md by @eransweep in #86
- Update README.md by @eransweep in #87
- feat: separate env by @tianzhou in #98
- feat: introduce —id to de-dupe toolname by @tianzhou in #102
- chore: implement GET / returning empty response by @tianzhou in #104
- chore: add test check on PR by @tianzhou in #109
- refactor: http streamable endpoint from /message to /mcp by @tianzhou in #110
- chore: de-flak mysql/mariadb test by @tianzhou in #111
- feat: support toml config by @tianzhou in #113
- fix: add SQLite connector cloning for multi-source support by @Yax in #116
- chore: docs stub by @tianzhou in #117
- docs: more refinement by @tianzhou in #118
- feat: frontend stub by @tianzhou in #119
- docs: add docs and update logo by @tianzhou in #120
- chore: adding skills by @tianzhou in #121
- chore: fix readme by @tianzhou in #122
- feat: sql server name instance by @tianzhou in #123
- feat: implement connection_timeout by @tianzhou in #124
- feat: add REST API endpoints for data sources by @tianzhou in #125
- feat: implement frontend layout with master-detail structure by @tianzhou in #126
- chore: reduce contextual menu by @tianzhou in #127
- refactor: migrate all connection modes to multi-source architecture by @tianzhou in #128
- chore: remove home tab by @tianzhou in #129
- fix: add postgres connector cloning for multi-source support by @petergithub in #132
- feat: support clone by @tianzhou in #136
- fix: infer database type from DSN protocol in API sources endpoint by @petergithub in #133
- fix: windows absolute path by @tianzhou in #140
- fix: bundle path by @tianzhou in #141
- chore: clarify resource templates by @tianzhou in #142
- fix: only run http server/admin console if --transport http by @tianzhou in #144
- fix: disable SSE streaming in stateless HTTP transport mode by @tianzhou in #145
- feat: parse DSN to populate connection info in API responses by @tianzhou in #147
- refactor: create separate MCP tools per database source by @tianzhou in #148
- refactor: unify —id to source id by @tianzhou in #149
- chore: add config test fixture by @tianzhou in #150
- feat: show tools in admin console by @tianzhou in #151
- chore: tool test by @tianzhou in #152
- feat: request table and API by @tianzhou in #154
- fix: read-only flag by @tianzhou in #155
- feat: readonly by @tianzhou in #156
- feat: search objects tool by @tianzhou in #157
- feat: remove resources/prompts by @tianzhou in #158
- feat: support custom tools by @tianzhou in #159
- fix: docker build by @tianzhou in #163
- chore: optimize docker image size by @tianzhou in #164
- fix: restore SafeURL for DSN parsing with special character passwords by @drake-at-netchex in #166
- chore: print source/tool table upon startup by @tianzhou in #160
- feat: implement tool extension architecture with per-tool configuration by @tianzhou in #168
- fix: display only enabled tools in startup table (#171) by @tianzhou in #176
- feat: add table filter to search_objects tool (#172) by @tianzhou in #177
- feat: use mysql_clear_password for AWS IAM auth by @tianzhou in #180
- feat: implement query_timeout by @tianzhou in #183
- chore: make tool metadata terse to reduce token by @tianzhou in #184
- refactor: simplify tool registration and remove is_default by @tianzhou in #185
- docs: mcp toolbox review by @tianzhou in #186
- docs: supabase mcp review by @tianzhou in #187
- feat: windows auth by @tianzhou in #188
- feat: add sslmode to toml config by @tianzhou in #189
- feat: add missing sql authentication and domain to toml by @tianzhou in #190
- refactor: consolidate buildDSNFromSource calls into ConnectorManager by @tianzhou in #191
- feat: follow .ssh symbolic link by @tianzhou in #192
- feat: multi-hop ssh tunneling by @tianzhou in #193
- docs: ssh tunnel doc by @tianzhou in #200
- feat: gutter by @tianzhou in #201
- feat: improve gutter layout by @tianzhou in #202
- feat: base-ui by @tianzhou in #203
- feat: coss by @tianzhou in #204
- feat: tool detail by @tianzhou in #205
- feat: add SQL query editor and results table for tool detail page by @tianzhou in #206
- feat: run button shortkey by @tianzhou in #207
- feat: improve table result UX by @tianzhou in #208
- feat: move readonly, max rows to tool by @tianzhou in #209
- docs: DBHub design review by @tianzhou in #210
- feat: tool query parameter by @tianzhou in #211
- fix: prepared placeholder replacement by @tianzhou in #212
- feat: return affected row count for INSERT/UPDATE/DELETE by @tianzhou in #213
- feat: multi-tab result by @tianzhou in #215
- feat: sql selection by @tianzhou in #217
- feat: improve request table by @tianzhou in #218
- feat: navigate tab by @tianzhou in #219
- feat: add request log by @tianzhou in #220
- refactor: consolidate tool handler utilities by @tianzhou in #221
- chore: broken-link CI by @tianzhou in #222
- docs: state of MCP Server by @tianzhou in #224
- chore(deps): bump qs from 6.14.0 to 6.14.1 by @dependabot[bot] in #226
- feat: add description field for TOML sources by @tianzhou in #232
- docs: add GitHub Copilot CLI installation instructions by @GeekTrainer in #233
- feat: add lazy database connections by @tianzhou in #235
- Allow non-localhost origins by @nicolabeghin in #239
- fix: use namespace import for mariadb to fix Node.js v24 ESM compatibility by @tianzhou in #242
- Fixes for
search_objectsperformance on large tables under postgres by @ccase-pmlr in #247 - Add search_path support in TOML config for PostgreSQL by @tianzhou in #250
- feat: include table and column comments in schema context for LLMs by @tianzhou in #251
- feat: add function as searchable object type in search_objects by @tianzhou in #252
- feat: add SSH keepalive configuration options by @takemi-ohama in #254
- fix: correct SSH keepalive validation issues by @tianzhou in #255
- fix: dialect-aware SQL parsing for statement splitting and comment stripping by @ccase-pmlr in #256
- feat: add AWS IAM authentication for RDS sources by @fab0492 in #258
- fix: prevent IAM refresh timer race during shutdown by @tianzhou in #260
- feat: hot reload TOML config on file changes by @tianzhou in #261
- feat: add agent skill for proper MCP database querying by @tianzhou in #265
- fix: resolve SSH config from ~/.ssh/config for TOML sources by @tianzhou in #268
- feat: support ${VAR} env variable interpolation in TOML config by @tianzhou in #274
- Fix: prevent readonly bypass via MySQL conditional comments by @tianzhou in #284
- feat: support optional database driver packages by @tianzhou in #286
- Fix: externalize database drivers to prevent dynamic require error by @tianzhou in #291
- Fix: detect mutating keywords inside CTEs in read-only mode by @tianzhou in #275
- Fix: include views in PostgreSQL getTableComment() relkind filter by @tianzhou in #297
- feat: make cloud provider packages optional by @tianzhou in #298
- Quote identifiers in SHOW CREATE PROCEDURE/FUNCTION for MySQL and MariaDB by @lawrence3699 in #299
- feat: support sslmode=verify-ca and sslmode=verify-full with sslrootcert for PostgreSQL by @Elrendio in #294
- fix: surface source description in MCP tool description (#267) by @Isla-Liu in #309
- feat: distinguish tables from views in
search_objectstool by @Extramber in #325 - fix: address review feedback on tables/views split in search_objects by @tianzhou in #326
- feat(sqlserver): surface informational messages (STATISTICS, PRINT) in query results by @esetnik in #307
- refactor: structured SQLResult.messages (DatabaseMessage[]) by @tianzhou in #327
- feat: support configurable HTTP bind host via --host / DBHUB_HOST env by @Isla-Liu in #311
- refactor: extract requireFlagValue helper and rename cross-origin util by @tianzhou in #328
- feat: support timezone option for MySQL/MariaDB in TOML config by @socar-jian in #321
- fix: correct +09:00 timezone integration test assertion by @tianzhou in #329
- feat: migrate SQLite connector to built-in node:sqlite (#317) by @tianzhou in #330
- Fix: enable query plans on SQL Server via EXPLAIN by @tianzhou in #331
- fix: scope search_objects to configured database on MySQL/MariaDB by @tianzhou in #332
- fix: honor and validate source fields set alongside a DSN (#334) by @tianzhou in #337
- perf: trim redundant prose from built-in tool schemas by @tianzhou in #338
- feat: classify connection failures into actionable tool errors (#266) by @tianzhou in #339
- fix: enforce Host allow-list on HTTP transport to block DNS rebinding by @tianzhou in #340
- chore: upgrade from 0.22.4 to 0.22.5 by @tianzhou in #341
- fix: enforce read-only mode at the database engine, not just the keyword classifier by @tianzhou in #342
- chore: upgrade from 0.22.5 to 0.22.6 by @tianzhou in #343
- docs: document engine-level read-only enforcement and least-privilege guidance by @tianzhou in #344
- fix(ssh): resolve ProxyJump aliases recursively with per-hop auth (#347) by @tianzhou in #348
- fix: enforce read-only mode at the engine level for SQL Server by @tianzhou in #350
- feat: support connection charset/collation for MySQL/MariaDB in dbhub.toml by @bitconym in #354
- feat: package DBHub as a Claude Desktop MCP Bundle (.mcpb) by @tianzhou in #356
New Contributors
- @Popplywop made their first contribution in #1
- @boojack made their first contribution in #2
- @shmuelb-everc made their first contribution in #17
- @Thomas-Matheus made their first contribution in #18
- @AddisonRogers made their first contribution in #19
- @theboringhumane made their first contribution in #25
- @cvaldit made their first contribution in #46
- @mtichavsky made their first contribution in #71
- @eransweep made their first contribution in #86
- @tianzhou made their first contribution in #98
- @Yax made their first contribution in #116
- @petergithub made their first contribution in #132
- @drake-at-netchex made their first contribution in #166
- @dependabot[bot] made their first contribution in #226
- @GeekTrainer made their first contribution in #233
- @nicolabeghin made their first contribution in #239
- @ccase-pmlr made their first contribution in #247
- @takemi-ohama made their first contribution in #254
- @fab0492 made their first contribution in #258
- @lawrence3699 made their first contribution in #299
- @Elrendio made their first contribution in #294
- @Isla-Liu made their first contribution in #309
- @Extramber made their first contribution in #325
- @esetnik made their first contribution in #307
- @socar-jian made their first contribution in #321
- @bitconym made their first contribution in #354
Full Changelog: https://github.com/bytebase/dbhub/commits/v0.22.6