Commit Graph
48 Commits
Author SHA1 Message Date
t8y2 120566b1fd fix: improve JDBC dialect handling 2026-06-04 19:40:52 +08:00
skyler 0f691485c8 Merge pull request #706 from DengQingNian/feat/drag-tab-reorder
feat(ui): add tab drag-and-drop reordering
2026-06-04 11:21:52 +08:00
dqn b028b0aea2 fix(ui): update drop position on mousemove and enforce pinned grouping in tab reorder
- Track mousemove during drag to continuously update before/after indicator
- Re-apply orderPinnedFirst after reorder to prevent breaking pinned tab grouping
2026-06-04 10:40:42 +08:00
t8y2 388873213f fix(export): stream full table exports correctly 2026-06-04 01:10:23 +08:00
dqn be9b071473 feat(ui): add tab drag-and-drop reordering
Support dragging tabs horizontally to reorder them. A ghost element follows
the cursor during drag, and a drop indicator shows the target position.
2026-06-03 23:58:01 +08:00
t8y2 9648f74b87 fix(tabs): close object tabs on disconnect release 2026-06-03 19:30:34 +08:00
t8y2 af40af603e feat(editor): add configurable tab handling on disconnect 2026-06-03 16:53:40 +08:00
t8y2 e67894bea7 chore: upgrade frontend tooling and speed up checks 2026-06-03 12:20:27 +08:00
t8y2 763470e86d fix(oracle): normalize unquoted query metadata identifiers 2026-06-03 02:32:08 +08:00
t8y2 ccaa50e36b fix(query): honor connection timeout during exports 2026-06-02 19:38:21 +08:00
t8y2 bce6a820ec fix(grid): preserve result during refresh 2026-06-02 18:58:37 +08:00
t8y2 2ff4a3fd97 fix(tabs): close connection tabs on disconnect 2026-06-02 18:19:28 +08:00
t8y2 f5eb3ba5db fix: preserve data grid order by input 2026-06-02 11:36:59 +08:00
t8y2 8058c238b8 fix(desktop): allow multiple new table structure tabs 2026-06-02 02:13:09 +08:00
t8y2 ad33db0886 fix(desktop): restore table tabs on startup 2026-06-01 23:07:47 +08:00
t8y2 b4c469a69f fix(desktop): close database tabs with connection 2026-06-01 20:21:42 +08:00
t8y2 b35c1486e6 feat(desktop): improve query result exports and toolbar state 2026-06-01 19:26:15 +08:00
t8y2 84a7ff6b92 fix(tabs): reload missing table data 2026-06-01 17:18:51 +08:00
t8y2 a87b8ece31 fix(mongodb): support compass shell commands 2026-06-01 16:24:31 +08:00
t8y2 a315ab93c7 fix(query): preserve tab SQL session state 2026-06-01 15:41:15 +08:00
t8y2 7f5de70687 fix(export): include all paginated query result rows 2026-06-01 14:32:16 +08:00
t8y2 b75219ab40 feat(tabs): support renaming query tabs 2026-06-01 14:24:04 +08:00
t8y2 297e3d0752 fix(grid): preserve table data pagination offset 2026-06-01 14:18:21 +08:00
t8y2 e28495f3c1 perf: optimize table data loading 2026-05-31 22:10:02 +08:00
t8y2 d8f2bce320 fix(query): release stale result payloads 2026-05-31 13:45:53 +08:00
t8y2 ed1db7db6b fix(ui): localize hardcoded strings 2026-05-30 10:01:12 +08:00
t8y2 027c39a610 perf: optimize database connection pooling and query execution
- Increase MySQL pool max from 1 to 3 to avoid contention across tabs
- Merge get_columns serial queries into a single LEFT JOIN
- Clone pool handles before health checks in refresh_connections to reduce lock contention
- Skip COUNT(*) when result rows are fewer than the page size
2026-05-29 16:26:19 +08:00
t8y2 b54eda1889 fix: 修复应用长时间挂后台后恢复时表格数据永久加载的问题
三层防护:
- MySQL 连接获取时执行 ping 健康检查,死连接自动重连
- macOS Reopen 事件 + 前端 visibilitychange 触发连接刷新
- 前端 Promise.race 超时保护,确保 loading 状态不会超过 60s
2026-05-29 15:12:14 +08:00
t8y2 539faef23d feat(query): display total row count in result status bar
Execute COUNT query asynchronously after main query to show total
matching rows. Strip user-supplied LIMIT/OFFSET from count SQL so
the total reflects all rows, not just the limited page.
2026-05-28 22:44:13 +08:00
徐文彬 5ea146e08e fix(mongodb): guard aggregate execution paths 2026-05-28 21:29:08 +08:00
徐文彬andClaude Opus 4.7 c56bcb8e2d feat(mongodb): 支持聚合查询、批量写入和 MCP 集成
- 桌面端:解析 db.<集合>.aggregate([...]) shell 语法,新增 mongoAggregateDocuments
  接口(Tauri + HTTP);mongo 入口统一补 ensureConnected;ObjectId(...) 自动
  转换为 {"\$oid":"..."} 扩展 JSON 表示。
