Commit Graph
100 Commits
Author SHA1 Message Date
t8y2 a473f4ff8f chore: switch license to Apache-2.0 2026-06-07 17:34:59 +08:00
t8y2 74e19ec6a3 feat(databend): support agent driver 2026-06-07 16:39:22 +08:00
t8y2 3403819658 fix(db2): use compatible table pagination 2026-06-07 14:52:34 +08:00
t8y2 15b792a424 fix(editor): improve selection rendering 2026-06-07 14:23:18 +08:00
t8y2 1a4e59875b feat(grid): enhance canvas scrolling with acceleration and trackpad support 2026-06-07 12:11:55 +08:00
t8y2 27b5cc681b fix(settings): polish shortcut editing controls 2026-06-07 11:11:49 +08:00
t8y2 a3e45cd721 feat(iotdb): add Apache IoTDB support 2026-06-07 10:29:05 +08:00
t8y2 2b2d789c2c fix: add keyboard shortcut hint on data-unavailable page and make Mod+R work
When app restarts, table data shows "data unavailable" but Mod+R didn't
work because the DataGrid component wasn't mounted. Fixed by handling
the reload emit directly in handleModRTarget. Also added kbd-styled
shortcut hint (⌘R / Ctrl+R) on the data-unavailable placeholder.
2026-06-07 10:02:34 +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
t8y2 3eefe87380 feat(settings): allow disabling update reminders 2026-06-07 01:07:31 +08:00
t8y2 2c404e73c2 fix(mysql): preserve full-width text edits in data grid 2026-06-07 00:46:37 +08:00
t8y2 0c3572d779 fix(mcp): detect node from user shell environment 2026-06-06 22:45:28 +08:00
t8y2 85e2cf1f2f fix: stabilize custom theme integration 2026-06-06 21:04:19 +08:00
t8y2 0b07f05f72 fix(grid): prevent grid from intercepting clipboard in native inputs and cell detail
- Add data-native-clipboard to cell detail panel so Cmd+C copies selected text
- Skip onGridPaste when event target is a native input element
2026-06-06 20:49:32 +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 e504d0c175 fix: sync transpose cell detail selection 2026-06-06 17:06:33 +08:00
t8y2 fcf5ad7261 fix(grid): align canvas cell state rendering 2026-06-06 16:33:40 +08:00
t8y2 631584bed1 fix(mongo): align table grid controls 2026-06-06 15:41:18 +08:00
t8y2 6bcc85233c fix(grid): show local column filters in filter popover 2026-06-06 14:04:52 +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 a1d0178a7e fix(postgres): add OpenGauss-compatible index query fallback without WITH ORDINALITY
OpenGauss is based on PostgreSQL 9.2 and does not support WITH ORDINALITY
(PG 9.4+). When the native pg_get_tabledef() path fails, the fallback DDL
builder calls list_indexes() which previously only had two SQL variants, both
using WITH ORDINALITY — causing "syntax error at or near 'WITH'" on OpenGauss.

Add POSTGRES_INDEXES_OPENGAUSS_SQL as a third fallback that uses generate_series
and array_length instead, both available since PG 8.0.
2026-06-06 11:29:16 +08:00
t8y2 fecefb1589 fix(grid): refine total row counting 2026-06-06 11:13:47 +08:00
t8y2 67e4c5d881 fix(transfer): preserve longtext/mediumtext/longblob/mediumblob types for MySQL target
Previously map_column_type mapped all text types (longtext, mediumtext) to
TEXT (64KB max) and all blob types (longblob, mediumblob) to BLOB (64KB
max). This caused "Data too long" errors when transferring large data from
MariaDB to MySQL.

Also improved INSERT error messages to include the table name and absolute
row number (offset + MySQL row) instead of just chunk index.

Fixes #796
2026-06-06 09:29:31 +08:00
t8y2 5581205c4d fix: quote temporal type default values in SQL generation
Time-related column types (DATE, DATETIME, TIMESTAMP, TIME, etc.) need
their literal default values wrapped in single quotes. Previously, the
normalize_default function returned values verbatim, so a DATETIME
default like "2024-01-01 00:00:00" would generate invalid SQL:
  DEFAULT 2024-01-01 00:00:00
instead of:
  DEFAULT '2024-01-01 00:00:00'

