Commit Graph
121 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 85e2cf1f2f fix: stabilize custom theme integration 2026-06-06 21:04:19 +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 fecefb1589 fix(grid): refine total row counting 2026-06-06 11:13:47 +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
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 e780e66e41 fix(sql): improve kingbase metadata loading and dangerous sql confirmation 2026-06-05 12:48:29 +08:00
t8y2 120566b1fd fix: improve JDBC dialect handling 2026-06-04 19:40:52 +08:00
t8y2 13e2cdde6f feat: add "reuse data tab" setting to avoid opening too many tabs when clicking table names
Add a configurable option in Settings > Navigation to reuse an existing data
tab instead of creating a new one each time a table is clicked in the sidebar.
2026-06-04 13:44: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
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 388873213f fix(export): stream full table exports correctly 2026-06-04 01:10:23 +08:00
dqn be9b071473 feat(ui): add tab drag-and-drop reordering
Support dragging tabs horizontally to reorder them. A ghost element follows
the cursor during drag, and a drop indicator shows the target position.
2026-06-03 23:58:01 +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
dqn 4a12a575ed perf(ui): 优化数据导出的ui体验和性能 2026-06-03 20:19:25 +08:00
t8y2 9648f74b87 fix(tabs): close object tabs on disconnect release 2026-06-03 19:30:34 +08:00
t8y2 af40af603e feat(editor): add configurable tab handling on disconnect 2026-06-03 16:53:40 +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 e67894bea7 chore: upgrade frontend tooling and speed up checks 2026-06-03 12:20:27 +08:00
t8y2 cc74fabad7 feat(completion): suggest database routines 2026-06-03 11:27:31 +08:00
t8y2 0fc5a03822 fix(sidebar): merge table metadata into object groups 2026-06-03 02:48:09 +08:00
t8y2 763470e86d fix(oracle): normalize unquoted query metadata identifiers 2026-06-03 02:32:08 +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 38f25d8629 feat(grid): enable canvas renderer by default 2026-06-02 21:40:51 +08:00
t8y2 ccaa50e36b fix(query): honor connection timeout during exports 2026-06-02 19:38:21 +08:00
t8y2 bce6a820ec fix(grid): preserve result during refresh 2026-06-02 18:58:37 +08:00
t8y2 2ff4a3fd97 fix(tabs): close connection tabs on disconnect 2026-06-02 18:19:28 +08:00
t8y2 f195cdbc13 feat(grid): support cell detail panel layouts 2026-06-02 16:33:42 +08:00
t8y2 396d2ff281 feat(grid): add hybrid canvas data grid renderer 2026-06-02 15:56:35 +08:00
t8y2 f5eb3ba5db fix: preserve data grid order by input 2026-06-02 11:36:59 +08:00
t8y2 8058c238b8 fix(desktop): allow multiple new table structure tabs 2026-06-02 02:13:09 +08:00
t8y2 0d89ee3fe9 feat(desktop): paste copied tree table as clone 2026-06-02 02:06:36 +08:00
t8y2 6dee9705d9 feat(desktop): support tree multi-select actions 2026-06-02 01:19:14 +08:00
t8y2 ac7a5b7576 feat(desktop): drop tree schema objects 2026-06-02 00:33:58 +08:00
t8y2 ad33db0886 fix(desktop): restore table tabs on startup 2026-06-01 23:07:47 +08:00
t8y2 b4c469a69f fix(desktop): close database tabs with connection 2026-06-01 20:21:42 +08:00
t8y2 b35c1486e6 feat(desktop): improve query result exports and toolbar state 2026-06-01 19:26:15 +08:00
t8y2 7eca75b325 feat: support Oracle package sources 2026-06-01 18:43:20 +08:00
t8y2 84a7ff6b92 fix(tabs): reload missing table data 2026-06-01 17:18:51 +08:00
t8y2 a87b8ece31 fix(mongodb): support compass shell commands 2026-06-01 16:24:31 +08:00
t8y2 a315ab93c7 fix(query): preserve tab SQL session state 2026-06-01 15:41:15 +08:00
t8y2 46c05b811f feat(connection): support multi-hop ssh tunnels 2026-06-01 14:48:33 +08:00
t8y2 7f5de70687 fix(export): include all paginated query result rows 2026-06-01 14:32:16 +08:00