Commit Graph
390 Commits
Author SHA1 Message Date
t8y2 8f619fb791 fix(editor): confirm unsaved structure changes 2026-07-13 21:27:02 +08:00
Abeautifulsnow 78b3bb1ba1 feat(export): add streaming TXT data export 2026-07-13 20:44:57 +08:00
t8y2 8cebc4a366 fix(query): preserve selected statement source range 2026-07-13 19:57:35 +08:00
Bagus Wahyu Aprianto 2dec6ebeb8 feat(mysql): add process list viewer 2026-07-13 19:07:05 +08:00
zipg d1cce3ed1e fix(kingbase): quote MySQL-compatible identifiers 2026-07-13 18:51:32 +08:00
rainhan c7991b316e feat(connection): test SSH tunnel profiles 2026-07-13 17:51:51 +08:00
zipg 16724074c0 feat(grid): improve cell detail panel 2026-07-13 17:16:38 +08:00
Komh 35ca4e3a37 feat(duckdb): add connection bootstrap and remote catalogs 2026-07-13 17:03:33 +08:00
Abeautifulsnow 9e1b0c478e feat(editor): prefill new queries from focused tables 2026-07-13 16:15:09 +08:00
juve 29b351691a fix(grid): improve scrolling and sidebar responsiveness 2026-07-13 16:12:54 +08:00
Guoyu Su a99a34b4ab fix(mongodb): use dedicated count for legacy collections 2026-07-13 13:21:50 +08:00
Freedom 86dad5db9f feat(editor): show column hints for INSERT values 2026-07-13 00:39:36 +08:00
zipg 9a09bd49cb fix(mongodb): support array filters in updates 2026-07-12 23:13:36 +08:00
Anubis 2a92746dc0 feat(d1): add Cloudflare D1 database support 2026-07-12 22:03:57 +08:00
rainhan 977e7f78ca feat(connection): add reusable tunnel profiles 2026-07-12 22:03:46 +08:00
onenewcode 7a42b1e96b fix(mysql): stop multi-statement execution after first error 2026-07-12 21:30:27 +08:00
miracle 16e879e40e perf(query): optimize result loading and connection reuse 2026-07-12 11:18:52 +08:00
wuxiemian 1be66fb115 feat(safety): add production environment safeguards 2026-07-12 10:02:27 +08:00
二丫讲梵 add57d3ae0 feat(toolbar): redesign query result toolbar layout 2026-07-12 00:30:43 +08:00
miracle 1a309b6b63 feat(editor): configure SQL variable syntax 2026-07-11 20:45:07 +08:00
onenewcode 54632f4c16 feat(query): add MySQL standard explain table view 2026-07-11 20:34:54 +08:00
t8y2 1dd4623919 fix(sql-files): distinguish files with duplicate names 2026-07-11 18:32:17 +08:00
zipg 3747f08baa fix(table): refresh data tabs after clearing tables 2026-07-11 17:48:51 +08:00
t8y2 a1b8174951 fix(doris): preserve external catalog in object browser 2026-07-11 13:34:18 +08:00
zipg 343a5ba6c9 fix(grid): separate table open row limit 2026-07-11 08:55:43 +08:00
二丫讲梵 264909aaa9 feat(mongo): add document JSON preview 2026-07-11 01:00:47 +08:00
zipg 3a5ef776b1 fix(mysql): optimize stored procedure loading 2026-07-11 00:32:49 +08:00
zipg 9cf62a1c71 fix(tdengine): group subtables under super tables 2026-07-11 00:12:45 +08:00
lexmin0412 dd8f4a0f87 fix(ui): deactivate settings when activating tabs 2026-07-11 00:05:05 +08:00
t8y2 53f2a4f215 fix(spark): apply selected database to queries 2026-07-10 21:45:13 +08:00
gggaiitx ae4bbe1564 feat(grid): adjust column widths by density 2026-07-10 19:39:28 +08:00
zipg c35e5c560a feat(query): support editing without selected primary keys 2026-07-10 18:57:37 +08:00
SuLea-IT 68cfb5af5c fix(query): reduce retained result memory 2026-07-10 18:15:25 +08:00
zipg e1d6d1224e feat(oracle): support explain plans 2026-07-10 17:55:03 +08:00
二丫讲梵 ea8b3f9800 feat(tabs): enhance result toolbar layout and labels 2026-07-10 15:54:01 +08:00
t8y2 abee51d625 fix(doris): use internal database for external catalogs 2026-07-10 15:48:56 +08:00
t8y2 3b1a9cb98b feat(grid): allow table font size down to 8 2026-07-10 14:39:21 +08:00
t8y2 1c18a80092 feat(grid): allow table font size down to 10 2026-07-10 14:14:49 +08:00
t8y2 cb6350bef6 fix(query): support editing distinct results 2026-07-10 13:19:28 +08:00
miracle 3ff4f470f2 fix(mysql): reuse data tab client session 2026-07-10 10:56:48 +08:00
zipgandzipg f73633f622 fix(sqlserver): handle query timeout and multi-result-set pagination
* Fix SQL Server query timeout and result pagination

