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