Commit Graph
1288 Commits
Author SHA1 Message Date
t8y2 8c7e34a6de fix(mysql): edit enum column values 2026-07-10 16:10:54 +08:00
二丫讲梵 ea8b3f9800 feat(tabs): enhance result toolbar layout and labels 2026-07-10 15:54:01 +08:00
DengQingNian e429c8945b feat(mysql): edit column charset and collation 2026-07-10 15:13:57 +08:00
Abeautifulsnow 0674433eea fix(mcp): disambiguate same-name connections 2026-07-10 14:44:40 +08:00
t8y2 9903747381 fix(redis): preserve large JSON numbers 2026-07-10 13:50:30 +08:00
LSD 0efc724369 fix(nacos): improve config list scrolling
* fix(nacos): improve config list scrolling

* fix(nacos): add resizable config list columns
2026-07-10 13:40:27 +08:00
t8y2 cb6350bef6 fix(query): support editing distinct results 2026-07-10 13:19:28 +08:00
t8y2 a9428e3c73 feat(editor): naturally sort schema options 2026-07-10 13:16:07 +08:00
miracle 3ff4f470f2 fix(mysql): reuse data tab client session 2026-07-10 10:56:48 +08:00
SuLea-IT 8a30bb26f9 fix(settings): preserve editor font after UI font changes 2026-07-10 10:40:10 +08:00
github-actions[bot] 4b515c4c65 chore(packages): release 0.4.25 [skip node-packages-release] 2026-07-10 00:39:05 +00:00
t8y2 1e6ac0ccff fix(grid): batch row delete updates 2026-07-09 21:17:37 +08:00
t8y2 39d956f2e8 fix(redis): skip confirmation for regular writes 2026-07-09 18:59:12 +08:00
Guoyu Su 15d392bc44 fix(transfer): keep task active after table errors 2026-07-09 18:30:29 +08:00
t8y2 87efe469a4 fix(desktop): reduce grid scroll jank 2026-07-09 17:55:33 +08:00
t8y2 c015d95016 fix(grid): restore row actions and remove edit badge 2026-07-09 17:37:36 +08:00
t8y2 aa0abcd670 feat(query): support broader result editing 2026-07-09 14:35:59 +08:00
Guoyu Su ca9e11217e fix(mongodb): support collection drop shell command 2026-07-09 14:16:32 +08:00
Guoyu Su 65a92afce8 fix(desktop): preserve sidebar groups on reload 2026-07-09 11:47:13 +08:00
zipg 1317301bcd feat(kafka): improve topic management and Kerberos auth 2026-07-09 11:41:22 +08:00
二丫讲梵 a8a7d3e9ed feat(temporal-editor): 支持手动输入 datetime 字段值
* ✨ feat(temporal-editor): 数据库修改datatime字段时支持手动输入数据

* 🔧 fix(temporal-editor): 修复 picker 回到输入框时误提交的问题
2026-07-09 11:11:45 +08:00
gggaiitx 2f134585ea feat(editor): add auto close brackets setting 2026-07-09 09:53:01 +08:00
二丫讲梵 28db8bc1b8 feat(support-info): add app support information 2026-07-09 09:52:45 +08:00
github-actions[bot] 649e9c2f9e chore(packages): release 0.4.24 [skip node-packages-release] 2026-07-08 23:40:36 +00:00
二丫讲梵 7748c13a1e feat(data-grid): show column comments in lookup 2026-07-08 23:44:33 +08:00
二丫讲梵 ddf6b3ed6b fix(sidebar): preserve Mongo collection children in search 2026-07-08 23:44:25 +08:00
二丫讲梵 843babf522 feat(connection): select new databases when visible 2026-07-08 22:51:45 +08:00
onenewcode 1b13d2176b fix(metadata): unify enum column metadata 2026-07-08 21:02:53 +08:00
auth0 07482557e6 fix(sidebar): locate active table reliably 2026-07-08 20:21:13 +08:00
lexmin0412 ac4b98c97c feat(ai): add general action mode 2026-07-08 19:31:19 +08:00
二丫讲梵 fb919efe0a fix(mcp): require auth for web backend access 2026-07-08 19:23:34 +08:00
Abeautifulsnow 0901f176b0 fix(grid): preserve current page on data refresh instead of resetting to page 1
* @
fix(grid): preserve current page on data refresh instead of resetting to page 1

