Improve/stability dx - #18
Merged
Merged
Conversation
… on server
- Give QueryTab a stable id and carry it through QueryJob/QueryResultMessage
so a result that finishes after a tab switch lands in the tab that ran it.
- Run INSERT/UPDATE/DELETE/DDL via execute() and report the driver's
rows_affected instead of the result-set length (always 0 before).
- Split statements with the quote/dollar-quote/comment aware splitter in the
executors, auto-pagination check and user manager (was split(';')).
- Execute statements that start with a comment instead of skipping them.
- Decode PostgreSQL values by native type (INT4, NUMERIC, TIMESTAMP, UUID,
JSON, arrays, ...) instead of showing [unsupported]/Error.
- MySQL: stop retrying the whole job after a statement error or timeout,
which could execute DML up to three times; retry only on connect failure.
- Replace hard-coded 10s/15s/60s timeouts with a configurable query timeout
(default: none) and add a max-rows-per-result limit with a notice.
- Record backend pid per job; cancel and timeout send pg_cancel_backend /
KILL QUERY so the statement stops on the server too.
- Surface query start failures as toasts and reset the running state.
- Collapse the duplicated synchronous executor into a wrapper over the async
executor (~780 lines removed).
- Fix pre-existing clippy errors that broke CI.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…d guards - Compile logging in (was max_level_off) and write it to <data_dir>/logs/tabular.log with size-based rotation; "Enable Debug Logging" now applies immediately. - Install a panic hook that saves crash-<time>.log with location and backtrace, and tell the user on the next launch. - Add "Open Logs Folder" and "Copy Diagnostics" to the settings menu. - Hot exit: persist query tabs (including unsaved drafts) and window size to session.json from a background writer and restore them on startup (Settings → Performance → Restore open tabs). - Ask before closing tabs with unsaved changes (single, others, to the right) and before quitting with an open manual-commit transaction. - Remove duplicated eprintln/info tab-action tracing that would flood logs. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Add run_query_for_active_tab / run_query_with_callback helpers that spawn background jobs and queue until the connection pool is ready. - Move every blocking execute_query_with_connection caller (spreadsheet save, create-table wizard, table removal, structure edits and refresh, quick open, FK navigation, Redis key browse, SQL filter, pagination fallback) onto the job pipeline, then delete the synchronous executor. - Apply the tab's PostgreSQL schema as search_path on the connection that runs the query (the old SET ran on an arbitrary pool connection). - Stop inventing a 10,000 row total for server pagination: total is unknown until "Count rows" runs COUNT(*) in the background; Next follows full pages. - Keep two copies of a result set instead of ~7 and fix result-tab switching that ignored pagination. - Spreadsheet save only clears the edits it submitted. - Recover poisoned mutexes in backup/restore instead of panicking. - Write HTTP collections/request state atomically, report save failures, and log (not silently skip) corrupt workspace files. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Add a central keymap (src/keymap.rs): every app/editor shortcut is defined once, matched exactly and consumed so it never fires twice. Shortcuts are searchable and rebindable in a Keyboard Shortcuts window (F1 / ⌘⇧/), persisted as overrides in keybindings.json, with conflict warnings. - Implement shortcuts Quick Open already advertised but never handled (new tab, settings, manual-commit toggle); Quick Open hints now come from the live bindings. - Capture error positions (PostgreSQL position, MySQL "at line N") and offer "Go to error" to move the editor cursor to the failing spot. - Replace the remaining blocking error dialogs with toasts; drop duplicate toasts and the stale spreadsheet save toast now reported by the job. - Use English consistently for UI strings (66 mixed Indonesian strings). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Narrow the crate-wide clippy allow list from 25 lints to 3 structural ones and fix what they were hiding (clamp, struct init, late init, docs, ...). - CI: clippy -D warnings for all targets with and without `collab` plus tests on Linux and macOS (Windows non-blocking), dependency caching, cancel superseded runs, and an informational rustfmt check; add rustfmt.toml. - Drop cargo-deb from runtime dependencies (a packaging CLI, never used by the code) and pin mssql-client/mssql-driver-pool to 0.20.x as intended. - Stop tracking .env (add .env.example), stop ignoring Cargo.lock, and move old planning/audit documents from the repo root to docs/archive. - Group the nine query-job fields of Tabular into QueryJobsState with a single allocate_id() in place of eleven copies of the id bookkeeping. - Honour RUST_LOG only when it holds a valid level spec. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… and update mongodb dependency
…ed filtering and AI context retrieval
…with read-only SQL safety guard and schema browsing tools
… HTTP connections
…references module
…markdown normalization
…ormat null values in italics
…gn floating toolbar
… and affix stripping
added 2 commits
September 19, 2026 07:34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.