Commit Graph
118 Commits
Author SHA1 Message Date
zipg d90847bbba feat(ai): support SQL library file references 2026-07-07 15:39:10 +08:00
LRcoding fc01cea80f fix(oracle): preserve plsql block terminators 2026-07-07 15:29:43 +08:00
52835f1eb0 fix: show timeout action for SQL execution timeouts
* fix: show timeout action for SQL execution timeouts

* fix: detect agent RPC timeout in query error action

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
Co-authored-by: t8y2 <1156263951@qq.com>
2026-07-07 13:50:29 +08:00
t8y2 6e7f0578b6 fix(saphana): keep DO blocks together 2026-07-07 13:23:53 +08:00
t8y2 65af804099 feat(editor): allow disabling SQL snippets 2026-07-07 12:36:51 +08:00
zipgandzipg 705bacba04 feat(editor): add ExPaste paste-as-IN-condition helper (#2746)
* feat: add ExPaste SQL IN condition helper

* fix: restrict ExPaste to SQL-like editors

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-07 12:33:49 +08:00
zipgandzipg 6efe1797a3 fix(editor): show gutter run button for statements with leading whitespace (#2729)
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-07 10:53:27 +08:00
zipg 668919a7c9 fix(gbase8s): make view source saves safer 2026-07-07 01:50:53 +08:00
二丫讲梵 18e5df6f5e feat(query-editor): enhance current statement framing 2026-07-06 23:09:21 +08:00
t8y2 b6b510d632 feat(sql): support MySQL routine blocks 2026-07-06 19:06:34 +08:00
ce096ca21f fix(completion): scoped table lookup, preserve casing, lower Oracle table-function boost
* fix: improve schema-qualified SQL completion

* fix(completion): preserve casing in completion table cache key and relaxed filter

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
Co-authored-by: t8y2 <1156263951@qq.com>
2026-07-06 18:28:23 +08:00
zipgandzipg a212ccbfa7 fix(kafka): support cluster address separators
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 18:11:10 +08:00
zipgandzipg 7ccc632ce8 fix(sql): improve completion triggers
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 17:22:24 +08:00
t8y2 90bdacfd12 fix(grid): support multiline bulk edit values 2026-07-06 17:18:38 +08:00
zipgandzipg bc16f784ad fix(sql): keep set operation statements together across newlines
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-06 17:01:25 +08:00
Abeautifulsnow 8539011f25 feat(ai): split Ask/Agent action menus with task-oriented Agent actions
* feat(ai): add task-oriented Agent actions with per-action contract

Introduce three Agent-native actions — query, exploreSchema,
executeAndExplain — so Agent mode surfaces task-oriented operations
instead of reusing Ask's SQL-producing action set.

- ai.ts: extend AiAction with the new actions; add ASK_ACTIONS /
  AGENT_ACTIONS and defaultActionForMode / isValidActionForMode
  helpers; raise maxTokens for the explanatory task actions.
- aiSkills.ts: add skill definitions (zh/en) for the three actions.
- aiAgentPlan.ts: task actions no longer emit a misleading
  "unsupported_action" execute step; they execute via the
  execute_query tool events, not the legacy client-side path.
- agent_loop.rs: per-action task-contract rules in both the prompt
  augmentation and repair paths (query -> execute & answer from real
  data; exploreSchema -> list_tables/get_columns; executeAndExplain
  -> run current SQL & explain).
- i18n (en/zh-CN/zh-TW): new action labels, placeholders, a
  generateNoExec label for Agent mode, and a task-oriented agent
  modeHint.

es/it/ja/pt-BR have no `ai` section and fall back to `en`, matching
existing coverage.

* feat(ai): split Ask/Agent action menus with mode-aware defaults

Wire the new Agent task actions into the assistant UI so each mode
shows a distinct, intent-matching action set.

- actionButtons is now a computed returning Ask or Agent buttons
  based on assistantMode. Agent menu: query / exploreSchema /
  executeAndExplain / generate (labeled "生成但不执行" via
  generateNoExec). Ask menu is unchanged.
- Switching mode lands on that mode's default (Ask -> generate,
  Agent -> query); the shared `generate` is not carried across
  because its label/semantics differ per mode. Vector DBs stay on
  `generate` since their action menu is hidden and they lack SQL
  tools (no execute_query contract).
- External Ask-style triggers (Fix with AI, Explain history) switch
  to Ask mode when invoked from Agent mode so the action is valid
  and the menu reflects what runs.
- Reset the active action to the mode default after each send.

* test(ai): cover Agent task-action contract and mode/action mapping

Lock in the deterministic parts of the Ask/Agent split so only the
LLM-behavior criteria need manual verification.

Backend (agent_loop.rs):
- query contract instructs the LLM to call execute_query and is not
  treated as a SQL-producing action.
- exploreSchema contract points to list_tables/get_columns and says
  not to execute data queries.
- executeAndExplain contract tells the LLM to run the current SQL.
- task actions do not require a SQL deliverable (a conclusion without
  a fenced SQL block still satisfies the contract).
- query repair prompt also targets execute_query.

Frontend (aiActions.spec.ts):
- defaultActionForMode: Ask -> generate, Agent -> query (not generate).
- isValidActionForMode: generate valid in both; Ask-only actions
  rejected in Agent mode and vice versa.
- ASK_ACTIONS / AGENT_ACTIONS composition (Agent menu starts with
  query and still offers generate).

* fix(ai): correct action menu on mode-switched triggers and i18n gaps

Issues found during review of the Ask/Agent action split:

- [#I01] triggerAction (Fix with AI / Explain history) invoked from
  Agent mode switched to Ask and set the action, but the mode-switch
  watch then reset activeAction to the Ask default ("generate"),
  overwriting the action just set — so the menu showed "Generate SQL"
  during a fix. Add a suppressModeActionReset flag so programmatic
  mode switches don't clobber the explicitly-set action.
- [#C01] Remove dead `unsupported_action` reason: buildAiAgentPlan no
  longer produces it, so drop the type variant and the unreachable
  skippedTitleKey case.
- [#I02] es/it/ja/pt-BR were missing the new Agent action keys
  (query/exploreSchema/executeAndExplain/generateNoExec) and their
  placeholders, causing English fallback in the Agent menu. Add the
  translations to match each locale's existing style.

* test(ai): align app-tests with task-action split

- aiSkills: add query/exploreSchema/executeAndExplain to the expected
  action set; broaden the id check (new ids are not _sql-suffixed) and
  relax the userInstruction assertion (schema inspection need not mention SQL).
- aiAgentPlan: drop the unsupported_action skipped step for non-generate
  actions (#C01 removed it from the plan and the reason union); add coverage
  for task-oriented Agent actions not driving client-side execution.

* test(ai): pin locale in dialect prompt spec

buildSystemPrompt selects zh/en copy via currentLocale(), which reflects the
host navigator.language. The spec asserts English strings, so it failed on
zh-CN machines (e.g. Windows with a Chinese system locale) while passing on
CI's en-US runners. Pin the locale to en in beforeAll so the assertions are
deterministic regardless of the host OS locale.
2026-07-06 14:41:39 +08:00
miracle b118ca31ed [Feat]:实现SQL变量替换 (#2597) 2026-07-06 13:21:45 +08:00
wuxiemian 987b0fd263 fix: improve SQL table and JOIN completion (#2629) 2026-07-06 13:19:37 +08:00
zipgandstaff dc50356000 fix: 修复 Windows 快捷键显示异常 (#2599)
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-07-06 12:48:55 +08:00
t8y2 880b6ac6e1 fix(mysql): show server-provided collations 2026-07-06 11:03:28 +08:00
t8y2 2bfd03cca4 feat(database): add database creation and property editing 2026-07-06 02:00:01 +08:00
wuxiemian 3fdcc2d454 feat(sqlCompletion): support insert all-column completion 2026-07-06 01:29:23 +08:00
t8y2 4666f8a5f2 feat(import): add table import wizard 2026-07-06 00:01:41 +08:00
8b035d0989 feat(editor): add SQL editor context menu shortcuts
* feat(editor): add SQL editor context menu shortcuts

* chore(i18n): autofill new translations

---------

Co-authored-by: faithererer <faithererer@users.noreply.github.com>
Co-authored-by: dbx-i18n-bot <github-actions[bot]@users.noreply.github.com>
2026-07-05 19:38:51 +08:00
t8y2 8883a6b3b7 fix(desktop): format loading elapsed time 2026-07-05 02:45:46 +08:00
t8y2 6b13564180 fix(desktop): persist UI state asynchronously 2026-07-05 02:22:13 +08:00
zipgandstaff 5c35755219 Feature:新增多套应用配色主题 (#2559)
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
2026-07-05 00:34:47 +08:00
zipg 896580f1c5 feat(saved-sql): restore editor position 2026-07-05 00:34:00 +08:00
t8y2 cec17844a9 feat(structure): disable Oracle-like integer length 2026-07-04 23:17:51 +08:00
onenewcode f48e751d90 fix(redis): 修复 Redis set 类型的值中有乱码 (#2554) 2026-07-04 23:03:29 +08:00
t8y2 223ecbec20 fix(oracle): skip rowid for view data queries 2026-07-04 17:07:43 +08:00
t8y2 7e7c4944e9 refactor(desktop): organize lib modules by domain 2026-07-04 13:53:52 +08:00
t8y2 90f0594e93 feat(sql): add semantic SQL completion engine 2026-07-04 13:20:13 +08:00
二丫讲梵 90d2ede740 feat(sidebar): add connection copy paste shortcuts 2026-07-04 12:19:56 +08:00
t8y2 b80f3e8088 feat(connection): add HTTP tunnel 2026-07-03 22:11:03 +08:00
t8y2 2f9a0869a9 feat(connection): duplicate selected connections 2026-07-03 16:59:16 +08:00
Abeautifulsnow fe4908321e feat(ai): support editing sent user messages
* feat(ai): support editing sent user messages

Adds inline edit support for user messages in the AI chat panel.
Hover over a user message to reveal the edit button; confirming the
edit truncates all subsequent history and re-sends with the new content.

* fix(ai): fix IME composition and ref-focus regression in message edit

- Handle IME composition events in onEditKeydown to prevent accidental
  submission on Enter during CJK candidate selection
- Replace per-render :ref focus callback with nextTick + data attribute
  to avoid cursor jumping on every keystroke
- Extract visibleToActualIndex into aiMessageEdit.ts for testability
- Add 8 unit tests covering index mapping with contextSummary messages

* fix(ai): prevent data loss and mention pollution in message edit

- Guard connection/config before truncating messages to prevent silent data
  loss when send() bails early
- Clear selectedMentions before resend to prevent stale chips from polluting
  edited message content
2026-07-03 15:18:56 +08:00
二丫讲梵 f1f4518b67 feat(ai-table-mentions): 增加AI表格提及候选项的过滤和格式化功能 (#2502)
- 引入AI表格提及候选项的限制常量
- 实现过滤候选项的函数,支持根据表名过滤
- 添加单元测试以验证提及解析和候选项过滤的功能
2026-07-03 14:17:43 +08:00
LRcoding 21cec24e75 fix(mysql): support cleartext password auth option (#2499) 2026-07-03 13:47:47 +08:00
Spencer.Chang cb42a4184a fix(editor): avoid run gutter for MySQL REPLACE function 2026-07-03 10:36:03 +08:00
t8y2 ff73a1df42 fix(editor): keep semicolon cursor on statement 2026-07-03 00:00:44 +08:00
大峰 9083dc0e53 fix(editor): support qualified table navigation 2026-07-02 22:00:51 +08:00
Abeautifulsnow e7dffeca37 fix(ai): tool call status cards, table overflow, streaming TextDelta
* fix(ai): merge tool call status cards

* fix(ai): constrain markdown table overflow

* fix(ai): restore streaming of answer text via TextDelta events

The on_chunk closure was missing live AgentEvent::TextDelta emission for text content, causing the AI answer text to appear all at once after the turn completed. Reasoning deltas were unaffected.

Root cause: commit c30033628 rewrote the on_chunk closure and accidentally dropped the TextDelta emit line while keeping ReasoningDelta intact.

Fix: restore TextDelta emit in on_chunk for incremental streaming, and remove the post-turn full-TextDelta workaround which would duplicate content.

* test(ai): extract chunk_to_events and add streaming event tests

Extract the event-generation logic from the on_chunk closure into a pure function chunk_to_events() to make it testable, and add 6 unit tests covering all chunk content combinations: text-only, reasoning-only, mixed, empty, and edge cases.

This ensures a regression like the one fixed in the previous commit (where TextDelta emission was dropped while ReasoningDelta was kept) would be caught by tests.
2026-07-02 18:49:50 +08:00
Spencer.Chang b249768322 fix(grid): improve condition history dropdown behavior 2026-07-02 16:46:46 +08:00
8747df53ef fix(mongodb): support multi-command execution
* fix mongodb multi-command execution

* fix(connection): 复制连接时保持在同一组内

- 修改 `addConnection` 方法以支持指定目标组 ID
- 更新 `duplicateConnection` 函数以传递目标组 ID
- 添加测试用例以验证复制连接的功能

* fix: add MongoDB data transfer entry

* feat(editor): SQL 编辑器选区大小写转换

Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>

* fix(editor): 修复SQL快捷执行导致执行全量SQL的问题 (#2384)

- 将执行SQL语句的逻辑从直接请求改为通过事件发射
- 增强了代码的可扩展性和可维护性

* fix(sidebar): cache tooltip overflow measurement

* fix(dialog): allow dragging window from modal overlay

* fix(oracle): reuse shared pool for data tabs

* fix(sidebar): reduce comment text repaint cost

* fix(saved-sql): preserve folder on metadata save

* fix(agent): execute transaction control SQL as statements

* feat(vector): add Qdrant/Milvus collection dimension display (#2396)

* fix(oracle): 修复时间字段编辑和表结构修改报错

Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>

* fix(agents): limit common version bumps

---------

Co-authored-by: 二丫讲梵 <eryajf@163.com>
Co-authored-by: zipg <geeky@foxmail.com>
Co-authored-by: staff <staff@qimaos-MacBook-Pro.local>
Co-authored-by: t8y2 <1156263951@qq.com>
Co-authored-by: lexmin0412 <zhangle_dev@outlook.com>
2026-07-02 12:19:38 +08:00
t8y2 6ee535de34 fix(sidebar): cache tooltip overflow measurement 2026-07-02 11:35:37 +08:00
二丫讲梵 de7f2fe6b6 fix(editor): 修复SQL快捷执行导致执行全量SQL的问题 (#2384)
- 将执行SQL语句的逻辑从直接请求改为通过事件发射
- 增强了代码的可扩展性和可维护性
2026-07-02 11:18:14 +08:00
Abeautifulsnow d55a708d6a feat(query): add manual transaction controls 2026-07-02 01:30:31 +08:00
luoianun 95e3cb6571 fix(presto): optimize metadata completion 2026-07-01 19:05:45 +08:00
t8y2 d88e1b1e6a fix(mcp): use node entry for Windows configs 2026-07-01 13:40:48 +08:00