When refreshing table data (toolbar button, Ctrl+R, or auto-refresh), the
offset was hardcoded to 0, causing pagination to always jump back to the
first page. This was frustrating for users viewing later pages.

Use the current page offset (currentPage - 1) * pageSize so the user
stays on the same page after refresh. In infinite-scroll mode, the
offset still evaluates to 0 because resetInfiniteScrollState() sets
currentPage = 1, so behavior is unchanged.
@

* @
fix(grid): auto-redirect to last page when refreshed page no longer exists

Extends the refresh pagination fix with a safety net: when data is deleted
while viewing a later page (e.g. page 5 with only 2 pages remaining), the
grid auto-navigates to the last available page instead of showing an empty
page.

Uses a transient isRefreshingData flag to distinguish refresh/rollback
from normal pagination navigation, avoiding false triggers.
@

* Revert "@"

This reverts commit ff0bf0bb31.

* @
fix(grid): auto-redirect to last page when refreshed page no longer exists

When data is deleted while viewing a later page, the grid now auto-navigates
to the last available page instead of showing an empty page.

Uses a transient isRefreshingData flag to distinguish refresh/rollback
from normal pagination, and a loading-transition watcher (true->false)
placed after displayedTotalRowCount declaration to avoid TDZ errors.
@

* @
test(grid): add pagination offset-preservation and auto-redirect tests

Cover the two new behaviors added to DataGrid.vue:

1. dataGridPagination.test.ts — auto-redirect page calculation:
   - page beyond last page after data deletion → triggers redirect
   - page still valid → no redirect
   - fewer rows than one page → redirects to page 1
   - total=0 / total=undefined → guard prevents redirect

2. useDataGridActions.test.ts — offset preserved on reload:
   - onReloadData(offset=400) passes offset=400 to build-table-select-sql
   - resultPageOffset stored as 400 (not reset to 0)
