Releases: OtterMind/Chat2DB
Release list
Chat2DB Community 5.3.4
Chat2DB Community 5.3.4 expands database coverage and improves result editing, workspace navigation, desktop window behavior, and everyday stability.
Added (5)
Adds configuration-driven JDBC database support, MySQL ENUM and SET result editors, and datasource identity colors with SQL editor watermarks.
- feat: universal JDBC support — add 10 databases through configuration only by @Chat2DB-Pro in #2633
- feat: add 13 databases through configuration only (domestic + DBeaver parity) by @Chat2DB-Pro in #2644
- feat: add 12 more databases through configuration only by @Chat2DB-Pro in #2648
- feat(data-editor): add MySQL ENUM and SET result editors by @openai0229 in #2560
- feat(datasource): add identity colors and editor watermarks by @openai0229 in #2657
Improved (5)
Improves SQL result handling, main navigation, MCP settings and restart behavior, workspace navigation, Windows desktop controls, and import/export task progress.
- feat(result): refine SQL results and editor close safety by @openai0229 in #2627
- fix(client): share updated main navigation icons by @openai0229 in #2629
- fix(desktop): make MCP settings and restart deterministic by @openai0229 in #2651
- refactor(community): refine workspace and desktop navigation by @openai0229 in #2711
- refactor(task): rebuild Community asynchronous task system by @openai0229 in #2712
Fixed (6)
Fixes result inspection and column metadata, datasource tree refresh races, Redis key details, MySQL database deletion, and related desktop interaction issues.
- fix(redis): make key detail loading reliable by @openai0229 in #2661
- fix(client): sync value inspector with record field by @openai0229 in #2666
- fix: preserve result inspector field and mode by @openai0229 in #2667
- fix(frontend): make datasource tree refresh race-safe by @openai0229 in #2706
- fix(database): use server connection for MySQL deletion by @openai0229 in #2707
- fix(result): preserve complete column header details by @openai0229 in #2715
Full Changelog: v5.3.3...v5.3.4
Chat2DB Community 5.3.3
Chat2DB Community 5.3.3 focuses on the desktop workspace, integrated terminal, and local-file experience while improving database compatibility, data-operation safety, and application stability.
Added (5)
Adds an integrated terminal, local-file previews and workspace splitting, configurable SQL and database-tree shortcuts, MiniMax provider support, and unconditional identifier quoting across database dialects.
- feat(spi): add quoteIdentifierAlways to ISQLIdentifierProcessor by @Aias00 in #2234
- feat(client): add line and block comment shortcuts for SQL editor by @iamraydoan in #2340
- feat(database-tree): add configurable shortcuts by @openai0229 in #2357
- Add MiniMax provider support by @octo-patch in #2374
- feat(workspace): enhance previews, terminal, and tab splitting by @auenger in #2273
Improved (1)
Improves workspace tabs, navigation, and output-panel sizing.
- fix(ui): refine workspace tabs and navigation by @openai0229 in #2353
Fixed (95)
Fixes desktop terminal and navigation behavior; cross-database SQL and DDL safety; DML and pagination validation; storage consistency; result grids; AI stream ownership; BI charts; database compatibility; and macOS packaging and startup.
- fix(mysql): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2172
- fix(h2): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2177
- fix(db2): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2173
- fix(clickhouse): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2174
- fix(oracle): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2195
- fix(sqlserver): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2196
- fix(xugudb): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2175
- fix(postgresql): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2194
- fix(kingbase): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2197
- fix(sqlite): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2204
- fix(redshift): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2203
- fix(sundb): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2176
- fix(dm): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2198
- fix(snowflake): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2200
- fix(hive): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2201
- fix(generic): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2199
- fix(oscar): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2202
- fix(oceanbase-oracle): escape SQL identifiers and literals in metadata/DDL paths (#1914) by @HandSonic in #2205
- fix(mongodb): escape generated shell command contexts (#1914) by @HandSonic in #2206
- fix(core-domain-api): volatile async state, escape quoted SQL values, fix XLXS typo, align PinTable hashCode by @HandSonic in #2293
- fix(domain-core): escape identifiers/comments in Excel-import DDL; propagate SQL errors; fix pinned duplication and completion fallback by @HandSonic in #2309
- fix(redis): quote key names in DEL/RENAME, apply grid edits atomically, iterate full SCAN cursor by @HandSonic in #2308
- fix(spi): guard empty UPDATE SET clause, quote-aware now() replacement, null-safe DBStructUtils by @HandSonic in #2335
- fix(snowflake): use SPI quoteIdentifierAlways for DROP, schema, and RENAME by @Aias00 in #2262
- fix(h2): log SET SCHEMA failure instead of swallowing by @Aias00 in #2155
- fix(on-mount): guard more async fetches against setState after unmount by @Aias00 in #2147
- fix(sqlite): preserve column size when decimalDigits is null by @Aias00 in #2170
- fix(redis-stream): map displayed row index to valueList correctly in handleCellChange by @Aias00 in #2165
- fix(bi): make chart sort comparator return 0 for equal values by @Aias00 in #2158
- fix(bi): adjust ComboAxisSelect splice index when both isFirst and isLast by @Aias00 in #2171
- fix(sql-generate): render count fallback with the parsed dbType, not sqlserver by @Aias00 in #2146
- fix(er-position): persist the new position, not the old record by @Aias00 in #2163
- fix(bi): restore chart fields after desktop query by @openai0229 in #2376
- fix(bi): measure actual X-axis labels instead of 'undefined' in useLabelRotate by @Aias00 in #2157
- fix(bi): guard empty data array in EditorChartSql before destructuring by @Aias00 in #2164
- fix(mysql): preserve DECIMAL precision when scale is null by @Aias00 in #2181
- fix(hive): preserve column precision when scale is null by @Aias00 in #2191
- fix(snowflake): preserve column precision when scale is null by @Aias00 in #2190
- fix(oracle): match index_owner in index metadata joins to avoid cross-schema index collisions by @HandSonic in #2286
- fix(dml): add @Valid to DbDmlController @RequestBody parameters by @Aias00 in #2381
- fix(datasource): parse driverConfig not ssh in rs2Request by @Aias00 in #2392
- fix(console): support Pro chart SQL first save by @openai0229 in #2415
- fix(connection): log swallowed custom-connection-resolution exceptions by @Aias00 in #2396
- fix(oscar): uppercase identifier in isReservedKeyword before lookup by @Aias00 in #2388
- fix(postgresql): render PostGIS geometry and geography as WKT by @openai0229 in #2419
- fix(xugudb): add CHECK to XugudbSqlGuards COLUMN_CLAUSE_KEYWORDS by @Aias00 in #2387
- fix(xugudb): preserve NUMERIC precision and scale in buildDataType by @Aias00 in #2394
- fix(spi): make ConnectionPool cleanup thread a named daemon by @Aias00 in #2386
- fix(view): /api/rdb/view/delete drops the view instead of the table by @Aias00 in #2380
- fix(converter): delete temp files after DbConverter uploads by @Aias00 in #2398
- fix(rdb): null-guard view/function/procedure list endpoints by @Aias00 in #2404
- fix(chat): write correct shape in setCurrentChat by @Aias00 in #2402
- fix(workspace): cap persisted tabs to reduce localStorage quota risk by @Aias00 in #2400
- fix(result-grid): stop infinite recursion when editing large-value cells by @Aias00 in #2382
- fix(result-grid): re-apply create/delete highlights after arrangement reset by @Aias00 in #2406
- fix(org-settings): move hooks above early return to satisfy Rules-of-Hooks by @Aias00 in #2421
- fix(tree): guard updateTreeData against null list by @Aias00 in #2423
- fix(tree): make findNode/getParentNode null-tolerant by @Aias00 in #2425
- fix(sql): escape single quotes in COMMENT text by @Aias00 in #2431
- fix(sql): clamp pageNo/pageSize to prevent paging offset int overflow by @Aias00 in #2433
- fix(mongodb): avoid Collectors.toMap NPE on null document values by @Aias00 in #2427
- fix(oceanbase-oracle): COMMENT DDL use quoteStringLiteral to stop backslash doubling by @Aias00 in #2429
- fix(ai-config): synchronize resolveTestApiKey r...
Chat2DB Community 5.3.2
What's Changed
- ci(dependabot): group related dependency updates by @openai0229 in #2208
- feat(ui): align Community actions with Lucide icons by @openai0229 in #2249
- fix(i18n): localize editor custom font tooltip by @openai0229 in #2253
- fix(mysql): resolve comma-separated relations in dot-scoped completion by @mvanhorn in #2088
- fix(sql-editor): remove slash-triggered AI entry by @openai0229 in #2258
- feat(workspace): improve session panel resizing by @openai0229 in #2264
- fix(sql-editor): sync action state on content changes by @openai0229 in #2263
- feat(settings): improve navigation and configuration search by @openai0229 in #2267
- feat(sql-editor): add output history retention option by @openai0229 in #2270
- fix(ui): align chart icon and page-size chevron by @openai0229 in #2284
- feat(sql-editor): use table icon for result tabs by @openai0229 in #2285
- feat(workspace): open history in editable console by @openai0229 in #2299
- feat(workspace): name SQL on initial save by @openai0229 in #2305
- fix(oscar): stop leaking internal ROWNUM column on first page of paginated queries by @HandSonic in #2304
- feat(table-editor): default new table columns to nullable by @liulipengju in #2312
- fix(opengauss): mark system databases/schemas instead of removing them by @HandSonic in #2303
- fix(mariadb): quote/escape unmapped JDBC values and keep now()/default bare in SQL conversion by @HandSonic in #2302
- fix(informix): make INFORMIXSERVER URL rewrite idempotent to avoid ever-growing JDBC URL on reconnect by @HandSonic in #2289
- fix(xugudb): use OracleSqlParser instead of MysqlSqlParser for Oracle-dialect plugin by @HandSonic in #2287
- fix(datasource): persist BigQuery project, email, and keyfile fields by @Hamza-ali1223 in #2179
- feat(sql-editor): improve result history controls by @openai0229 in #2344
- [codex] fix(history): preserve full SQL behind previews by @HanawaBanana in #2311
- fix(export): restore desktop connection export and feedback by @AlcoholTobaccoCode in #2254
- [codex] fix(result-grid): preserve change tracking after no-op undo by @HanawaBanana in #2298
- fix(clickhouse): preserve Decimal precision when scale is null (#2192) by @liulipengju in #2314
- 260728 fix selectboundinfo key index by @liulipengju in #2313
New Contributors
- @mvanhorn made their first contribution in #2088
- @HanawaBanana made their first contribution in #2311
- @AlcoholTobaccoCode made their first contribution in #2254
Full Changelog: v5.3.1...v5.3.2
Chat2DB Community 5.3.1
What's Changed
- fix(gaussdb): preserve comments in table DDL by @openai0229 in #1878
- fix(opengauss): preserve comments in table DDL by @openai0229 in #1875
- fix(release): isolate gray CDN artifacts by @openai0229 in #1882
- fix(jcef): use Community native window title by @openai0229 in #1885
- fix(sql): preserve execution context correctness by @openai0229 in #1870
- fix(ai): tolerate trailing /v1 in custom model base URL to avoid /v1/v1 requests by @solitude-mix in #1889
- docs(readme): restructure README for easier onboarding by @Chat2DB-Pro in #1898
- fix(ci): repair issue claim concurrency by @openai0229 in #1902
- fix(jcef): limit Community native title to Windows by @openai0229 in #1904
- fix(mongodb): support native result filtering and sorting by @openai0229 in #1903
- fix(spi): replace hardcoded Chinese "成功" in JdbcUtils.testConnect wit… by @liulipengju in #1900
- feat(automation): add AI issue and PR agents by @openai0229 in #1913
- fix(sqlserver): use ROW_NUMBER pagination for SQL Server < 2012 (#1693) by @HandSonic in #1919
- fix(redis): fix string-key update NPE and value-edit semantics across key types by @Chat2DB-Pro in #1922
- fix(spi): fix NPE in SqlUtils.buildCanEditResult when FROM clause is … by @liulipengju in #1899
- docs(readme): add star call-to-action after Security Notes by @Chat2DB-Pro in #1934
- fix(automation): harden AI issue assistant output by @openai0229 in #1921
- fix(ai): contain long markdown code blocks by @openai0229 in #1907
- feat(frontend): add SQL output ordering and explicit follow mode by @openai0229 in #1936
- feat(community): operationalize contribution workflow by @openai0229 in #1939
- fix(workspace): keep Data Browser active for database queries by @openai0229 in #1943
- fix(community): isolate project sync events by @openai0229 in #1947
- fix(release): keep gray builds in Actions by @openai0229 in #1940
- fix(workspace): preserve manual Files selection by @openai0229 in #1959
- revert(ai): remove long markdown code fix by @openai0229 in #1963
- fix(ci): stop reporting agentic no-op issues by @openai0229 in #1965
- fix(workspace): refresh saved query tree after save by @openai0229 in #1956
- fix: respect manual workspace panel selection by @Aias00 in #1969
- feat(result-set): use full-height inspector rail by @openai0229 in #1977
- fix(workspace): keep left panel selection manual by @openai0229 in #1975
- fix(ui): wire up ER diagram help button to open docs (#1695) by @HandSonic in #1892
- fix: preserve null values in copied where clauses by @Aias00 in #1967
- Fix count SQL semicolon trimming by @Aias00 in #1966
- fix: handle missing column metadata in DDL generation by @Aias00 in #1968
- feat(ci): add QQ group status notifications by @openai0229 in #1957
- fix(ci): allow QQ relay requests through Cloudflare by @openai0229 in #1989
- feat(frontend): copy query results as Markdown by @auenger in #1906
- fix(ai): separate streaming and synchronous retry policies by @HandSonic in #1894
- fix(cache): degrade safely when optional cache initialization fails by @HandSonic in #1890
- feat(ci): notify QQ of Release, Deployment, and Discussion changes by @openai0229 in #2004
- docs(ci): clarify inactive deployment notification limit by @openai0229 in #2006
- docs: link open-source Chat2DB CLI by @openai0229 in #2007
- feat(ci): notify QQ about comments and pull request reviews by @openai0229 in #2010
- fix(ui): XSS, state mutation, and miscellaneous frontend fixes by @HandSonic in #1927
- fix(snowflake): null-safe metadata compare in column-type build by @Aias00 in #2001
- fix(sundb): null-safe metadata compare in column-type build by @Aias00 in #2002
- fix(cache): init guard, corrupted entry eviction, and lock improvement by @HandSonic in #1925
- fix(sundb): use equals for NUMBER type name in DDL generation by @Aias00 in #2000
- fix(chat): contain oversized conversation content by @openai0229 in #2048
- fix(dashboard-store): use shallow equality like sibling stores by @Aias00 in #2038
- fix(copilot): scope global store subscription to editorSettings by @Aias00 in #2039
- fix(ai-setting): scope org store subscription to curOrg by @Aias00 in #2040
- fix(approval): scope user store subscription to curUser by @Aias00 in #2041
- fix(excel-import): guard excelReader.close() against null in finally by @Aias00 in #2042
- fix(chat-history): only delete message file for owned sessions by @Aias00 in #2043
- fix(hive): guard split length before indexing column default key by @Aias00 in #2044
- fix(sqlserver): drop dead Arrays.asList() branch and dedupe FLOAT by @Aias00 in #2045
- fix(excel-import): escape table/column names and comments in CREATE TABLE by @Aias00 in #2046
- fix(chat-store): pass shallow equality to useChatStore by @Aias00 in #2018
- fix(ui): make useAutoScroll smooth flag effective by @Aias00 in #2019
- fix(chat): avoid appending literal "undefined" on SSE messages by @Aias00 in #2020
- fix(excel-import): escape cell values in INSERT statements by @Aias00 in #2021
- fix(useSelectDatabase): add catch to getSchemaList by @Aias00 in #2024
- fix(result-set): bound and clean up filter/sort render polls by @Aias00 in #2025
- fix(table-editor): memoize Context.Provider value by @Aias00 in #2068
- fix(ai-button): scope AI store subscription to showPanel by @Aias00 in #2066
- fix(xterm): dispose Terminal on unmount by @Aias00 in #2067
- fix(xugudb): guard column/index enum lookups against null in CREATE/ALTER by @Aias00 in #2063
- fix(postgresql): quote view name with double quote and separate schema/view in comment by @Aias00 in #2062
- fix(sqlite): guard alter-table tail strip against empty script by @Aias00 in #2065
- fix(h2): close ResultSets in getDDL via try-with-resources by @Aias00 in #2064
- fix(notification-nav): guard on-mount async queries against unmount by @Aias00 in #2074
- fix(canvas-table): unmount cell-editor React root on end by @Aias00 in #2076
- fix(mysql): log column-size parse failures instead of swallowing by @Aias00 in #2075
- fix(auth): clear verification-code countdown timer on unmount by @Aias00 in #2073
- fix(oracle): SQL injection, view comment DOT, and pagination column leak by @HandSonic in #2052
- fix(sqlserver): view quoting, TIMESTAMP dead code, GO separator, and rename quoting by @HandSonic in #2053
- fix(sqlserver): preserve IDENTITY columns when copying table (#1691) by @HandSonic in #1918
- fix(spi): harden SQL execution and connection lifecycle by @HandSonic in #1924
- fix(plugin-menu-list): guard plugin-list fetch against unmount by @Aias00 in #2087
- fix(chat-question-template): guard example-prompt fetch against unmount by @Aias00 in #2086
- docs(readme): add Powere...
Chat2DB Community 5.3.0
Chat2DB Community 5.3.0 is a major new baseline for the Community edition and a fresh start for regular releases and ongoing maintenance.
Highlights
- Unified versioning: Community moves from the separate
0.3.xline to5.3.0, aligned with the current Chat2DB product family. - Shared database client core: Community, Pro, and Enterprise now share the same database client foundation, with the public Community repository serving as the upstream for that shared core.
- Local-first experience: No registration or sign-in is required. Data sources, query history, tasks, dashboards, and AI configuration are stored locally on your device.
- Complete database workflow: Connect to data sources, browse metadata, edit and execute SQL, manage database objects and data, import and export data, save SQL and history, and build dashboards and charts.
- Extensible tooling: Use the Chat2DB CLI, MCP integration, and your own configured AI models.
Before You Install
Warning
Chat2DB Community 5.3.0 does not support in-place upgrades from historical Community releases such as v0.3.7. Back up and migrate your existing data before installing this version.
License
Chat2DB Community 5.3.0 and later use the custom source-available license in the repository root. Releases published before 5.3.0 remain under the Apache License 2.0 terms that applied when they were released. Please read the complete LICENSE before using, modifying, distributing, embedding, or offering products or services based on Community.
Downloads
Installers for macOS, Windows, and Linux are attached below.
Docker images are available as chat2db/chat2db:5.3.0 and chat2db/chat2db:latest, with support for linux/amd64 and linux/arm64.
Learn More
A detailed release announcement covering the new Community direction, product boundaries, upgrade guidance, and ways to get involved will be published in GitHub Discussions.
Thank you to everyone who has continued to use, support, and contribute to Chat2DB Community.
0.3.7
Merge pull request #1626 from tmlx1990/fixAI fix: 修复自定义AI保存后再次进入没有显示的问题。