Commit Graph
71 Commits
Author SHA1 Message Date
t8y2 e515933ab3 fix(sql): quote postgres completion identifiers 2026-06-01 17:13:42 +08:00
t8y2 a0dcee51bc feat(i18n): add language selector to settings 2026-06-01 16:05:29 +08:00
vrustx e36e42723a Merge remote-tracking branch 'upstream/main' into codex/fix-260-482-overflow-navigation
# Conflicts:
#	apps/desktop/src/components/layout/AppTabBar.vue
#	apps/desktop/src/lib/tabPresentation.ts
2026-05-31 17:24:07 +08:00
vrustx 9d603b617d Refine overflow navigation review feedback 2026-05-31 11:47:44 +08:00
vrustx bc4e912504 Add configurable black app icons and logo (#564) 2026-05-31 10:15:59 +08:00
t8y2 742283bada feat(desktop): add wechat community link 2026-05-30 11:05:17 +08:00
t8y2 133f3cfc04 perf(desktop): use lightweight dropdown menus 2026-05-30 11:02:16 +08:00
t8y2 58b8552316 feat(desktop): expand window drag regions 2026-05-30 10:14:25 +08:00
t8y2 ed1db7db6b fix(ui): localize hardcoded strings 2026-05-30 10:01:12 +08:00
t8y2 8e04889745 fix(editor): insert dragged table references 2026-05-30 09:46:59 +08:00
t8y2 879da4b86f fix(editor): make table drag payload reliable 2026-05-30 09:42:12 +08:00
t8y2 eb9030b9ef fix(editor): allow dropped table references 2026-05-30 09:37:13 +08:00
t8y2 e324f35f28 feat(editor): support dragging tables into queries 2026-05-30 09:31:07 +08:00
3991ce2a90 Fix/issue 515 UI scale settings dialog (#520)
* feat(structure): auto-switch column length default based on data type

When changing a column's data type in the table structure editor, the
length parameter now updates to a sensible default for the new type
(e.g. int→11, tinyint→4) instead of preserving the old value.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(editor): preserve scroll position after SQL execution

After DDL/DML execution via the danger confirmation dialog, the editor
scrolls to the top, making it hard to locate the executed statement.
Fix by scrolling the cursor back into view after execution completes,
using nextTick + requestAnimationFrame to wait for Splitpanes layout
stabilization.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(settings): 修复大比例 UI 缩放下设置弹窗无法操作的问题

设置弹窗主体区域设置了固定最小高度 sm:min-h-[520px]。当全局 UI 缩放
调到很大(如 200%)时,webview 的 CSS 视口大幅缩小,外层 DialogContent
高度被 calc(100vh-80px) 限制到比 520px 更小,主体区域被强行撑到 520px,
溢出部分被 overflow-hidden 裁掉,导致底部页脚(应用/保存按钮)被裁出可视
区且没有滚动条,用户无法把缩放改回来。

移除该固定最小高度,让主体区域随视口收缩,内部 overflow-y-auto 接管滚动,
带 shrink-0 的页脚在任意缩放比例下始终可见。大屏无回归:DialogContent
仍保持 min(660px, ...) 的固定高度。

Fixes #515

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: t8y2 <1156263951@qq.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 12:31:05 +08:00
t8y2 660ba07264 feat(sidebar): add compact object display mode 2026-05-29 01:17:46 +08:00
t8y2 1d2fec4aee perf(editor): optimize SQL autocomplete responsiveness
- Add 150ms debounce on async completion path to reduce redundant Tauri IPC calls during rapid typing
- Parallelize schema table fetching with max concurrency of 5
- Separate schema list cache from table completion cache for longer-lived reuse
- Return keyword completions synchronously when no backend data is needed
- Lower snippet base boost for label-only matches so keywords rank above snippets when user types past snippet prefix
2026-05-28 23:31:31 +08:00
skyler 18e5ee35bb Merge pull request #505 from Michaelxwb/feature_mongo
feat(mongodb): 支持聚合查询、批量写入和 MCP 集成
2026-05-28 21:42:47 +08:00
t8y2 025b465bf1 fix(editor): preserve scroll position after SQL execution
After DDL/DML execution via the danger confirmation dialog, the editor
scrolls to the top, making it hard to locate the executed statement.
Fix by scrolling the cursor back into view after execution completes,
using nextTick + requestAnimationFrame to wait for Splitpanes layout
stabilization.
2026-05-28 21:36:29 +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 f45ee8f272 feat(settings): keep dialog open after apply 2026-05-28 20:36:56 +08:00
t8y2 486d9bb3a6 fix(connection): move query timeout into per-connection settings 2026-05-28 18:18:45 +08:00
t8y2 4de788ada2 fix(ci): align desktop tests with zoom changes 2026-05-28 17:51:36 +08:00
t8y2 f7f5758c85 feat(desktop): add global UI zoom settings and shortcuts 2026-05-28 17:43:06 +08:00
t8y2 1c03917609 fix: history context menu view details unresponsive and delete missing confirmation
- Fix "View Details" action: selectedEntry = entry → selectedEntry.value = entry
- Replace window.confirm() with Dialog-based confirmation for delete and clear
- Add history.clear i18n key to zh-CN and en locales
2026-05-28 14:33:50 +08:00
t8y2 967a12cc42 fix: remove fixed width from ask/agent mode dropdown to allow adaptive sizing 2026-05-28 14:33:24 +08:00
t8y2 56c937f844 refactor: migrate all context menus to CustomContextMenu
Replace reka-ui ContextMenu usage in QueryHistory, DataGrid,
AppTabBar, ObjectBrowser, and TreeItem with the lightweight
CustomContextMenu component. This removes the last reka-ui
context menu dependencies and eliminates the performance
overhead of multiple cached ContextMenu instances.
2026-05-28 13:24:03 +08:00
t8y2 cdadbc19f1 fix: replace reka-ui context menu with lightweight custom component to fix editor lag
The reka-ui ContextMenu component caused significant performance
degradation when multiple editor tabs were cached via KeepAlive,
due to its heavy state machine, provide/inject chain, and document-level
event listeners accumulating across cached instances.

Replaced with a minimal CustomContextMenu that renders via Teleport
without any DOM wrapping or reka-ui dependency, eliminating the lag
while preserving the same visual appearance and functionality.
2026-05-28 12:50:57 +08:00
t8y2 bd78436ab1 feat: add query editor context menu 2026-05-28 00:29:02 +08:00
t8y2 ac4313afee fix(sqlserver): avoid false unknown column diagnostics 2026-05-27 23:07:47 +08:00
t8y2 76409d3313 fix(editor): preserve snippet settings edits and polish completion UI 2026-05-27 17:46:17 +08:00
t8y2 915728ebec fix(editor): refresh SQL snippet completion after settings changes 2026-05-27 17:46:16 +08:00
t8y2 49dc85267a feat: add setting to hide table comments in sidebar tree 2026-05-27 16:23:58 +08:00
t8y2 68c8a5cc7b fix: fix value editor scrolling and add selection highlight
- Fix value editor not scrollable when content exceeds container
  (overflow-hidden -> overflow-auto)
- Extract vscodeSelectionLayer from QueryEditor into shared module
  and apply to value editor for consistent selection highlighting
2026-05-27 16:05:30 +08:00
t8y2 84e2093b82 fix(hana): allow empty database context 2026-05-27 15:53:05 +08:00
t8y2 5c47885a88 fix(editor): fix Cmd+Enter not executing SQL and Enter adding unwanted indent
- Move executeSql and saveSql keybindings to Prec.high to override
  defaultKeymap's Mod-Enter (insertBlankLine) and ensure Cmd+Enter
  executes the current query on macOS
- Override Enter key with insertNewlineKeepIndent instead of
  insertNewlineAndIndent to prevent unwanted continuedIndent from
  SQL language mode when breaking lines
2026-05-27 14:59:07 +08:00
t8y2 20fcea82b4 feat: extract EditorSearchPanel into reusable component
Move search/replace panel from QueryEditor into EditorSearchPanel.vue,
and use it in both QueryEditor and cell detail editor via programmatic
mounting. Removes dependency on CodeMirror's built-in search panel in
the cell detail editor, giving it the same custom search UI.
2026-05-27 12:14:38 +08:00
t8y2 22e8fece1c feat: add query editor replace shortcut 2026-05-27 10:50:54 +08:00
t8y2 0c9ee34a82 feat: add WebDAV cloud sync with encrypted secrets support
Add WebDAV-based settings sync for desktop app, including connection
configuration, editor settings, and optional encrypted secrets sync.
Also persist WebDAV remember-password preference across sessions.
2026-05-27 01:17:23 +08:00
t8y2 94487384e1 feat: add shortcut for accepting completion and update related functionality 2026-05-26 16:59:22 +08:00
t8y2 f5f986cdd6 fix: add Shiki SQL syntax highlighting to all SQL display components
Add useSqlHighlighter composable and integrate Shiki highlighting into
DangerConfirmDialog, QueryHistory, DataGrid (replacing regex-based
highlighting), SqlFileExecutionDialog, SchemaDiffDialog, TreeItem,
ObjectBrowser, and FieldLineageDialog. Also fix danger dialog overflow
by adding overflow-hidden to DialogContent and wrap/scroll support.
2026-05-26 15:31:15 +08:00
t8y2 8baa752721 feat: add compact data grid header controls 2026-05-25 21:29:37 +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 1b8355e7e6 style: fix frontend formatting (oxfmt) 2026-05-25 10:59:30 +08:00
t8y2 6107778358 feat: support customizable SQL snippet templates with custom trigger keys
Users can now create, edit, and delete SQL snippet templates from the settings dialog (new "Snippets" tab). Each template has a label, trigger prefix, and SQL body. Built-in defaults are modifiable and can be restored. Templates persist across sessions via the existing settings storage.
2026-05-25 01:43:09 +08:00
t8y2 ae49d87166 fix: sync gutter element heights during editor font size zoom
CSS variable changes alone don't trigger CodeMirror's measure cycle, so
gutter element heights would diverge from content line heights. The fix
reconfigures the font theme compartment (throttled to once per rAF) to
force a proper state transition → measure → syncGutters path.

Also adds missing fontFamily on .cm-gutters and i18n for "Follow app theme".
2026-05-25 00:23:44 +08:00
t8y2 24c334ef61 feat(i18n): add completion and search translations, remove hardcoded Chinese strings
- Add editor.completion (46 keys) and editor.search (10 keys) i18n sections
  across zh-CN, en, es locales, including 38 SQL function descriptions
- Create SqlCompletionTranslations interface in sqlCompletion.ts, pass via
  buildSqlCompletionItems/buildSqlCompletionItemsFromContext parameters
- Replace static FUNCTION_DESCRIPTIONS Map with getFunctionDescriptions(t?)
- Replace 11 hardcoded search toolbar strings in QueryEditor.vue with t()
- Fix YashanDB product label in connectionUrl.ts
2026-05-23 15:47:18 +08:00
t8y2 c7fa74f90c feat(sql): progressive autocomplete enhancements — fuzzy matching, type-aware hints, and more
- Fuzzy matching with character-order scoring (typo/abbreviation tolerant)
- Context-aware keyword filtering (DDL hidden in SELECT, etc.)
- CTE/subquery column resolution from parsed definitions
- INSERT column list completion
- Schema name completion
- Smart GROUP BY non-aggregated column suggestions
- Better FK join inference (shared FK, parent_id, created_by patterns)
- Table alias suggestions
- SELECT * expansion to explicit column list
- Type-aware comparison value hints (string/numeric/boolean/NULL)
- Function signature inline documentation (30+ functions)
- History-based learning ranking via recordCompletionSelection()
- Epoch-based request debouncing in QueryEditor.vue
- Irregular plural handling for singular table names
- Quoted identifier parsing for dots in names
2026-05-23 15:31:05 +08:00
t8y2 cd5d1b928d feat(grid): add configurable keyboard shortcuts for copy and delete current row 2026-05-23 12:44:49 +08:00
t8y2 e62ad97bcd feat(editor): enhance SQL completion icons and styles 2026-05-23 12:33:14 +08:00
t8y2 2fea0c38c5 fix(app): harden clipboard copy flows 2026-05-23 10:52:19 +08:00