t8y2
01975cf1ba
fix(ci): replace gh CLI with native fetch for GraphQL calls to avoid auth loss
2026-06-11 00:23:55 +08:00
t8y2
9504947702
fix(ci): use separate PROJECT_TOKEN for project operations, GITHUB_TOKEN for repo queries
2026-06-10 23:58:19 +08:00
t8y2
1adfa5d9f8
feat(ci): add Project Triage automation workflow and script
2026-06-10 23:54:43 +08:00
miracle
871fc57c52
[Enhance] add comments in SQL Server DDL output ( #1017 )
...
Thanks!
2026-06-10 22:49:42 +08:00
Scars
215b0cf7d4
fix(desktop): show horizontal data grid scrollbar ( #1018 )
2026-06-10 22:35:38 +08:00
t8y2
9793dc94b7
feat(driver): centralize database capabilities
2026-06-10 22:12:44 +08:00
t8y2
8f92eeb638
fix(core): guard BIT literal formatting behind MySQL-compatible db_type
2026-06-10 21:54:10 +08:00
echocde
4389de386d
fix(core): properly format MySQL BIT type values as binary literals in export/transfer
...
Thanks for the fix!
2026-06-10 21:53:02 +08:00
t8y2
3f58526df8
fix(mcp): add back use std::env, use compile-time #[cfg] for locate_mcp_bin
2026-06-10 21:31:52 +08:00
Doracoin
7234d9ebd3
fix(desktop): Improve shell Node detection for MCP startup
...
Thanks for the detailed investigation and fix!
2026-06-10 21:30:44 +08:00
t8y2
9f0dae1754
fix(grid): preserve table filter builder state
2026-06-10 20:08:18 +08:00
t8y2
20622bc762
fix: resolve clippy warnings and missing redis_key_separator field
2026-06-10 20:05:20 +08:00
t8y2
a5e1a64247
refactor(sql): split dialect helpers
2026-06-10 19:53:36 +08:00
t8y2
166f238191
refactor(table-structure): split SQL builders
2026-06-10 19:42:55 +08:00
t8y2
e3b4aac84c
fix(desktop): tighten frontend transitions
2026-06-10 19:20:30 +08:00
t8y2
33ab7aeae6
refactor(schema): split metadata providers
2026-06-10 19:10:53 +08:00
t8y2
27aef6059d
feat(docs): add contributors wall to landing page
2026-06-10 19:03:04 +08:00
t8y2
b6d92f8c38
feat: make duckdb optional behind duckdb-bundled feature
2026-06-10 18:30:14 +08:00
t8y2
7a0f89d3ad
fix(jdbc): use schema tree for inferred db2
2026-06-10 18:19:53 +08:00
t8y2
d353d4673f
feat(redis): add configurable key namespace separator
2026-06-10 17:46:48 +08:00
Scars
14d11a9933
fix(desktop): prevent app layout from shifting on editor focus
2026-06-10 17:01:31 +08:00
t8y2
16e404854a
fix: add influxdb to connection type description
2026-06-10 17:01:07 +08:00
t8y2
c4839b6d13
fix(sql-library): use string compare instead of extname for import folder
2026-06-10 16:49:47 +08:00
t8y2
ca1d420d91
feat(grid): add enum column select editor for MySQL
2026-06-10 16:39:24 +08:00
t8y2
f10d152c53
feat: add table structure editing support for 6 missing SQL databases
2026-06-10 16:17:59 +08:00
Abeautifulsnow
1ca3081c2f
feat(ui): add readonly mode visual badge to sidebar and tab bar
...
Add visual indicators so users can distinguish readonly connections from
read-write connections at a glance:
- Sidebar: show a lock icon badge on readonly connection nodes
- Tab bar: show a lock icon with tooltip on tabs with readonly connections
- Add isConnectionReadonly() helper in tabPresentation.ts
- Add readOnlyBadge i18n key for all 6 locales (en, zh-CN, zh-TW, es, it, pt-BR)
2026-06-10 15:56:37 +08:00
Scars
cb6c09e346
fix(desktop): add scrollable query result tabs ( #986 )
...
Thanks for the contribution!
2026-06-10 15:13:17 +08:00
t8y2
8a458f1432
fix: add InfluxDB to agent catalog and bridge types
2026-06-10 14:46:08 +08:00
John Jin
0bd07ccf46
feat: add InfluxDB support ( #980 )
2026-06-10 14:37:53 +08:00
t8y2
c13efc65f8
fix(connect): support informix-sqli JDBC URL parsing
2026-06-10 14:26:50 +08:00
github-actions[bot]
6152b01ea8
chore(packages): release 0.4.8 [skip node-packages-release]
2026-06-10 05:57:23 +00:00
t8y2
59d2dd7c87
feat: add Homebrew formula for dbx-cli
2026-06-10 13:55:33 +08:00
github-actions[bot]
700e06d57e
chore(jdbc): bump plugin version [skip ci]
2026-06-10 05:02:32 +00:00
t8y2
22928c51cc
chore(release): bump version to 0.5.31
2026-06-10 13:01:57 +08:00
t8y2
1545224d34
fix: add missing read_only field and resolve clippy warnings
2026-06-10 12:55:39 +08:00
t8y2
e0269a07cc
chore(docs): gitignore tsbuildinfo
2026-06-10 12:52:04 +08:00
t8y2
5778f73fac
feat(docs): add SoftwareApplication schema, llms.txt, and AI crawler rules
2026-06-10 12:50:43 +08:00
t8y2
500d7c614b
fix: resolve vue-tsc type errors in SqlPreviewPanel and DataGrid
2026-06-10 12:41:24 +08:00
t8y2
42a7ecdbed
fix(grid): prevent scrollbar flicker during sidebar resize
2026-06-10 12:35:13 +08:00
t8y2
973e9f487a
fix(sidebar): match table comments in search
2026-06-10 12:27:26 +08:00
t8y2
8df9484447
feat(ai): support auth methods
2026-06-10 12:14:36 +08:00
t8y2
8599ab8200
feat(data-grid): add SQL preview panel for pending data changes
2026-06-10 12:06:36 +08:00
t8y2
bfec556e9b
feat(readonly): add read-only mode for all database connections
...
- Add read_only field to ConnectionConfig with backward-compatible serde defaults
- SQL classifier with first-keyword + embedded keyword defense layers
- PRAGMA white-listing for safe read-only operations
- Guard all write entry points: SQL, Mongo, Redis, etcd, MCP Bridge
- 16 unit tests covering edge cases (CTE, case insensitivity, string masking)
- 7-language i18n support
- Fast-fail at command/route level before pool creation
Closes #889
2026-06-10 11:58:18 +08:00
t8y2
2f5469ce6d
fix(oracle): add listener driver hint
2026-06-10 11:37:45 +08:00
t8y2
b66cd1a0c0
chore: remove issue moderation workflow
2026-06-10 11:17:43 +08:00
t8y2
1032772241
fix(redis): escape asterisk in fuzzy key search pattern
2026-06-10 11:16:29 +08:00
t8y2
410e3bbfcb
feat(completion): suggest database qualifiers
2026-06-10 11:08:13 +08:00
runstone
a440415e86
feat(readonly): add read-only mode for all database connections
...
## Background
Add a read-only toggle for database connections that blocks all write
operations (INSERT, UPDATE, DELETE, DROP, etc.) when enabled, allowing
only read queries (SELECT, SHOW, EXPLAIN, etc.). Closes #889 .
## Changes
### Data Model
- Added `read_only: bool` field to ConnectionConfig (Rust struct, TS
interfaces, and ConnectionConfigData deserialization layer)
- Used `#[serde(default, skip_serializing_if = "is_false")]` for
backward/forward compatibility with existing configs
### Frontend UI
- Added "Read Only" checkbox in connection dialog
- 7-language i18n support (en/es/it/pt-BR/zh-CN/zh-TW)
### SQL Classification (query_execution_sql.rs)
- Added `is_write_sql()` with two-layer defense:
- Layer 1: First-keyword check (must start with known read keyword)
- Layer 2: Embedded dangerous keyword detection (catches CTE-wrapped
writes like `WITH ... AS (DELETE FROM ...)`)
- `FROM` keyword supported as DuckDB SELECT-less syntax indicator
- Added `check_read_only()` returning descriptive error with connection name
- Added 16 unit tests covering: pure reads/writes, CTE, case insensitivity,
string literal masking, comment stripping, stored procedure calls, edge cases
### SQL Execution Guards (query.rs / transfer.rs)
- Added `check_read_only_for_connection()` and `_multi()` helper functions
with lazy name clone (only allocates when read_only is true)
- 6 interception points: `do_execute`, MySQL batch, SQL Server batch,
DuckDB batch, transaction execution, transfer execution
### Non-SQL Write Guards — Tauri Commands
- Added `ensure_connection_writable()` helper (connection.rs)
- Mongo: 6 write entry points (insert/update/delete, single + batch)
- Redis: 15 write entry points (SET, DEL, HSET, HDEL, LPUSH, LSET, LREM,
SADD, SREM, ZADD, ZREM, EXPIRE, FLUSHDB, delete_keys, execute_command)
- execute_command uses RedisCommandSafety classification to allow
safe read commands through raw command interface
- etcd: 2 write entry points (put, delete)
- sql_file: SQL file execution guarded
- MCP Bridge: 4 write entry points (Insert/Update/Delete/SQL query)
### Non-SQL Write Guards — Web API
- Local `ensure_writable()` helper in each route module
- Redis: 12 write endpoints including classified execute_command
- Mongo: 6 write endpoints
- etcd: 2 write endpoints
- sql_file, table_import, transfer: early rejection
### Test Updates
- Updated ConnectionConfig construction in 7 test files with
`read_only: false` initialization
## Defense-in-Depth
- Layer 1: Command/Route-level early rejection (saves resources)
- Layer 2: Core SQL classifier (`is_write_sql` — first keyword + embedded scan)
- Layer 3: Core execution-time interception (do_execute/transfer/transaction)
2026-06-10 10:58:52 +08:00
t8y2
3a52d961fc
fix(completion): avoid table fallback for aliases
2026-06-10 10:51:41 +08:00
t8y2
dadcc348cb
fix(ssh): handle invalid key comment encoding
2026-06-10 10:45:14 +08:00