Commit Graph
333 Commits
Author SHA1 Message Date
Abeautifulsnow a5359798dc feat(redis): add auto-refresh countdown for key TTL display
* @
feat(redis): add auto-refresh countdown for Redis key TTL display

在 Redis 值查看器的 TTL 徽章旁增加自动刷新按钮,选中时显示 TTL 实时倒计时
(每秒递减),倒计时归零自动刷新数据,刷新按钮持续旋转。TTL 到期或网络异常
时自动关闭自动刷新避免死循环。

改动:
- RedisValueViewer.vue:新增 autoRefresh 状态、定时器与倒计时逻辑,模板增加
  Clock 切换按钮,RefreshCw 按钮支持 animate-spin 旋转
- load() 内复位倒计时;onBeforeUnmount 清理定时器

修复(review):
- #I01 TTL 到期/连接断开后自动关闭 autoRefresh 避免无限重试
- #C01 load() reject 增加 .catch() 处理 UnhandledPromiseRejection

i18n:zh-CN / zh-TW / en / ja / es / it / pt-BR 7 种语言补充 autoRefresh key
@

* @
test(redis): extract auto-refresh logic and add unit tests

将自动刷新核心决策逻辑提取为 lib/redis/redisAutoRefresh.ts 纯函数模块,
并编写 11 个单元测试覆盖状态机转换、TTL 显示计算和自动停止条件。

新增:
- lib/redis/redisAutoRefresh.ts:computeAutoRefreshTick / shouldStopAutoRefresh /
  computeDisplayTtl 纯函数
- lib/__tests__/redis/redisAutoRefresh.spec.ts:11 个测试用例

重构:
- RedisValueViewer.vue 改用提取后的纯函数,确保测试覆盖即实际运行逻辑
@
2026-07-08 15:37:27 +08:00
zipgandzipg ae288a0345 fix(sql): 兼容 MySQL 建表注释选项拆分 (#2837)
Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-08 13:29:55 +08:00
gggaiitx 6041c3f70b fix(sql): quote all IN-list values uniformly in expaste
Previously, pure numeric values (e.g. 90001543) in the IN clause were not quoted while values with leading zeros (e.g. 00040787) were, causing inconsistent quoting. Now all non-NULL values are uniformly quoted.
2026-07-08 10:36:01 +08:00
t8y2 611f19fd8b fix(sql): keep column completion after subqueries 2026-07-08 00:53:05 +08:00
t8y2 b3f09219ab fix(sql): cover MySQL dynamic SQL variables 2026-07-08 00:21:27 +08: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
t8y2 ad9841ab77 fix(import): allow selecting create-table column types 2026-07-08 00:02:47 +08:00
zipg 5b25299417 fix(zookeeper): prevent root znode create path 2026-07-07 22:44:04 +08:00
miracle 9288717ac4 fix(sql): ignore native SQL variables 2026-07-07 22:24:48 +08:00
zipg 6cba08fccb fix(kingbase): 修复连接与元数据查询异常 2026-07-07 22:12:36 +08:00
t8y2 63ff9321a4 fix(editor): cover cross-database column completion 2026-07-07 21:51:04 +08:00
t8y2 42eaddac45 feat(editor): improve qualified table completion 2026-07-07 18:57:46 +08:00
t8y2 5a9ab5c036 feat(editor): add configurable line comment shortcut 2026-07-07 18:32:57 +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 d50f1761d6 fix(sql): handle database drag and routine export 2026-07-07 15:54:48 +08:00
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