Commit Graph
566 Commits
Author SHA1 Message Date
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
t8y2 2b5300722f feat: optimize tab result lifecycle caching 2026-06-06 20:30:35 +08:00
t8y2 f2924a3725 feat: support hive and mongodb transfers 2026-06-06 17:35:59 +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
t8y2 9858fc40d2 feat(tests): add currentWhereInput to various test cases 2026-06-05 18:31:53 +08:00
skyler d2166e080c Merge pull request #782 from sunny0826/feat/kwdb
feat: add KWDB support
2026-06-05 18:16:17 +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
t8y2 e780e66e41 fix(sql): improve kingbase metadata loading and dangerous sql confirmation 2026-06-05 12:48:29 +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 120566b1fd fix: improve JDBC dialect handling 2026-06-04 19:40:52 +08:00
t8y2 23391dce6b fix(mysql): support catalogless metadata fallback 2026-06-04 11:47:52 +08:00
skyler 0f691485c8 Merge pull request #706 from DengQingNian/feat/drag-tab-reorder
feat(ui): add tab drag-and-drop reordering
2026-06-04 11:21:52 +08:00
t8y2 b086b91fdc fix(ai): improve agent metadata query execution 2026-06-04 11:19:14 +08:00
dqn b028b0aea2 fix(ui): update drop position on mousemove and enforce pinned grouping in tab reorder
- Track mousemove during drag to continuously update before/after indicator
- Re-apply orderPinnedFirst after reorder to prevent breaking pinned tab grouping
2026-06-04 10:40:42 +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 f540770bce feat(grid): add bulk edit selection action 2026-06-04 00:05:14 +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
t8y2 9648f74b87 fix(tabs): close object tabs on disconnect release 2026-06-03 19:30:34 +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
t8y2 175d1def0d fix(grid): support blob downloads 2026-06-03 15:45:50 +08:00
t8y2 381bdfdfd7 fix(sidebar): dedupe MySQL table objects 2026-06-03 14:27:26 +08:00
t8y2 967b9df604 feat(editor): show column comments in SQL completions 2026-06-03 14:05:30 +08:00
t8y2 4690fd8b81 feat: add elasticsearch command completion 2026-06-03 14:00:52 +08:00
t8y2 cc74fabad7 feat(completion): suggest database routines 2026-06-03 11:27:31 +08:00
t8y2 66fc5e2b05 fix(ai): include schema comments in prompt context 2026-06-03 10:55:38 +08:00
t8y2 0fc5a03822 fix(sidebar): merge table metadata into object groups 2026-06-03 02:48:09 +08:00
t8y2 c6da454864 fix(jdbc): show default database for custom drivers 2026-06-03 02:44:02 +08:00
t8y2 6ef7eba566 fix(mongodb): allow legacy fallback after native timeout 2026-06-03 02:44:02 +08:00
t8y2 763470e86d fix(oracle): normalize unquoted query metadata identifiers 2026-06-03 02:32:08 +08:00
t8y2 6546cccd1e feat(redis): add fuzzy key search toggle 2026-06-03 01:53:24 +08:00
t8y2 4ce010369b feat(grid): hide all-null columns 2026-06-03 01:12:03 +08:00
t8y2 413261a476 fix(connection): release stuck connection attempts 2026-06-02 22:20:26 +08:00
t8y2 df32a46080 Merge branch 'dev/hybrid-canvas-grid'
# Conflicts:
#	apps/desktop/src/components/grid/DataGrid.vue
#	apps/desktop/src/stores/settingsStore.ts
2026-06-02 21:48:02 +08:00
t8y2 ccaa50e36b fix(query): honor connection timeout during exports 2026-06-02 19:38:21 +08:00
t8y2 0aab07e923 fix(sidebar): keep tables sorted by visible name 2026-06-02 19:18:57 +08:00
t8y2 bce6a820ec fix(grid): preserve result during refresh 2026-06-02 18:58:37 +08:00
t8y2 cac90c7b62 fix(opengauss): open table structure editor 2026-06-02 18:50:00 +08:00
t8y2 2ff4a3fd97 fix(tabs): close connection tabs on disconnect 2026-06-02 18:19:28 +08:00
t8y2 53239d91fb fix(sidebar): use filtered order for range selection 2026-06-02 18:13:13 +08:00
t8y2 a54c8cfd93 feat(sql): suggest join conditions from foreign keys 2026-06-02 18:08:06 +08:00