* Address SQL Server timeout review feedback

* Cover SQL Server lock wait timeout

---------

Co-authored-by: zipg <4047349+zipg@users.noreply.github.com>
2026-07-10 10:36:11 +08:00
t8y2 0431fbea49 fix(ui): preserve tab scroll positions 2026-07-10 00:35:33 +08:00
zipg 67edb94b1d feat(sqlserver): support legacy TLS compatibility 2026-07-09 22:45:54 +08:00
t8y2 87efe469a4 fix(desktop): reduce grid scroll jank 2026-07-09 17:55:33 +08:00
zipg ce8cb2b509 fix(oracle): preserve DATE time in display and export 2026-07-09 15:04:34 +08:00
t8y2 aa0abcd670 feat(query): support broader result editing 2026-07-09 14:35:59 +08:00
Guoyu Su ca9e11217e fix(mongodb): support collection drop shell command 2026-07-09 14:16:32 +08:00
Abeautifulsnowanddbx-i18n-bot 2c2d9d7fef feat(objects): add checkbox multi-select and grid view for object browser
* feat(objects): add checkbox column toggle for object browser

- Add objectBrowserShowCheckbox setting (default: false) to EditorSettings
- Checkbox column hidden by default; auto-shows when any tables are selected
- Toolbar button toggles multi-select mode (active state highlighted in primary color)
- Clearing the toggle also clears all selections
- Add i18n key objects.toggleCheckbox in en/zh-CN

Closes #2748 (part 2)

* feat(objects): add grid view mode for object browser

- Add objectBrowserViewMode setting (list | grid, default: list) to EditorSettings
- Toolbar segmented control toggles between list and grid views, persisted across sessions
- Grid view renders cards (icon + name + type + row count) in a responsive auto-fill layout
- Reuses existing sort, search, filter, multi-select and context menu
- Partition children not expandable in grid mode (minimal version)
- Add i18n keys objects.viewList/objects.viewGrid across all locales
- Backfill objects.toggleCheckbox in es/it/ja/pt-BR/zh-TW (missed in prior commit)

Refs #2748

* fix(objects): redesign grid view cards for visual polish

- Center-align content (icon + name + metadata) for a proper tile look
- Enlarge type icons (h-7) so color coding is visible at a glance
- Merge type label and row count on one line with separator
- Reduce internal spacing (gap-1.5) and tighten padding
- Replace background hover with border glow + shadow for cleaner feedback
- Narrow min card width (150px) for denser grid, add align-content:start
- Softer rounded-lg corners

Refs #2748

* fix(objects): polish grid view card visual details

- Add colored circle background behind icons (type-matched opacity-10)
- Increase name font from text-xs to text-sm for better legibility
- Separate row count into a primary-tinted badge (only shown when > 0)
- Keep type label clean without mixing row count inline

