Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ All notable changes to QueryDen are documented here. This project adheres to [Se
- **[#15](https://github.com/openidle-dev/queryden/issues/15) — Argon2id parameters are now explicitly locked.** Replaced `Argon2::default()` with an explicit `Params::new(19456, 2, 1, None)` — 19 MiB memory cost, 2 iterations, 1 parallel thread, using Argon2id v1.3. These match the actual defaults of the argon2 0.5 crate and prevent silent parameter drift across crate version bumps.

### Fixed
- **[#182](https://github.com/openidle-dev/queryden/issues/182) — PostgreSQL OID type now handled explicitly.** The `tauri-plugin-sql` patch's PostgreSQL decoder now has a dedicated `"OID"` match arm that decodes as `i32`, avoiding fallthrough through the wildcard chain. Fixes "unsupported datatype: OID" errors when querying system catalogs like `pg_stat_activity`.
- **Tab right-click context menu.** Right-clicking a query editor tab now shows a DataGrip-style menu: Close, Close Others, Close All, Rename, Duplicate, Copy File Path, Open in Explorer. Copy File Path copies the tab's auto-save `.sql` path to the clipboard with fallback (textarea + `execCommand`) for Linux WebKitGTK where the async clipboard API is unavailable. Open in Explorer creates the auto-save directory if it doesn't exist, then reveals the file via `revealItemInDir` with an `openPath` fallback on all platforms (Windows, Linux, macOS).
- **Inline editing SQL now quotes table/column names.** When inserting, updating, or deleting rows from the results grid, the generated `INSERT`/`UPDATE`/`DELETE` SQL uses `quoteIdentifier()` for all table names and column names — handling mixed-case identifiers, reserved words, and schema-qualified names (`"schema"."table"`) consistently across PostgreSQL, MySQL/MariaDB, SQLite, and CockroachDB.
- **Session restore tabs now visible without a connection.** Restored query tabs (from `sessions.json`) render immediately on launch — the tab strip and Monaco editor appear even before the user selects a database from the sidebar. Previously all tabs were hidden behind the `isDatabaseReady` gate, requiring a manual connection click. The toolbar (Run/Save/Format buttons) stays gated as those actions require a live database.
- **`handleSave` now respects tab-scoped target databases.** When adding a new row and saving, the `INSERT`/`UPDATE` SQL now routes to the tab's target database (set when opening a table from the Data Explorer) instead of relying on the global `currentDb` connection. The save operation also resolves the target connection's own credentials (host, port, type, vault) via `connections.find()`, mirroring how `executeQuery` handles tab-scoped connections. Fixes "relation does not exist" errors that occurred when the tab's target differed from the active connection's database.
- **PSQL Console output no longer disappears on Windows after command execution.** On Windows WebView2, React 18 can split its batch so that `setIsExecuting(false)` renders one frame before `setQueryTabs` commits the new `psqlEntries`. In that split frame neither `liveOutput` (already `[]`) nor `entries` (stale) carried the result. Fixed by (a) stashing the last non-empty `psqlOutput` in a ref and always passing it as `liveOutput`, and (b) adding a grace period in `PsqlWindow` that keeps the live section visible for up to 300ms post-execution (or until entries reflect the output, whichever comes first).
- **[#157](https://github.com/openidle-dev/queryden/issues/157) — SQLite provider form stuck on SSH tab after provider switch.** The "Back to Providers" button now resets the active tab to General, preventing a state where the SQLite form is unreachable because the tab row is hidden for SQLite connections.
- **[#183](https://github.com/openidle-dev/queryden/issues/183) — Activity monitor database filter now works correctly.** The `datname` filter in the PostgreSQL activity monitor was building SQL with double-quoted identifiers instead of string literals, causing a "column does not exist" error. Fixed by using a bind parameter (`$1`) instead of `quoteIdentifier`.
- **[#138](https://github.com/openidle-dev/queryden/issues/138) — Unsaved-query exit warning no longer shows stale dirty state across tabs editing the same saved query.** When the same saved query is open in multiple tabs and one tab saves, all other tabs sharing that saved query now refresh their dirty-state snapshot so the exit prompt correctly reflects whether each tab's content matches the on-disk text. The toolbar Save Query button now also checks for existing queries and updates the tab's dirty state like Ctrl+S.
Expand Down
2 changes: 2 additions & 0 deletions src-tauri/capabilities/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
"core:window:allow-destroy",
"opener:default",
"opener:allow-open-url",
"opener:allow-open-path",
"opener:allow-reveal-item-in-dir",
"sql:default",
"sql:allow-execute",
"dialog:default",
Expand Down
Loading