v5.3.1

hongfz16/EVA3Dv5.3.1Jul 27, 2026by github-actions[bot]

AI Summary

A maintenance update focusing on database support enhancements (GaussDB, Opengauss, SQL Server, Redis), frontend improvements, and the addition of AI automation agents.

Key Highlights

  • Support for MongoDB native result filtering and sorting
  • Fix SQL Server pagination for versions < 2012 using ROW_NUMBER
  • Fix Redis string-key update NPE and value-edit semantics
  • Add AI issue and PR agents
  • Copy query results as Markdown

New Features

  • MongoDB filtering and sorting
  • SQL Server fix
  • Redis fix
  • Markdown copy
  • AI agents

Full Release Notes

## What's Changed
* fix(gaussdb): preserve comments in table DDL by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1878
* fix(opengauss): preserve comments in table DDL by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1875
* fix(release): isolate gray CDN artifacts by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1882
* fix(jcef): use Community native window title by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1885
* fix(sql): preserve execution context correctness by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1870
* fix(ai): tolerate trailing /v1 in custom model base URL to avoid /v1/v1 requests by @solitude-mix in https://github.com/OtterMind/Chat2DB/pull/1889
* docs(readme): restructure README for easier onboarding by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/1898
* fix(ci): repair issue claim concurrency by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1902
* fix(jcef): limit Community native title to Windows by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1904
* fix(mongodb): support native result filtering and sorting by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1903
* fix(spi): replace hardcoded Chinese "成功" in JdbcUtils.testConnect wit… by @liulipengju in https://github.com/OtterMind/Chat2DB/pull/1900
* feat(automation): add AI issue and PR agents by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1913
* fix(sqlserver): use ROW_NUMBER pagination for SQL Server < 2012 (#1693) by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1919
* fix(redis): fix string-key update NPE and value-edit semantics across key types by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/1922
* fix(spi): fix NPE in SqlUtils.buildCanEditResult when FROM clause is … by @liulipengju in https://github.com/OtterMind/Chat2DB/pull/1899
* docs(readme): add star call-to-action after Security Notes by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/1934
* fix(automation): harden AI issue assistant output by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1921
* fix(ai): contain long markdown code blocks by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1907
* feat(frontend): add SQL output ordering and explicit follow mode by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1936
* feat(community): operationalize contribution workflow by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1939
* fix(workspace): keep Data Browser active for database queries by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1943
* fix(community): isolate project sync events by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1947
* fix(release): keep gray builds in Actions by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1940
* fix(workspace): preserve manual Files selection by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1959
* revert(ai): remove long markdown code fix by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1963
* fix(ci): stop reporting agentic no-op issues by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1965
* fix(workspace): refresh saved query tree after save by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1956
* fix: respect manual workspace panel selection by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/1969
* feat(result-set): use full-height inspector rail by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1977
* fix(workspace): keep left panel selection manual by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1975
* fix(ui): wire up ER diagram help button to open docs (#1695) by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1892
* fix: preserve null values in copied where clauses by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/1967
* Fix count SQL semicolon trimming by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/1966
* fix: handle missing column metadata in DDL generation by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/1968
* feat(ci): add QQ group status notifications by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1957
* fix(ci): allow QQ relay requests through Cloudflare by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/1989
* feat(frontend): copy query results as Markdown by @auenger in https://github.com/OtterMind/Chat2DB/pull/1906
* fix(ai): separate streaming and synchronous retry policies by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1894
* fix(cache): degrade safely when optional cache initialization fails by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1890
* feat(ci): notify QQ of Release, Deployment, and Discussion changes by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/2004
* docs(ci): clarify inactive deployment notification limit by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/2006
* docs: link open-source Chat2DB CLI by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/2007
* feat(ci): notify QQ about comments and pull request reviews by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/2010
* fix(ui): XSS, state mutation, and miscellaneous frontend fixes by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1927
* fix(snowflake): null-safe metadata compare in column-type build by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2001
* fix(sundb): null-safe metadata compare in column-type build by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2002
* fix(cache): init guard, corrupted entry eviction, and lock improvement by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1925
* fix(sundb): use equals for NUMBER type name in DDL generation by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2000
* fix(chat): contain oversized conversation content by @openai0229 in https://github.com/OtterMind/Chat2DB/pull/2048
* fix(dashboard-store): use shallow equality like sibling stores by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2038
* fix(copilot): scope global store subscription to editorSettings by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2039
* fix(ai-setting): scope org store subscription to curOrg by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2040
* fix(approval): scope user store subscription to curUser by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2041
* fix(excel-import): guard excelReader.close() against null in finally by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2042
* fix(chat-history): only delete message file for owned sessions by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2043
* fix(hive): guard split length before indexing column default key by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2044
* fix(sqlserver): drop dead Arrays.asList() branch and dedupe FLOAT by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2045
* fix(excel-import): escape table/column names and comments in CREATE TABLE by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2046
* fix(chat-store): pass shallow equality to useChatStore by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2018
* fix(ui): make useAutoScroll smooth flag effective by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2019
* fix(chat): avoid appending literal "undefined" on SSE messages by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2020
* fix(excel-import): escape cell values in INSERT statements by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2021
* fix(useSelectDatabase): add catch to getSchemaList by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2024
* fix(result-set): bound and clean up filter/sort render polls by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2025
* fix(table-editor): memoize Context.Provider value by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2068
* fix(ai-button): scope AI store subscription to showPanel by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2066
* fix(xterm): dispose Terminal on unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2067
* fix(xugudb): guard column/index enum lookups against null in CREATE/ALTER by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2063
* fix(postgresql): quote view name with double quote and separate schema/view in comment by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2062
* fix(sqlite): guard alter-table tail strip against empty script by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2065
* fix(h2): close ResultSets in getDDL via try-with-resources by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2064
* fix(notification-nav): guard on-mount async queries against unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2074
* fix(canvas-table): unmount cell-editor React root on end by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2076
* fix(mysql): log column-size parse failures instead of swallowing by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2075
* fix(auth): clear verification-code countdown timer on unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2073
* fix(oracle): SQL injection, view comment DOT, and pagination column leak by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/2052
* fix(sqlserver): view quoting, TIMESTAMP dead code, GO separator, and rename quoting by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/2053
* fix(sqlserver): preserve IDENTITY columns when copying table (#1691) by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1918
* fix(spi): harden SQL execution and connection lifecycle by @HandSonic in https://github.com/OtterMind/Chat2DB/pull/1924
* fix(plugin-menu-list): guard plugin-list fetch against unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2087
* fix(chat-question-template): guard example-prompt fetch against unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2086
* docs(readme): add Powered by OtterMind.ai link under logo by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/2090
* Update README.md by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/2091
* docs(readme): unify Powered by OtterMind line across all READMEs by @Chat2DB-Pro in https://github.com/OtterMind/Chat2DB/pull/2092
* docs(bigquery): add Community BigQuery connection guide (#1698) by @Hamza-ali1223 in https://github.com/OtterMind/Chat2DB/pull/2054
* fix(db2): rename NUMBERIC typo to NUMERIC by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2085
* fix(db2): skip column comment for dropped columns in ALTER by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2083
* fix(storage): persist deletions and clean up detail files in LargeDataStorage by @Duansg in https://github.com/OtterMind/Chat2DB/pull/2050
* feat(sql-editor): add type-aware INSERT value hints by @auenger in https://github.com/OtterMind/Chat2DB/pull/1933
* fix(price): stop order-status polling and setState after unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2103
* fix(result-set): clear pending mouseenter timeout in useHeaderTooltip cleanup by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2104
* fix(import-export): stop polling and setState after unmount in Log by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2102
* fix(kingbase,postgresql): check constraintDefinition before toLowerCase by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2101
* fix(dm): fall back for the single failing index in exportTable, not all by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2099
* fix(clickhouse): log column-size parse failures instead of swallowing by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2100
* fix(wechat-login): stop QR-code polling and setState after unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2110
* fix(er-modal): skip initLayout setState after dispose by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2111
* fix(jcef): null-guard readLine and close reader in theme detection by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2109
* feat(ai): improve custom-model entry visibility by @BlueChubby in https://github.com/OtterMind/Chat2DB/pull/2089
* fix(purchase-details): key certificate rows by deviceId, not index by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2129
* fix(on-mount): guard async fetches against setState after unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2118
* fix(on-mount): guard more async fetches against setState after unmount by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2140
* fix(er-modal-table): key column rows by name, not index by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2130
* fix(sql-parser): null-guard offendingToken before getType in error message by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2116
* fix(lineage): preserve parse exception cause instead of discarding it by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2117
* fix(sql-util): null-safe dbType comparison in quoteValue by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2125
* fix(sql-generate): log jsqlparser error with the exception by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2126
* fix(easy-sql): add databaseName once for 3-part names by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2127
* fix(easy-string): only append ellipsis when limitString actually truncated by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2128
* fix(sundb): rename NUMBERIC typo to NUMERIC by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2136
* fix(snowflake): list TIMESTAMP_NTZ instead of duplicating TIMESTAMP_LTZ by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2137
* fix(import): swap scale/precision in BaseImporter.getSQLDataValue by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2138
* fix(snowflake): null-guard getByType and use Objects.equals for incrementValue by @Aias00 in https://github.com/OtterMind/Chat2DB/pull/2139

## New Contributors
* @solitude-mix made their first contribution in https://github.com/OtterMind/Chat2DB/pull/1889
* @liulipengju made their first contribution in https://github.com/OtterMind/Chat2DB/pull/1900
* @HandSonic made their first contribution in https://github.com/OtterMind/Chat2DB/pull/1919
* @Aias00 made their first contribution in https://github.com/OtterMind/Chat2DB/pull/1969
* @auenger made their first contribution in https://github.com/OtterMind/Chat2DB/pull/1906
* @Hamza-ali1223 made their first contribution in https://github.com/OtterMind/Chat2DB/pull/2054
* @Duansg made their first contribution in https://github.com/OtterMind/Chat2DB/pull/2050
* @BlueChubby made their first contribution in https://github.com/OtterMind/Chat2DB/pull/2089

**Full Changelog**: https://github.com/OtterMind/Chat2DB/compare/v5.3.0...v5.3.1