SQL expressions (CURRENT_TIMESTAMP, NOW(), etc.) are correctly left
unquoted. Non-temporal types (INT, VARCHAR, etc.) are unaffected.
2026-06-06 02:12:53 +08:00
t8y2 e02b6f0d7a test: update stale test expectations 2026-06-06 01:06:03 +08:00
t8y2 2ee51327bd fix: remove ellipsis on canvas cell text truncation 2026-06-06 00:55:14 +08:00
t8y2 012b03cac5 fix: prevent grid paste handler from intercepting paste in edit mode
When a cell is in edit mode, the native paste event was bubbling up to
the grid root's @paste handler, which called preventDefault() and wrote
values directly to the data model instead of the edit input. This caused
the "Pasted!" toast to appear but the input content remained unchanged.

Adding @paste.stop on edit inputs allows the browser's default paste
behavior to insert text into the input field, properly updating editValue
via v-model.
2026-06-06 00:34:09 +08:00
t8y2 44d6f167ea fix: show full tab title immediately when opening table from sidebar
Set tableMeta early so tabDisplayTitle can render the @database suffix
right away instead of waiting for loadTableMeta to complete.
2026-06-06 00:05:13 +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
t8y2 9858fc40d2 feat(tests): add currentWhereInput to various test cases 2026-06-05 18:31:53 +08:00
t8y2 8a995c6bef build: use rust-lld for windows msvc linker 2026-06-05 18:20:20 +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
t8y2 8942356eed fix: sort sidebar metadata nodes consistently 2026-06-05 16:44:41 +08:00
t8y2 8d69904ea1 fix(mysql): omit database name in exported inserts 2026-06-05 16:03:58 +08:00
t8y2 bbe51d409c fix(grid): preserve structured filter conditions on refresh and rollback
The toolbar refresh, rollback, and post-save reload were passing only
the manual WHERE input to the reload event, discarding structured filter
conditions added via the filter builder popover. Changed all three call
sites to use currentWhereInput() which combines both filter sources.
2026-06-05 15:15:23 +08:00
t8y2 249a1ed649 fix(postgres): recover schema session after aborted transaction 2026-06-05 14:46:00 +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 ea45e1c331 feat(redis): add copy insert statement button for Redis key value migration
Generates a Redis insert command (SET/RPUSH/SADD/ZADD/HSET/XADD/JSON.SET) from
the current key's value and copies it to clipboard. Supports TTL, pagination
hints, and binary value handling.
2026-06-05 12:15:53 +08:00
t8y2 6dadb4ddb7 fix(redis): prevent unmount-on-hide lag when switching from command to detail panel
Setting unmountOnHide to false on the Tabs component avoids re-mounting
RedisValueViewer and its heavy async initialisation (API calls + Shiki
highlighting) each time the user switches back from the CLI panel.
2026-06-05 12:04:25 +08:00
t8y2 7283f2b34a fix(sqlserver): handle spatial query results 2026-06-05 11:11:14 +08:00
t8y2 5e37a518f2 Merge pull request #751 2026-06-05 02:05:56 +08:00
t8y2 45cb5f4879 feat(tests): add live Postgres geometry test for rendering geometry values 2026-06-05 01:52:54 +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 a8c08cd7e9 fix(i18n): add missing structureEditor.copySql locale key
TableStructureEditor.vue references t("structureEditor.copySql") but
the key was missing from all locale files, causing raw key text display.
2026-06-04 22:10:58 +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 07edb39d77 feat(jdbc-plugin): bundle slf4j-api, slf4j-nop, and commons-lang3
Many JDBC drivers depend on SLF4J and commons-lang3 at runtime but
don't shade them. Bundling these in the plugin JAR avoids
NoClassDefFoundError when users import driver JARs.
2026-06-04 18:21:08 +08:00
t8y2 8d51a5779b fix: cancel DuckDB queries via duckdb_interrupt instead of only cancelling async future
Previously, cancelling a DuckDB query only dropped the tokio CancellationToken,
but the actual DuckDB C call continued running in spawn_blocking. This caused
the UI to show "正在停止..." until timeout silently expired.

