Commit Graph
303 Commits
Author SHA1 Message Date
t8y2 4a64240e8a feat: highlight selected SQL matches 2026-06-07 17:43:11 +08:00
Caisinandcaisin 13363b9094 Enable safe multi-connection cleanup from the sidebar (#816)
The sidebar already supports multi-select, so deletion now resolves the context-clicked selected connection set before confirming. Connection removal gained a batched path to persist once while pruning sidebar layout, pins, active state, connection errors, and stale selection for every removed connection.

Constraint: No new dependencies and existing single-connection delete behavior must remain available.\nRejected: Delete every selected tree item regardless of type | mixed tree selections could unexpectedly remove connections while table/object deletion has separate SQL confirmation behavior.\nConfidence: high\nScope-risk: narrow\nTested: pnpm fmt; pnpm test; pnpm typecheck; pnpm lint; pnpm build\nNot-tested: Manual desktop UI interaction against a running Tauri window

Co-authored-by: caisin <caisin@caisins-Mac-mini.local>
2026-06-07 16:58:49 +08:00
t8y2 74e19ec6a3 feat(databend): support agent driver 2026-06-07 16:39:22 +08:00
t8y2 15b792a424 fix(editor): improve selection rendering 2026-06-07 14:23:18 +08:00
e3087e0954 fix(sql): rank referenced-table columns above keywords in completion (#801) (#810)
When editing SQL with concrete tables already referenced (a FROM clause,
a "table." qualifier, or an INSERT column list), column completions only
carried `computeBoost + keyBoost (0/500)` — lower than keyword boosts
(1200-1900) — so the table's own columns were interleaved among keywords
instead of ranking at the top where the user expects them.

Give columns a relevance boost (+2000) in these referenced-table contexts
so they rank above plain keywords. Added a unit test asserting columns
outrank keywords when a table is referenced.

Co-authored-by: vrustx <vrustx@vrustxdeMac-mini.local>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 13:53:58 +08:00
t8y2 a3e45cd721 feat(iotdb): add Apache IoTDB support 2026-06-07 10:29:05 +08:00
skyler 795806186d Merge pull request #804 from serenez/fix/528-detail-dialog-ui
fix(grid): polish cell/row/column detail dialogs (#528)
2026-06-07 09:30:38 +08:00
vrustxandClaude Opus 4.8 fe0f34a6d9 fix(grid): polish cell/row/column detail dialogs (#528)
Address the follow-up UI feedback on the data detail dialogs:

- cell detail: toggle between raw value and formatted JSON inside a single
  value area (via a "format JSON" button) instead of stacking the value,
  formatted value and formatted JSON blocks, removing the redundancy.
- kill horizontal scrollbars: add break-words to the formatted-value block,
  and constrain row/column detail value columns with w-full max-w-0 so long
  unbroken values wrap instead of overflowing the table.
- row detail: column name uses break-words instead of break-all to stop long
  names from wrapping character-by-character.
- unify footer button layout across the three detail dialogs (bulk-copy
  actions on the left, copy-name on the right).
- add a search box to row & column detail to filter fields by name / value /
  row number (filterDataGridDetailFields + unit tests).
- i18n: add detailSearchPlaceholder / detailSearchNoMatch for all 6 locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:48:05 +08:00
Caisinandcaisin 8c0fe3a6e7 Expose forwarded database port for local testing (#803)
Database connection context menus now show a copy action when the connection has enabled transport layers. The action starts or reuses the ordered transport chain, copies the final local forwarding port, and keeps runtime config cached so later disconnect cleanup can stop the created tunnel.

Constraint: Local testing sometimes needs external tools to connect through DBX's generated proxy/tunnel endpoint

Rejected: Copy full host:port endpoint | user specifically asked for the port and existing tunnel host is always localhost

Rejected: Require an active pool before copying | local test workflows may need the tunnel before opening the DBX connection

Confidence: high

Scope-risk: moderate

Tested: pnpm test -- packages/app-tests/connectionTransport.test.ts (ran full app-tests: 862 passed)

Tested: pnpm typecheck

Tested: pnpm exec oxlint --vue-plugin apps/desktop/src/components/sidebar/TreeItem.vue apps/desktop/src/lib/connectionTransport.ts apps/desktop/src/lib/api.ts apps/desktop/src/lib/tauri.ts apps/desktop/src/lib/http.ts

Tested: cargo check -p dbx-core -p dbx-web

Tested: cargo check -p dbx

Tested: cargo fmt --check --all

Co-authored-by: caisin <caisin@caisins-Mac-mini.local>
2026-06-07 01:00:34 +08:00
e9ee982843 Preserve ordered SSH and proxy connection layers (#802)
* Preserve ordered SSH and proxy connection layers

Replace separate SSH/proxy connection fields with ordered transport_layers while keeping legacy migration and secret fallback paths intact. The UI now edits SSH tunnel/proxy layers in configured order without a global SSH enable gate.

Constraint: Existing saved SSH tunnels, proxy settings, and secret-store keys must continue to load through migration.
Rejected: Folding proxy fields into SshTunnelConfig | mixes proxy semantics into an SSH-specific structure.
Confidence: high
Scope-risk: moderate
Directive: Keep SSH/proxy structs provider-specific; put cross-layer chaining in transport_layer_tunnel orchestration.
Tested: git diff --check; cargo fmt --check; cargo check --workspace; cargo test -p dbx-core --lib; vue-tsc --noEmit --project apps/desktop/tsconfig.json; tsc -p packages/node-core/tsconfig.json --noEmit; oxlint --vue-plugin apps/desktop/src; tsx --tsconfig apps/desktop/tsconfig.json --test packages/app-tests/*.test.ts; tsx --test packages/node-core/tests/*.test.ts
Not-tested: Live external SSH/proxy/database endpoint integration.

* Keep ordered transport changes CI-format clean

Constraint: CI pnpm check failed only on oxfmt formatting for two desktop TypeScript files
Confidence: high
Scope-risk: narrow
Directive: Keep generated/editor config changes out of this PR fix commit
Tested: PATH="/Volumes/data/code/rust/dbx/node_modules/.bin:/Users/hekx/.codex/tmp/arg0/codex-arg0nuL34n:/Users/hekx/.cargo/bin:/Users/hekx/.local/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/libpq/bin:/Volumes/data/Users/hekx/.opencode/bin:/Users/hekx/.bun/bin:/Volumes/data/sdks/flutter/bin:/Volumes/data/Users/hekx/.cargo/bin:/Users/hekx/.local/bin:/opt/homebrew/opt/llvm/bin:/opt/homebrew/opt/libpq/bin:/Volumes/data/Users/hekx/.opencode/bin:/Users/hekx/.bun/bin:/Volumes/data/Users/hekx/Library/pnpm:/Volumes/data/sdks/flutter/bin:/Volumes/data/Users/hekx/.cargo/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/pkg/env/global/bin:/opt/X11/bin:/Library/Apple/usr/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/go/bin:/opt/homebrew/bin:/opt/podman/bin:/Applications/Ghostty.app/Contents/MacOS" rtk node scripts/run-check.mjs
Not-tested: GitHub Actions rerun not observed locally

* Keep Rust checks warning-clean

Constraint: cargo clippy --workspace --all-targets --all-features -- -D warnings failed across core, web, and tauri crates
Rejected: Broad workspace-level clippy suppression | kept allows local to long-argument command/API boundaries
Confidence: high
Scope-risk: moderate
Directive: Preserve src-tauri/tauri.conf.json as an unrelated local change outside this commit
Tested: rtk cargo clippy --workspace --all-targets --all-features -- -D warnings
Not-tested: Full GitHub Actions rerun not observed locally

* Reuse existing proxy tunnels on retry

Proxy tunnel startup now mirrors SSH tunnel behavior by returning the existing local port for an active connection id instead of replacing the managed handle. A second map check aborts a just-spawned duplicate handle if a concurrent retry won the race before insertion, preventing orphaned listeners while keeping the change narrow.

Constraint: Reviewer requested proxy tunnel behavior align with SSH local-port reuse

Rejected: Always overwrite and abort the previous handle | less consistent with SSH behavior and churns listeners during retries

Confidence: high

Scope-risk: narrow

Tested: cargo fmt --check --all

Tested: cargo test -p dbx-core db::proxy_tunnel::tests::start_tunnel_reuses_existing_local_port

Tested: cargo clippy -p dbx-core --all-targets -- -D warnings

---------

Co-authored-by: hekx <hekx@momandeMac-mini.local>
Co-authored-by: caisin <caisin@caisins-Mac-mini.local>
2026-06-06 23:22:29 +08:00
polempandSam a067ee8d76 feat: custom theme system with PostgreSQL PL/pgSQL highlighting fix
- Fix PostgreSQL function highlighting by disabling doubleDollarQuotedStrings
  in extended PostgreSQL dialect, enabling PL/pgSQL syntax highlighting
  inside $ blocks
- Add complete custom editor theme system with multi-theme management
  (create, rename, duplicate, delete), visual color editor (12 colors),
  JSON import/export, real-time preview, and 12 preset color schemes
- Add background/foreground color customization with system theme defaults
- Optimize EditorSettingsDialog layout: 2-column grid with font selector
  taking available space and theme dropdown grouped with custom theme button
- Add i18n support for custom theme UI (en, zh-CN, zh-TW, es)
- Fix Tauri production build by adding custom-protocol feature
- Update .gitignore for temporary build artifacts

Closes t8y2#788

Co-authored-by: Sam <14344444@@qq.com>
2026-06-06 20:59:21 +08:00
t8y2 2b5300722f feat: optimize tab result lifecycle caching 2026-06-06 20:30:35 +08:00
t8y2 b226b445d6 fix(export): preserve MySQL bit literals in SQL export 2026-06-06 19:03:21 +08:00
t8y2 f2924a3725 feat: support hive and mongodb transfers 2026-06-06 17:35:59 +08:00
t8y2 fcf5ad7261 fix(grid): align canvas cell state rendering 2026-06-06 16:33:40 +08:00
t8y2 7acd1625a9 fix(web): support encrypted config import over HTTP 2026-06-06 13:12:28 +08:00
t8y2 7cfdcff8c7 fix(grid): prevent canvas selection from rendering black 2026-06-06 11:50:39 +08:00
t8y2 fecefb1589 fix(grid): refine total row counting 2026-06-06 11:13:47 +08:00
André Mácola 11a6a59eb4 feat: add pt-BR localization support and locale option (#797) 2026-06-06 09:15:09 +08:00
t8y2 2ee51327bd fix: remove ellipsis on canvas cell text truncation 2026-06-06 00:55:14 +08:00
t8y2 bcafb9bc93 Revert "feat: support multiple desktop windows"
This reverts commit 642fa39bb8.
2026-06-06 00:01:38 +08:00
t8y2 642fa39bb8 feat: support multiple desktop windows 2026-06-05 20:45:00 +08:00
Francesco Lucarelli 28e8a77fa3 Fix typecheck mismatch by mapping rqlite to sqlite and add Italian locale (#787)
Thanks for adding Italian locale support and fixing the rqlite dialect mapping, @fraluc06!
2026-06-05 18:48:14 +08:00
skyler d2166e080c Merge pull request #782 from sunny0826/feat/kwdb
feat: add KWDB support
2026-06-05 18:16:17 +08:00
t8y2 ee94157055 fix(desktop): add color fallbacks for legacy webviews 2026-06-05 18:07:11 +08:00
Xudong Guo 9b15843e1a feat: add KWDB support 2026-06-05 16:55:38 +08:00
t8y2 8942356eed fix: sort sidebar metadata nodes consistently 2026-06-05 16:44:41 +08:00
t8y2 a2c9503a3d perf(sidebar): reduce tree selection overhead 2026-06-05 14:30:25 +08:00
t8y2 b4a207fc6b feat(redis): add fetch-all keys button and incremental namespace tree merging
- Add "Fetch All" button alongside "Load More" to continuously SCAN until all keys loaded
- Add stop button and scan progress display during fetch-all
- Implement mergeKeysIntoRedisKeyTree for incremental namespace tree building
- Add toast notifications for empty form validation in key detail panel
- Add i18n translations for new UI elements (zh-CN, zh-TW, en, es)
- Add unit tests for incremental tree merge covering 6 scenarios
2026-06-05 13:57:26 +08:00
DengQingNian 47ddbd5ce7 feat(ui): 支持预览postgres的Geometry数据为图形
为 cell detail 面板中的 PostGIS geometry/geography 列添加基于 Canvas 的几何图形预览弹窗
2026-06-05 12:41:19 +08:00
t8y2 0887b96236 feat: add rqlite database support 2026-06-05 01:02:07 +08:00
t8y2 a799958328 feat: add driver runtime manager 2026-06-04 23:20:15 +08:00
t8y2 cbcd5dc6e5 feat(access): enable table structure editing for Access databases
- Add accessCapabilities based on UCanAccess DDL support testing
- CREATE TABLE, ADD COLUMN, CREATE INDEX are supported
- DROP COLUMN, ALTER COLUMN, RENAME COLUMN, DROP INDEX are not supported
- Use H2 SQL dialect for generated DDL
2026-06-04 22:10:51 +08:00
t8y2 25188bc5c5 fix: enhance fitCanvasText function with caching and improve text fitting logic 2026-06-04 21:32:59 +08:00
t8y2 5e21b74487 fix: prevent bigint precision loss in structured filter value parsing
When parseFilterValue converts numeric strings to JS Number, integers
exceeding Number.MAX_SAFE_INTEGER lose precision (e.g. 2062449923745665025
becomes 2062449923745665024). Keep them as strings so the Rust backend can
parse them exactly via serde_json::Number.
2026-06-04 20:33:46 +08:00
t8y2 120566b1fd fix: improve JDBC dialect handling 2026-06-04 19:40:52 +08:00
t8y2 293600d9b4 fix: pass connection query timeout to execute_batch so ALTER respects configured timeout
Previously execute_batch always used the hardcoded 30s default timeout,
ignoring the user's query_timeout_secs connection setting. This caused
long-running ALTER TABLE statements on large tables to time out even
when the user configured a longer timeout or disabled it entirely.
2026-06-04 13:54:20 +08:00
t8y2 23391dce6b fix(mysql): support catalogless metadata fallback 2026-06-04 11:47:52 +08:00
t8y2 b086b91fdc fix(ai): improve agent metadata query execution 2026-06-04 11:19:14 +08:00
t8y2 7ba941ce79 perf(grid): reduce canvas row allocation 2026-06-04 02:01:41 +08:00
t8y2 388873213f fix(export): stream full table exports correctly 2026-06-04 01:10:23 +08:00
t8y2 4964bb697d fix(completion): preserve whitespace SQL contexts 2026-06-04 00:09:48 +08:00
t8y2 f540770bce feat(grid): add bulk edit selection action 2026-06-04 00:05:14 +08:00
skyler ff2210e5a4 Merge pull request #702 from DengQingNian/optimize/export-pagination-orderby-batchsize
perf(ui): 优化数据导出的ui体验和性能
2026-06-03 21:42:38 +08:00
t8y2 f64fd09b7a fix(grid): keep table filters available without metadata 2026-06-03 21:04:19 +08:00
t8y2 4d50af05fd fix(sidebar): keep connection search results visible 2026-06-03 20:52:57 +08:00
t8y2 085a2f3870 feat(completion): add database-specific suggestions 2026-06-03 20:47:17 +08:00
dqn 4a12a575ed perf(ui): 优化数据导出的ui体验和性能 2026-06-03 20:19:25 +08:00
t8y2 651f838a7d feat(gbase): add GBase 8s driver profile 2026-06-03 18:07:14 +08:00
t8y2 573f31c8dc fix(jdbc): avoid double quoting kyuubi identifiers 2026-06-03 17:48:03 +08:00