Commit Graph

111 Commits

Author SHA1 Message Date
t8y2 41445ff474 chore: add rustfmt.toml and apply unified code formatting 2026-05-05 14:16:18 +08:00
t8y2 edcdd652ae fix(connection): reduce failed connection timeout
Closes #86
2026-05-05 14:13:07 +08:00
t8y2 f9a9945f1f feat: migrate storage from JSON files to SQLite
Replace all JSON file storage (connections, secrets, history, AI config,
conversations, sidebar layout) with a single SQLite database (dbx.db).
Auto-migrates existing JSON data on first launch, renaming old files to
.bak. Remove keyring dependency — passwords now stored in SQLite.
2026-05-05 04:48:45 +08:00
t8y2 cf4f25fd52 feat: extract dbx-core crate for web deployment support
Refactor all database drivers, query execution, schema operations, and
business logic into a shared `dbx-core` crate. The Tauri desktop app
becomes a thin shell delegating to dbx-core, enabling future web and
CLI frontends to reuse the same core.
2026-05-05 03:16:24 +08:00
t8y2 0d6892bae2 fix: base64-encode updater pubkey to match expected format 2026-05-04 23:07:52 +08:00
t8y2 b9e29b423f fix: update SQLite connection options for network paths 2026-05-04 21:45:16 +08:00
t8y2 85706d5c86 fix: update updater pubkey and settings dialog overflow 2026-05-04 21:21:31 +08:00
t8y2 9ced92fdc8 fix: expand tilde in SQLite/DuckDB file paths to home directory
Closes #84
2026-05-04 21:10:34 +08:00
t8y2 af9c206d75 feat: add auto-update support via tauri-plugin-updater 2026-05-04 18:14:40 +08:00
t8y2 8d3c14c24a chore: bump version to 0.4.0 2026-05-04 17:41:07 +08:00
t8y2 bc7f521604 feat: add connection group management and sidebar layout persistence 2026-05-04 13:52:42 +08:00
t8y2 99c5626cc3 chore: bump version to 0.3.10 2026-05-04 03:05:45 +08:00
t8y2 fc71be8f1a feat: remove deprecated connect function and streamline SQLite connection handling 2026-05-04 02:57:05 +08:00
t8y2 ae21053f69 feat: add execute_multi command and update query handling for multiple results 2026-05-04 02:55:19 +08:00
Agent-43 81bd188972 Fix SQLite UNC path connections 2026-05-03 23:28:45 +05:30
yavon007 8013a19e50 fix: separate key columns from included in PG index, add varbinary(max) for SQL Server
PostgreSQL list_indexes was returning all_cols (key + included) in IndexInfo.columns,
causing DDL and UI duplication. Now only key columns are returned in columns, with
included columns correctly split via indnkeyatts.