- dbx-core:新增 aggregate_documents、insert/update/delete_documents bulk
  操作;扩展 JSON 解析识别 \$oid;schema list_tables_core 补 MongoDB/Elasticsearch
  分支返回 COLLECTION/INDEX。
- dbx-web / Tauri 命令 / MCP bridge:注册 4 个新 mongo 路由
  (aggregate/insert/update/delete documents);MCP bridge 新增 mongo HTTP 入口
  和 lazy 连接复用。
- node-core (MCP 后端):mongodb 走专属 executeQuery / listTables /
  describeTable;read-only 默认 + DBX_MCP_ALLOW_WRITES /
  DBX_MCP_ALLOW_DANGEROUS_SQL 两级开关;aggregate 含 \$out/\$merge 走同样开关;
  describeTable 抽样 20 条文档推断字段类型,_id 自动标记主键。
- mcp-server:mongodb 跳过 SQL safety evaluator(mongo shell 与 SQL 语法
  不兼容),改由 backend 做命令级 gating;附注释。
- AiAssistant 同时 emit replaceSql + executeSql 让编辑器和结果保持一致;
  App.vue ensureQueryTab 在无上下文时回退到连接默认库;aiMessageRender
  识别 mongodb / mongo 代码块。
- Review 修复:合并两份重复的 evaluateMongo*Safety 实现(同时修复 web-backend
  用字符串比较导致空 filter 检查可被空格绕过的 bug);ObjectId 正则兼容
  单/双引号;mongo_ops 错误文案 "MCP" 改为 "bulk";补 aggregate 解析测试用例。

测试:pnpm test 911 通过;vue-tsc 通过;cargo check -p dbx-core 通过。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 21:25:43 +08:00
t8y2 30a48a878c fix(query): reload connection config before execute 2026-05-28 18:54:51 +08:00
t8y2 486d9bb3a6 fix(connection): move query timeout into per-connection settings 2026-05-28 18:18:45 +08:00
t8y2 dafed47b07 fix: improve database error message extraction for queries
- frontend: use e.message instead of String(e) in toErrorResult to avoid
  "Error: " prefix for HTTP-mode errors, matching connectionErrorMessage
- frontend: apply same fix to MongoDocBrowser error display
- backend(postgres): use pg_error_to_string across all query execution
  paths (execute, execute_batch, copy_out, copy_in) to extract DbError
  details instead of generic transport-layer errors

Other databases (MySQL, SQL Server, SQLite, DuckDB) already include
server-level error details in their native Error::to_string().
2026-05-27 15:40:28 +08:00
t8y2 792c816a17 feat: make query timeout configurable via global settings (default 30s)
Add queryTimeoutSecs to editor settings with UI control in the settings
dialog. 0 means no timeout. Applied to all query execution paths including
sidebar table data loading and EXPLAIN queries.

Closes #441.
2026-05-25 18:30:55 +08:00
t8y2 d326cb0ced fix: scope query connections by client session 2026-05-25 17:23:36 +08:00
t8y2 dbd2b2bab5 fix: update tests for table structure editor tab conversion and type/length split
- Remove deleted Dialog.vue references from dialogOpenWatcher and structure tests
- Update presentation test assertions for tab layout and SearchableSelect
- Add schema to newQueryContext expected results (schema propagation)
- Make queryStore i18n resilient to missing Vue app context (tests)
- Fix regex patterns for oxfmt-formatted code
2026-05-24 22:52:58 +08:00
t8y2 75e97001ec style: fix formatting (oxfmt + cargo fmt) 2026-05-24 22:38:16 +08:00
t8y2 801434e423 refactor: convert table structure editor from modal dialog to tab
Replace the dialog-based TableStructureEditorDialog with a tab-based
TableStructureEditor, making it consistent with query editors, data
viewers, and object browsers. Users can now switch between editing
table structure and running queries freely.
2026-05-24 21:17:35 +08:00
t8y2 6b6f7694fd fix(app): separate view source tabs and trim view metadata 2026-05-23 13:08:19 +08:00
t8y2 00fd206a57 fix(schema): auto-select schema when creating query from schema context menu
When right-clicking a PostgreSQL schema node and selecting "New Query",
the schema dropdown in the editor toolbar was not pre-selected. Pass
node.schema to createTab so the editor initializes with the correct schema.
2026-05-23 12:33:14 +08:00
t8y2 7a3ff3bff9 refactor(sql): move builders to Rust 2026-05-23 01:28:52 +08:00
t8y2 cb3e1d6e9f feat(query): move SQL editability analysis to Rust 2026-05-22 15:09:31 +08:00
t8y2 6c83b10b42 fix(mongo): preserve auth database for commands 2026-05-22 12:44:16 +08:00
SuLea-IT b23988161a Improve memory retention in query results (#395) 2026-05-22 10:42:58 +08:00
t8y2 47ec339d5a fix: preserve pending row edits when switching tabs (#362)
Wrap ContentArea in KeepAlive to cache tab instances across switches.
Add a module-level pending-changes cache in useDataGridEditor so edits
survive DataGrid destruction caused by result eviction and reload.
2026-05-20 16:22:17 +08:00
t8y2 261d43c1b7 fix(grid): respect page size row limits 2026-05-19 11:31:38 +08:00
t8y2 06683c57b1 chore(repo): move desktop app under apps 2026-05-18 02:35:39 +08:00