@
2026-07-08 13:28:36 +08:00
t8y2 2929b1c035 feat(hive): add Kerberos connection options 2026-07-08 13:23:21 +08:00
t8y2 15d4dc6e2e fix(sqlserver): omit display width for integer types 2026-07-08 11:05:45 +08:00
t8y2 d2874bf1bb fix(grid): smooth canvas column interactions 2026-07-08 09:45:28 +08:00
github-actions[bot] 6e44e697e4 chore(packages): release 0.4.23 [skip node-packages-release] 2026-07-07 17:18:26 +00:00
onenewcode ba81fa4497 feat(redis): support multiple value formats in viewer (#2766)
* feat(redis): improve value decoding and viewer formats

* fix(redis): preserve stream field/value blobs

* Revert "fix(redis): preserve stream field/value blobs"

This reverts commit 168af0619a.
2026-07-08 00:13:20 +08:00
二丫讲梵 7eff6e544b feat(sqlCompletion): 优化表别名建议功能,避免使用 SQL 关键字 (#2805) 2026-07-08 00:01:24 +08:00
一颗红心andCursor 184e235999 feat: synchronize tab titles with saved SQL file renaming (#2739)
- Bidirectional sync between SQL library and tab titles
- Case-insensitive .sql extension via shared ensureSqlExtension
- Revert tab title when rename persistence fails

Close #2648

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 18:09:01 +08:00
zipg d90847bbba feat(ai): support SQL library file references 2026-07-07 15:39:10 +08:00
jischeng c3893bf314 feat(spark): add Apache Spark database driver with catalog support
* feat(spark): add Apache Spark database driver

Spark Thrift Server speaks the HiveServer2 protocol, so the Spark driver
reuses the hive-jdbc agent runtime. Registers spark (agentKey=spark,
defaultPort=10015) across the manifest, DatabaseType enum, agent catalog,
SQL dialects, connection dialog, and a SparkAgent built on AbstractJdbcAgent.

* feat(spark): add catalog support and official logo

SparkAgent now supports Spark 3.4+ multi-catalog (Paimon, Lance, Iceberg)
via catalog=<name> in url_params, mirroring the StarRocks catalog flow:
- afterConnect switches to the configured catalog via USE <catalog>
- listDatabases returns the catalog name when SHOW DATABASES is empty
  (catalogs like Lance expose tables at the catalog root with no databases)
- listTables uses SHOW TABLES IN <catalog>[.<schema>] uniformly, working
  for both catalog-root tables (Lance) and catalog.schema tables (Paimon)
- setSchemaSQL qualifies USE with the catalog to prevent resetting to
  spark_catalog on schema switches
- buildJdbcUrl omits database from the URL path

Also replaces the placeholder lightning icon with the official Apache Spark
logo (spark-logo.png from spark.apache.org).

* fix(spark): use catalog-qualified DESCRIBE for column retrieval

getColumnsFromDescribe used USE <schema> + DESCRIBE <table>, which
generated USE `catalog`.`catalog` when the sidebar passed the catalog
name as the schema (Lance case where the catalog is the only node).
This failed and fell back to JDBC metadata which also returned nothing,
resulting in an empty DDL (CREATE TABLE ... ()).

Now uses DESCRIBE `catalog`.`table` directly when a catalog is
configured, bypassing USE entirely. Also fixes setSchemaSQL to treat
schema == catalog as catalog-only (no .schema suffix).

* fix(ci): add spark to metadata coverage matrix and BRIDGE_REQUIRED_TYPES

- agents/metadata-constraint-coverage.tsv: register spark as
  intentional-fallback (SHOW TABLES/SHOW DATABASES, like Hive/TDengine)
- packages/node-core/src/diagnostics.ts: add spark to
  BRIDGE_REQUIRED_TYPES (mcpMode=bridge, matches manifest)

* fix(ci): add spark to DBX_CONNECTION_TYPE_DESCRIPTION in mcp-server

The driver-manifest test asserts every manifest dbType appears in the
MCP server's connection type description string.
2026-07-07 14:36:22 +08:00
LSD a7be9eed13 fix(gridfs): support bulk download and paged browsing (#2743) 2026-07-07 12:43:07 +08:00
t8y2 65af804099 feat(editor): allow disabling SQL snippets 2026-07-07 12:36:51 +08:00
github-actions[bot] 001f7ece7b chore(packages): release 0.4.22 [skip node-packages-release] 2026-07-06 18:27:31 +00:00
t8y2 9cbe857a2a feat(update): 应用内更新提示支持英文 release notes 2026-07-07 00:26:56 +08:00
Guoyu Su d7e2eac307 fix(mongodb): honor current command execution mode (#2702) 2026-07-07 00:02:34 +08:00
二丫讲梵 ff8e53d47b feat(query): 优化多条查询语句结果展示与语句匹配问题 (#2697) 2026-07-06 18:39:36 +08:00
LSD 095cb867a5 fix(mongodb): remove duplicate refresh button in document browser (#2696) 2026-07-06 18:28:42 +08:00
Hiep LeandClaude Opus 4.8 78019c44e2 fix(mongo): support ISODate() and new Date() in MongoDB queries
* fix(mongo): hỗ trợ ISODate() và new Date() trong query MongoDB

Parser shell MongoDB ở frontend chỉ chuyển ObjectId(...) sang extended JSON,
nên filter chứa ISODate("...")/new Date("...") không parse được: câu lệnh rơi
xuống SQL executor và báo lỗi "Use MongoDB-specific commands".

Bổ sung rewrite ISODate(x)/new Date(x) -> {"$date":x} trong normalizeJsonArgument,
khớp với json_value_to_bson của backend (đã hiểu $date/$oid). Thêm test cho
filter dùng ISODate và new Date.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mongo): decode $date extended JSON trong filter query

json_filter_value_to_bson chỉ chuyển {"$oid":...} nên filter chứa {"$date":...}
bị gửi thẳng lên server: { field: {"$date":...} } lỗi "unknown operator: $date",
còn { field: {"$gte": {"$date":...}} } so sánh với sub-document nên không khớp gì
(trả về rỗng).

Thêm nhánh parse_extended_json_date vào json_filter_value_to_bson, đồng bộ với
json_value_to_bson (vốn đã hiểu $date/$oid). Thêm test cho cả equality và $gte.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-06 18:21:15 +08:00
二丫讲梵 6d0a59a913 feat(editor): SQL editor execution button config toggle & optimization
- 在 SQL 编辑器的左侧添加每条语句的执行按钮
- 支持通过快捷键和右键菜单执行语句
- 增加多语言支持的相关文本描述
2026-07-06 18:01:31 +08:00