SQL Server varbinary now handles Some(-1) to display varbinary(max).
2026-05-03 21:03:49 +08:00
yavon007 8106b6370c Merge remote-tracking branch 'origin/main' 2026-05-03 20:34:19 +08:00
yavon007 a59494e4c4 fix: guard index column splits, restrict INCLUDE/WHERE by db, unify index type dropdowns
- Filter empty strings from STRING_AGG/LISTAGG splits in SQL Server, Oracle, MySQL
- Emit INCLUDE clause only for PostgreSQL and SQL Server (not MySQL/SQLite)
- Emit WHERE clause only for PostgreSQL, SQL Server, SQLite (not MySQL)
- Replace index type free-text input with dropdown for all 5 database types
- Fix hardcoded column count in resize handle (use indexColLabels.length - 1)
- Fix pg_get_indexdef type mismatch: cast k.n from bigint to integer
2026-05-03 20:33:09 +08:00
yavon007 25f2f46718 fix: correct PostgreSQL numeric_scale formula and add index SQL test coverage
The numeric_scale extraction used (& 2047) - 1024 which produces negative
values; fixed to & 65535. Added 12 tests for index SQL generation: INCLUDE,
USING, WHERE, COMMENT ON INDEX, type prefix, and combined scenarios.
2026-05-03 20:11:44 +08:00
yavon007 4e1b35186b feat: add index type, included columns, filter, and comment support
- Add filter, index_type, included_columns, and comment fields to IndexInfo
- PostgreSQL: query pg_am for index type, use indnkeyatts to split key/included columns, retrieve index comments via obj_description()
- SQL Server: add type_desc, filter_definition, included columns via is_included_column
- MySQL: add INDEX_TYPE from information_schema.STATISTICS
- Oracle: add INDEX_TYPE from ALL_INDEXES
- DDL generation: add USING (PostgreSQL), type prefix + INCLUDE + WHERE (SQL Server), COMMENT ON INDEX (PostgreSQL)
- Frontend: update types, state mapping, SQL generation, and i18n translations
2026-05-03 20:10:35 +08:00
yavon007 b88e1b8ccb fix: improve column type precision and SQL correctness across all databases
- PostgreSQL: rewrite column query from information_schema to pg_attribute for accurate type info via format_type(atttypid, atttypmod); extract character_maximum_length from atttypmod for varchar/bpchar; fix execute_query with persistent(false) and empty result fallback
- SQL Server: reconstruct column types with precision (varchar(max), decimal(p,s), datetime2(p)); stop dividing nvarchar/nchar CHARACTER_MAXIMUM_LENGTH by 2
- MySQL: use COLUMN_TYPE instead of DATA_TYPE for full type definitions; add CHARACTER_MAXIMUM_LENGTH; fix ONLY_FULL_GROUP_BY with MIN(NON_UNIQUE)
- Oracle: add CHAR_LENGTH/DATA_LENGTH for column type precision; fix INDEX_OWNER join to prevent cartesian product
- SQLite: fix PRAGMA injection via double-quote escaping; detect primary key indexes via origin column
2026-05-03 20:10:35 +08:00
t8y2 2e4ac5a574 fix: correct product name casing in tauri configuration 2026-05-03 18:52:05 +08:00
t8y2 3cd328ece8 feat: enhance application run logic to handle macOS window reopening 2026-05-03 18:50:12 +08:00
t8y2 b771e69f29 chore: bump version to 0.3.9 2026-05-03 15:13:48 +08:00
t8y2 53df4e56cb feat: MCP bridge enhancements — window focus, execute-query, markdown output
- Auto-focus DBX window when MCP opens a table or executes a query
- Ensure connections are loaded before handling MCP events
- Add /execute-query bridge route and dbx_execute_and_show tool
- Format all tool responses as markdown tables (less tokens, more readable)
- Extract shared bridgeRequest helper to reduce duplication
2026-05-03 14:50:44 +08:00
t8y2 aa59c26fa2 feat: add MCP bridge for AI agent integration
Localhost HTTP listener (dynamic port) allows MCP Server and other AI agents
to open tables directly in DBX UI via Tauri events.
2026-05-03 14:35:48 +08:00
t8y2 da70b8f2c1 chore: bump version to 0.3.8 2026-05-03 13:01:46 +08:00
skyler 1b8d56a43b
Merge pull request #65 from SuLea-IT/codex/field-lineage
[codex] Add field lineage viewer and review fixes
2026-05-03 11:18:36 +08:00
SuLea-IT 4d6cd5351c fix: address lineage review feedback 2026-05-03 06:02:39 +08:00
yavon007 58ca9a3b21 feat: add SSH key passphrase field and file picker for key path
- Add ssh_key_passphrase field to ConnectionConfig model with full keyring lifecycle
- Pass passphrase to russh load_secret_key for encrypted SSH keys
- Add native file picker (FolderOpen icon) next to SSH key path input
- Add password-type input for key passphrase in connection dialog
- Make connection dialog form scrollable for short windows
- Fix alignment of key path input and browse button
- Add i18n keys (en + zh-CN)
2026-05-03 04:39:03 +08:00
t8y2 05d0b0408c chore: bump version to 0.3.7 in Cargo.lock 2026-05-02 23:52:04 +08:00
t8y2 fb8b06cc14 chore: bump version to 0.3.7 2026-05-02 23:29:38 +08:00
t8y2 f598b5a91c feat: enhance MySQL connection handling with bare option and optimize component imports 2026-05-02 23:25:39 +08:00
t8y2 db31a7c45e chore: optimize release profile with panic=abort and fat LTO 2026-05-02 22:54:19 +08:00
t8y2 d3d680b224 chore: switch release LTO from fat to thin for faster builds 2026-05-02 22:30:30 +08:00
skyler adb7bc9253
Merge pull request #61 from SuLea-IT/codex/explain-plan-viewer
feat: add explain plan viewer
2026-05-02 21:54:54 +08:00
t8y2 44c98ba335 feat: add support for bare MySQL connections and improve SQL query handling for doris 2026-05-02 21:51:50 +08:00
SuLea-IT d180539778 feat: add explain plan viewer 2026-05-02 21:00:53 +08:00
t8y2 eab5556b6f feat: enhance AI streaming with reasoning support and UI updates 2026-05-02 20:43:49 +08:00
SuLea-IT 2ebd72b3b7 feat: import table data from files 2026-05-02 19:04:41 +08:00
t8y2 608a02a0bb chore: bump version to 0.3.6 2026-05-02 17:48:30 +08:00
t8y2 a025649f89 fix: update MySql connection options to include pipes as concat and timezone settings 2026-05-02 17:36:00 +08:00
t8y2 c6f9bb89ec fix: support for ClickHouse database username and password configuration 2026-05-02 17:25:16 +08:00
t8y2 40a67434ee feat: use file-based secret store in debug mode to avoid macOS Keychain prompts
During development, every Rust recompile changes the binary signature,
causing macOS to invalidate Keychain "Always Allow" and prompt for the
password on every hot reload. Switch to a JSON file store in debug
builds so dev workflow is uninterrupted; release builds still use the
system keychain.
2026-05-02 16:45:17 +08:00
SuLe b6f89f02fb add database relationship diagrams 2026-05-02 13:09:53 +08:00
skyler 0273f9f65d
Merge pull request #50 from kingcanfish/fix/numeric-precision-display
fix: resolve PostgreSQL/MySQL/SQL Server NUMERIC/DECIMAL display issues
2026-05-02 10:36:27 +08:00
kingcanfish d1075c0042
fix: resolve PostgreSQL/MySQL/SQL Server NUMERIC/DECIMAL display issues
- Add rust_decimal feature to sqlx and tiberius for proper Decimal type handling
- Fix try_get_unchecked<String> causing NULL or garbled output for numeric types
- Add numeric_precision and numeric_scale to ColumnInfo for all database drivers
- Update frontend to display precision (e.g., numeric(20,6)) in column headers
- Fix typeColorClass to handle type names with precision suffix

Root cause: PostgreSQL binary protocol sends NUMERIC as PgNumeric binary format,
not UTF-8 text. try_get_unchecked<String> attempted to decode binary bytes as UTF-8,
causing decode failures (NULL) or garbage characters (乱码).
2026-05-02 10:14:01 +08:00
t8y2 f936e4e99f chore: bump version to 0.3.5 2026-05-02 09:55:15 +08:00
skyler 8b153bef0d
Merge pull request #49 from SuLea-IT/codex/sql-file-execution
Add SQL file execution workflow
2026-05-02 09:47:33 +08:00
SuLe 518bdc2c38 support sql file dump splitter cases 2026-05-02 05:42:34 +08:00