Refs #2748

* fix(objects): refine grid card min-width, icon shadow, and type label size

* @
feat(object-browser): align tile/grid card metadata with list view columns

Add the metadata categories present in the list view but missing from
the tile/grid card view (objectBrowserViewMode === "grid"):
- Size pill (totalBytes) next to the existing rows pill in the stats row
- Timestamps row showing created_at · updated_at (per-row conditional)
- Comment row (truncated, per-row conditional, with hover tooltip)

Each card now shows: icon, name, type label, rows pill, size pill,
timestamps (when present), and comment (when present) — matching the
same metadata categories the list view displays across its 8 columns.

Also fix a pre-existing bug in the list view where the totalBytes
column tooltip (:title) used formatObjectBrowserCount instead of
formatObjectBrowserBytes, showing a count-formatted number instead
of a byte-formatted size string.
@

* @
feat(object-browser): add sort selector in toolbar for grid/list views

The list view has column header click-to-sort but the grid/tile view
had no way to change sort order. Add a compact sort selector in the
toolbar that works identically in both views:

- Native <select> dropdown with all 7 sort keys (name, type, rows,
  size, created, updated, comment) using existing column i18n labels
- ArrowUp/ArrowDown direction toggle button with localized tooltip
- Positioned between schema selector and view toggle in the toolbar
- Shares the existing sortKey/sortDirection/toggleSort logic — list
  view column headers continue to work as before
- Accessible: aria-label on select, title on direction button

i18n: added sortAsc/sortDesc/sortBy to en.ts and zh-CN.ts
@

* @
fix(object-browser): make sort key options reactive to available data

sortKeyOptions was a static array that always included created_at and
updated_at even when no row had data for those fields. Sorting by an
empty field is a no-op that silently confuses users.

Convert to a computed that mirrors the list view column visibility logic
(hasCreatedAt / hasUpdatedAt): the two time-based sort options only
appear when at least one loaded row has that field populated.

Follows design decision: sort selector remains visible in both list and
grid views (plan B), acting as a shared sort state indicator.
@

* @
fix(object-browser): reset sortKey when selected option disappears from options

When sortKeyOptions loses created_at or updated_at (e.g. after a schema
switch clears all rows), sortKey could remain set to a key no longer in
the dropdown, causing the <select> to show a blank selection.

Add a watch on sortKeyOptions that resets sortKey to "name" and
sortDirection to "asc" whenever the current key is no longer present.
@

* chore(i18n): autofill new translations

* perf(object-browser): virtualize tile/grid view with RecycleScroller

Replaces the flat v-for over filteredRows with a row-chunked
RecycleScroller, matching the list view. Previously, switching to tile
mode on a schema with thousands of tables mounted every card and its
CustomContextMenu at once, stalling the UI for several seconds.

Changes:
- gridRows computed: chunks filteredRows into rows of gridColumns cards
- ResizeObserver on the grid container drives gridColumns; initial read
  uses getComputedStyle to match contentRect.width and avoid a 1-frame
  column jump on mount
- objectGridRowHeight computed: item-size adapts to whether the dataset
  has timestamp/comment rows, minimising wasted row space
- watch(gridContainerRef) re-attaches the observer across list<->grid
  toggles; onBeforeUnmount cleans up
- scrollObjectsToTop() resets scroll position on sort, search,
  object-type filter and view-mode changes
- CSS: new .object-browser-grid-wrapper / -scroller / -row classes with
  will-change / contain parity with the list scroller

---------

Co-authored-by: dbx-i18n-bot <github-actions[bot]@users.noreply.github.com>
2026-07-09 11:59:25 +08:00
Guoyu Su 65a92afce8 fix(desktop): preserve sidebar groups on reload 2026-07-09 11:47:13 +08:00
gggaiitx 2f134585ea feat(editor): add auto close brackets setting 2026-07-09 09:53:01 +08:00