Now, RunningQueries stores per-execution interrupt callbacks. For DuckDB and
ExternalTabular branches, an InterruptHandle is registered on query start so
cancel() calls duckdb_interrupt() at the C level, truly stopping the query.
2026-06-04 17:20:13 +08:00
t8y2 834dc534c6 fix: combine Oracle-like MODIFY statements and fix DATA_DEFAULT column ordering
- table_structure_sql: merge separate MODIFY statements for type, nullability,
  and default into a single MODIFY statement. This fixes Dameng's requirement
  that MODIFY includes the full column definition.
- DbxJdbcPlugin: move DATA_DEFAULT to first SELECT position and read it first
  in the ResultSet loop (LONG columns must be read before other columns).
2026-06-04 16:57:44 +08:00
t8y2 01c8072d97 fix: support MongoDB Atlas SRV connections in form mode
Add an "SRV (MongoDB Atlas)" toggle in the MongoDB connection form.
When enabled, the backend uses mongodb+srv:// scheme and omits the
port, matching the behavior of pasting a mongodb+srv:// URL directly.
2026-06-04 16:01:31 +08:00
t8y2 43de1d6d0a fix: satisfy grid tooltip prop contract 2026-06-04 15:19:27 +08:00
t8y2 9935f8e7fe fix: improve iris schema metadata completion 2026-06-04 15:09:56 +08:00
t8y2 c8539bcc32 perf: replace column header Tooltip with hand-rolled LightTooltip 2026-06-04 14:25:41 +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 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 2a59304e02 fix: update .gitignore 2026-06-04 13:29:24 +08:00
t8y2 32f48cc4e1 ci: hide issue moderation script from logs 2026-06-04 12:35:00 +08:00
t8y2 33175c4acd fix(pg): decode pgvector vector columns that displayed as null
pgvector's vector(N) type uses a custom binary format (4-byte header
+ N×4-byte f32 array) that tokio-postgres doesn't natively support.
Add a PgRawBytes adapter and decoder so vector columns render as
JSON float arrays instead of null.
2026-06-04 12:06:02 +08:00
t8y2 23391dce6b fix(mysql): support catalogless metadata fallback 2026-06-04 11:47:52 +08:00
t8y2 9bc810d195 ci: refine issue moderation workflow 2026-06-04 11:28:29 +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
t8y2 0194adfa4c chore(release): bump version to v0.5.29 2026-06-04 02:10:39 +08:00
t8y2 55fd81363f fix(cli): keep queries read-only by default 2026-06-04 02:05:29 +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 b40c71f392 ci: show useful check failure output 2026-06-04 00:05:14 +08:00
t8y2 fb6f818289 perf(grid): preload data grid component 2026-06-04 00:05:14 +08:00
t8y2 69ecde8fdf perf(doris): speed up metadata browsing 2026-06-04 00:05:14 +08:00
t8y2 f540770bce feat(grid): add bulk edit selection action 2026-06-04 00:05:14 +08:00
t8y2 0e66b5d128 ci: detect abusive issue content 2026-06-03 23:05:45 +08:00
t8y2 87efa2b06c ci: disable issue QQ notifications 2026-06-03 22:33:12 +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 2183c370dc fix(export): handle table export edge cases 2026-06-03 21:41:16 +08:00
t8y2 26a31feea1 fix(jdbc): use driver-specific URL param separators 2026-06-03 21:25:38 +08:00
t8y2 94c987c693 fix(metadata): tolerate opengauss column metadata failures 2026-06-03 21:18:34 +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 02ac4b3978 fix(iris): use top for table previews 2026-06-03 20:21:30 +08:00
t8y2 9648f74b87 fix(tabs): close object tabs on disconnect release 2026-06-03 19:30:34 +08:00
t8y2 72ababd2b8 fix(iris): skip schema execution context 2026-06-03 19:29:39 +08:00
t8y2 e3fec0f5d9 fix(elasticsearch): improve local TLS connection handling 2026-06-03 18:29:30 +08:00
t8y2 8e92254bba fix(sqlserver): preserve procedure DDL batches 2026-06-03 18:14:33 +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 0f40f6cd0c fix(postgres): support quoted schema autocomplete 2026-06-03 17:00:24 +08:00
t8y2 af40af603e feat(editor): add configurable tab handling on disconnect 2026-06-03 16:53:40 +08:00
t8y2 29118700b6 feat(mcp): improve setup defaults and config hints 2026-06-03 16:40:40 +08:00