Commit Graph
1007 Commits
Author SHA1 Message Date
t8y2 26b6c50800 fix: add explicit @source to prevent Tailwind styles missing on tmpfs (#167) 2026-05-09 09:52:13 +08:00
t8y2 424bbdfc52 feat: add value editor and Set NULL in cell detail panel
Double-click value area or click Edit button to open textarea editor
for long text/JSON. Add Set NULL button for quick null assignment.
Fix: null values via ?? operator were ignored in dirty row display.
2026-05-09 01:06:19 +08:00
t8y2 ad79642502 feat: auto-fit column widths based on header and data content
Scan column names and first 50 rows to calculate optimal column width
instead of using a fixed 150px default. Double-click column separator
to auto-fit individual columns. Min 60px, max 400px.
2026-05-09 00:51:51 +08:00
t8y2 9ea098bd57 refactor: use icons for tab mode and Navicat-style tab titles
Replace text badges (SQL/表) with icons (Code2/Table2), remove
connection color dot, and adopt table@database.schema naming.
2026-05-09 00:21:56 +08:00
t8y2 70b55fe49a feat: add independent WHERE and ORDER BY filter inputs to data grid (#165)
- Split WHERE and ORDER BY into separate inputs alongside search bar
- Three equal sections: Search | WHERE | ORDER BY with border separators
- Preserve tableMeta on error so filters remain visible after failed queries
- Show schema@database format in table data badge
2026-05-09 00:11:46 +08:00
t8y2 dfd4d2d99d feat: auto-detect OceanBase Oracle mode and use Oracle-style schema queries (#155)
Introduce MysqlMode enum to distinguish Normal/Bare/OceanBaseOracle MySQL
connections. On connect, if driver_profile contains "oceanbase", detect
tenant mode via SHOW VARIABLES LIKE 'ob_compatibility_mode'. When Oracle
mode is detected, schema queries use ALL_TABLES/ALL_TAB_COLUMNS/etc.
2026-05-08 22:57:48 +08:00
t8y2 0e2fbc5a40 feat: show sort hint icon on column header hover (#165) 2026-05-08 21:44:56 +08:00
t8y2 bd08d9865d feat: add "Copy as INSERT" to data grid context menu (#166) 2026-05-08 21:33:41 +08:00
t8y2 77ed6404a0 fix: disable overscroll bounce on data grid to prevent header desync (#156) 2026-05-08 20:38:40 +08:00
t8y2 000e16e633 fix: remove EXISTS filter from GaussDB list_schemas for consistency (#154)
The EXISTS check only showed schemas containing tables, hiding empty
schemas that PostgreSQL driver would display. This caused a regression
for openGauss users after switching to the native GaussDB driver.
2026-05-08 20:20:52 +08:00
t8y2 e83a3bbab9 fix: only show configured database in sidebar when specified (#160) 2026-05-08 19:52:36 +08:00
t8y2 0e6617c817 feat: support create/drop database and schema from sidebar context menu
Add context menu actions for creating and dropping databases and schemas
directly from the sidebar tree. Supports MySQL, PostgreSQL, SQL Server,
ClickHouse, Oracle, and other server-based databases.
2026-05-08 19:24:13 +08:00
t8y2 acfe9d1b23 fix: disable native context menu and add sidebar refresh button (#159)
Prevent browser native "Reload" from resetting app state in Tauri,
and add a refresh button to the sidebar header for convenience.
2026-05-08 19:05:21 +08:00
t8y2 85be58822e fix(oracle): Oracle 11g compatibility and sidebar improvements
- Rewrite FETCH FIRST to ROWNUM for Oracle 11g (no 12c+ syntax)
- Filter APEX_*, FLOWS_*, $-prefixed system schemas from sidebar
- Set schema prefix on table nodes for schema-aware databases
- Use all_objects instead of all_tables+all_views (4x faster)
- Disable statement cache to avoid stale cursor issues
- Update rust-oracle with streaming TTC, drain fixes
2026-05-08 18:54:24 +08:00
rarnu 8a249a2194 add: 在结果集中增加数据过滤的功能 (#163)
* add: 在结果集中增加数据过滤的功能

* 1. 提取 isResultsContext — 新增具名计算属性,替代魔法字符串 results,模板和逻辑中统一使用。

    2. wherePredicate 在 results 场景下短路 — 加了 canUseWhereSearch.value ? ... : undefined 守卫,避免在结果集界面无意义地调用 normalizeWhereInput()。在 results 上下文下:
       - wherePredicate → undefined
       - isWhereSearch → false(因为 canUseWhereSearch 为 false)
       - activeWhereInput → undefined
       - 搜索框 placeholder 切换为纯 search(由 canUseWhereSearch 控制,已存在)
       - 应用按钮隐藏(v-if=isWhereSearch,已存在)

    逻辑链现在是一致的:canUseWhereSearch === false 时,所有 where 相关功能(解析、建议、按钮、回车提交)全部失效
2026-05-08 18:33:59 +08:00
Bacon2994 3b4b6c1ff7 fix(query): 修复查询结果表头提示与全量排序 (#164)
* fix(grid): 修复查询结果表头提示与排序

修复 MySQL 查询结果列元数据取错库名的问题,并补齐查询结果全量排序链路,避免表头提示与排序行为失效。

* fix(query): 修复结果排序重复列名报错
2026-05-08 18:31:09 +08:00
t8y2 c036dd19e4 feat: support middle-click to close tabs (#162) 2026-05-08 17:19:31 +08:00
t8y2 edda036f3c fix: add type fallback for MySQL to prevent all-NULL display (#40)
Add i32/i16 type decoding and try_get_unchecked fallback to
mysql_value_to_json(), fixing all columns showing NULL on older
MySQL versions (e.g. 5.6) where sqlx type-checked decoding fails.
2026-05-08 17:01:32 +08:00
t8y2 92fe47b913 fix: pass SQL directly in AI execute to avoid stale state (#153)
When executing SQL from the AI panel, pass the SQL string directly to
tryExecute() instead of relying on the executableSql computed property,
which could use stale selectedSql or cursorPos values.
2026-05-08 16:45:01 +08:00
t8y2 ae890092dd fix(ci): use pull_request_target for fork PR secret access 2026-05-08 16:07:48 +08:00
rarnu 47ad960bbb Fix: DataGrid数据集和工具栏的修复及加强 (#157)
* fix: 修复结果集内的数据过滤功能

* add: 将原先误删的WHERE查询加回

* add: 合并事务栏和搜索栏,并且在结果集中不启用搜索功能

* add: 修复在表数据和结果集模式下,DataGrid刷新时未保留查询条件的问题,将表数据和结果集的处理逻辑进行拆分

* add: 与主分支合并,解决冲突

* add: 恢复i18n

* add: 恢复useDataGridActions.ts

* add: 恢复ContentArea.vue

* add: 恢复DataGrid.vue

* fix: 修复括号自动配对的bug

* add: 将DDL按钮移到表数据编辑的第一行尾,并且不在DataGrid中显示
2026-05-08 16:04:21 +08:00
t8y2 1777e17353 fix(ci): use Python for robust JSON handling in auto-review 2026-05-08 16:00:31 +08:00
t8y2 6dc6e15ff3 ci: add auto PR review with DeepSeek 2026-05-08 15:40:49 +08:00
t8y2 53702984b1 ci: add QQ group notification for issues and PRs 2026-05-08 13:50:02 +08:00
t8y2 7c3e3f68d4 chore(mcp): bump version to 0.2.1 2026-05-08 12:46:42 +08:00
t8y2 68d8776e8f feat(mcp): notify desktop UI to reload after connection add/remove
Add /reload-connections bridge route that emits mcp-reload-connections
event, triggering the frontend to re-read connections from SQLite.
2026-05-08 12:44:16 +08:00
t8y2 30b6c472ea ci: add manual Docker dev build workflow
Allows building and pushing a `dev`-tagged Docker image via
workflow_dispatch without affecting the official `latest` tag.
2026-05-08 12:20:31 +08:00
t8y2 5a281a8216 docs(mcp): update docs for connection CRUD tools and SQLite storage
- Add dbx_add_connection and dbx_remove_connection to all docs
- Update storage references from JSON files to SQLite (dbx.db)
- Bump MCP server version to 0.2.0
2026-05-08 12:17:52 +08:00
t8y2 4c97aa0516 feat(mcp): add dbx_add_connection and dbx_remove_connection tools
Allow AI agents to manage database connections directly through MCP
without requiring the DBX desktop app.
2026-05-08 12:14:50 +08:00
t8y2 aad8c4a473 fix(mcp): read connections from SQLite instead of deprecated JSON files
After migrating storage to SQLite, the MCP server was still reading
from connections.json/secrets.json which no longer exist. Switch to
better-sqlite3 to read directly from dbx.db.
2026-05-08 12:09:38 +08:00
t8y2 b06d5ded04 fix(redis): align value viewer header height with key browser search bar 2026-05-08 11:49:03 +08:00
skyler de244a0b12 Merge pull request #149 from Bacon2994/codex/redis-rdm-consistency
feat(redis): 修复全库键浏览与二进制展示
2026-05-08 11:34:20 +08:00
t8y2 9fd16e3c1f perf(grid): pre-stringify JSON/JSONB values and truncate cell display
Serialize JSON/JSONB as strings in Postgres and MySQL drivers to avoid
repeated JSON.stringify in the render loop. Truncate cell display to
256 chars so the browser doesn't lay out huge text nodes on scroll.
2026-05-08 11:23:31 +08:00
t8y2 fdf65ac5e3 fix(grid): display JSONB values as JSON string in edit mode and detail panel (#152)
String() on objects produces [object Object]. Use JSON.stringify()
consistently wherever cell values are converted to strings.
2026-05-08 11:12:05 +08:00
t8y2 9683826b15 fix: support MongoDB replica set connections via SSH tunnel (#151)
Rewrite MongoDB URI to use tunnel endpoint and add directConnection=true
when connecting through SSH, so the driver doesn't try to discover
unreachable replica set members.
2026-05-08 11:09:46 +08:00
Bacon2994 3106dfce6f fix(redis): 避免反斜杠字符串误判为二进制 2026-05-08 11:09:25 +08:00
Bacon2994 5d00dd583a style(i18n): 修正英文文案格式 2026-05-08 10:39:12 +08:00
Bacon2994 d6f5c25c17 fix(redis): 优化 UTF-8 展示与提示文案 2026-05-08 10:31:51 +08:00
Bacon2994 b669efb5ff style(redis): 修正 Rust 格式检查 2026-05-08 10:11:44 +08:00
Bacon2994 0fb6aebd59 feat(redis): 修复全库键浏览与二进制展示 2026-05-08 10:06:16 +08:00
t8y2 68c0639e3a feat: persist and restore window state across sessions 2026-05-08 00:12:09 +08:00
t8y2 631db17a08 refactor: merge data table info bar and transaction toolbar into one row
Move refresh/commit/rollback buttons from DataGrid's internal toolbar
to ContentArea's table info header. Remove the redundant second row
and the column count display.
2026-05-07 23:48:51 +08:00
t8y2 52add6a503 fix: raise toast z-index above dialog overlay 2026-05-07 23:30:34 +08:00
t8y2 9206daf679 fix: allow text selection in DDL panel
Closes #143
2026-05-07 23:22:47 +08:00
t8y2 65d184fd03 fix: skip macOS framework lookup in dev mode via build.rs
Use CARGO_MANIFEST_DIR to detect whether CI-copied dylibs exist.
When absent (local dev), override frameworks to empty array so
tauri dev doesn't require libodbc/libltdl installed locally.

Also gitignore *.dylib in src-tauri/ to prevent accidental commits.
2026-05-07 22:21:13 +08:00
t8y2 9a7c12c65a fix: restore macOS frameworks to tauri.conf.json for proper bundling
TAURI_CONFIG env var merge did not apply frameworks to the bundler,
resulting in libodbc/libltdl missing from Contents/Frameworks/.

Restore frameworks in tauri.conf.json and skip them in dev mode via
build.rs when the dylibs are not present locally.
v0.4.3
2026-05-07 22:14:01 +08:00
rarnu 53c5c28542 fix: 修复结果集内的数据过滤功能 (#145) 2026-05-07 22:05:27 +08:00
t8y2 75c7e11f55 fix(docker): touch source files to force cargo recompilation
Docker COPY preserves original file timestamps, which can be older than
the dummy-source binary compiled in the dependency caching layer. Cargo
sees the sources as unchanged and skips recompilation, producing a 329KB
empty binary instead of the real web server.
2026-05-07 21:12:41 +08:00
t8y2 198ac54355 feat: add GitHub proxy endpoints for faster update checks
Add hwdns.net and gh-proxy.org as proxy fallbacks before direct GitHub
access, with 10s timeout per endpoint. Significantly improves update
check speed in regions with slow GitHub connectivity.
2026-05-07 21:07:55 +08:00
t8y2 aefb6bf0ef fix: prevent SELECT with REPLACE/TRUNCATE functions from triggering danger warning
The DANGER_RE regex matched keywords anywhere in the SQL text, causing
SELECT queries using REPLACE() or TRUNCATE() functions to incorrectly
trigger the destructive-SQL warning dialog. Check only the first keyword
of each semicolon-separated statement instead.

Also fix dialog content overflow by adding min-w-0 to the <pre> element,
and move macOS frameworks config from tauri.conf.json to CI-only
TAURI_CONFIG so local `tauri dev` no longer requires libltdl/libodbc
to be globally installed.

Closes #135
2026-05-07 19:07:41 +08:00