Skip to content

Release 0.4.14 - #675

Merged
ZhuchkaTriplesix merged 89 commits into
mainfrom
dev
Aug 30, 2026
Merged

Release 0.4.14#675
ZhuchkaTriplesix merged 89 commits into
mainfrom
dev

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Release 0.4.14 — Performance, Security & Platform Hardening

Major release bringing near-instantaneous menubar dropdown animations, native macOS system menu integration (PlatformMenuBar), destructive query confirmation modals, deep memory optimizations (string interning, compact column vectors), complete data grid keyboard navigation, and rich multi-format cell inspection.


✨ Highlights

⚡ Instantaneous Menubar Dropdowns & Titlebar Polish (#672, #673)

  • Accelerated dropdown open animation to 60ms with Curves.easeOutCubic.
  • Eliminated initial pointer-down delay by triggering top-level menus on mouse down (onTapDown).
  • Unwrapped Menubar from MoveWindow to prevent OS window drag gesture competition from delaying menu clicks.
  • Unified TapRegion boundaries and enabled clean toggle-close and zero-latency sibling menu switching.

🛡️ Destructive Query Confirmation Modal (#608, #622, #638, #641)

  • Safety confirmation modal for destructive DDL and DML operations (DROP, TRUNCATE, bulk DELETE/UPDATE without WHERE).
  • Visual SQL diff preview, detected operations list, and mandatory acknowledgement checkbox before execution across core and extension workspaces.

⌨️ Data Grid Keyboard Navigation & Rich Cell Inspector (#662, #663, #664, #665)

🍎 Native macOS PlatformMenuBar Integration (#612, #626)

  • Native macOS top system menu integration with standard application, file, edit, view, and window submenus.

🔌 Driver Resilience & Recovery UI (#666, #667, #668, #669)

🚀 Deep Memory & Performance Optimizations (#602, #603, #604, #605, #615, #616, #625, #627, #650, #651, #652, #653, #654, #655, #670, #671)

  • String Interning Pool: Deduplicated low-cardinality string allocations in query result grids, slashing heap consumption.
  • Compact Typed Storage & Lazy Cell Stringification: Primitive column vectors with deferred string conversions.
  • Schwartzian Transform Grid Sorting: Precomputed sort keys in sortResultGridRows eliminating redundant comparison overhead.
  • QuickSelect Median Calculation: O(N) median computation in GridSelectionCalcEngine.
  • Background Compute Offload: Selection calculation engine offloaded to background workers.
  • Filter Bar Debouncing & ResultsTab Memoization: Smooth 60 FPS typing without rebuild stutter.
  • Resource Teardown: Hardened window closure and app lifecycle cleanup of timers and sockets.

🔒 Security, Storage & Dialect Fixes (#594, #595, #596, #597, #601, #607, #611, #617, #623, #629, #645, #648, #656, #657, #659, #660)

  • In-memory secret scrubbing for database passwords.
  • Redis safe disconnect and unhandled socket close protection.
  • SQLite Write-Ahead Logging (WAL) and 5000ms busy timeout in LocalDb and workspaces.
  • Monotonic SQL history ordering and batch pruning.
  • DML distinction of literal 'NULL' string from SQL NULL, and leading zero preservation.

🧪 Quality & Verification

  • flutter analyze: 0 issues found.
  • flutter test: 1252 / 1252 non-golden tests passing.
  • Linux release bundle compiles cleanly.

ZhuchkaTriplesix and others added 30 commits August 26, 2026 05:21
…os-dml

fix(dml): preserve leading zeros and boolean strings in string columns (#594)
…tring

fix(dml): differentiate literal 'NULL' string from database NULL (#595)
…rning

feat(dml): add visual duplicate warning in DML Preview dialog for tables without Primary Key (#596)
…-delay

perf(pool): tune idleDisposeDelay to 4 seconds for rapid tab switching (#597)
…imization

perf(grid): optimize sortResultGridRows with precomputed sort keys (#602)
perf(calc): optimize GridSelectionCalcEngine median calculation with QuickSelect (#603)
…meout

fix(storage): enable WAL mode and busy_timeout in LocalDb for concurrent lock resilience (#611)
fix(theme): expand typography monospace fallback stack with Cascadia Code and Consolas (#613)
…ontrast

fix(theme): improve accent color contrast in light default theme (#609)
fix(linux): suppress benign GDK cursor theme and synthetic device log spam (#614)
…ection-dialogs

feat(a11y): add explicit FocusTraversalGroup to multi-section connection dialogs (#610)
…irmation

sec(editor): add confirmation modal for destructive DDL and DML operations (#608)
ZhuchkaTriplesix and others added 28 commits August 30, 2026 17:15
…rkspace-components

refactor(workspace): modularize shared SQL editor and result workbench components
- Memoize GridFilterEngine execution in _ResultsTabState
- Avoid re-filtering rows and re-allocating filtered rows list on idle build passes
- Invalidate cache when filterText, columns, or effectiveRows instance change
- Add widget tests for ResultsTab filter memoization stability

Closes #650
…filtering

perf(workspace): memoize DataGrid filtering in ResultsTab
- Add 150ms debounce Timer for filter text changes in DataGridFilterBar
- Provide instant autocomplete suggestions on keystrokes while debouncing full dataset filter callbacks
- Execute filter immediately on Enter submission and clear button tap
- Cancel pending timers on widget disposal
- Add widget tests for debounced filtering and immediate submission

Closes #651
…lter-bar

perf(workspace): debounce filter input in DataGridFilterBar
…n to background compute

- Introduce GridSelectionCalcEngine.computeAdaptive with computeThreshold of 5000
- Offload stats calculations on massive multi-cell selections to background isolate
- Update ResultsTab onSelectionValuesChanged to leverage adaptive compute
- Add unit tests for synchronous and isolate-based selection statistics calculation

Closes #652
…-selection-calc

perf(workspace): offload massive grid selection statistics calculation to background compute
- Configure PRAGMA busy_timeout = 5000 in SqliteConnection.connect() onOpen
- Prevent immediate SQLITE_BUSY / database locked errors during concurrent disk access
- Add unit test verifying PRAGMA busy_timeout on connection initialization

Closes #656
fix(sqlite): configure busy_timeout on SQLite connections
- Guard RedisConnection.disconnect() against uninitialized socket close exceptions
- Add forceClose() delegating cleanly to disconnect()
- Add unit tests for idempotent disconnect and forceClose

Closes #657
fix(redis): guard disconnect against null check operator exceptions on uninitialized socket close
…ngine and grid validator

- Add _isBinaryType and dialect-specific hex formatting in TableMutationEngine
- Format bytea as E'\\x...' / '\\x...'::bytea for PostgreSQL and X'...' for MySQL / SQLite
- Add hex validation for blob, binary, varbinary, bytea, and raw in GridDataTypeValidator
- Add unit tests for binary formatting and validation across dialects

Closes #658
feat(workspace): support binary and BLOB data types in DML mutation engine and grid validator
…i-cell range selection in DataGrid

- Add _navigateCell, _jumpToCell, and _selectAll in ResultGridView
- Bind Arrow keys (Up, Down, Left, Right) and Shift+Arrows for multi-cell range selection
- Bind Home, End, Ctrl+Home, Ctrl+End, PageUp, PageDown, and Ctrl+A / Meta+A
- Implement _scrollToCell for auto-scrolling active cells into viewport view
- Add widget tests covering cell keyboard navigation, range selection, and shortcuts

Closes #662
…tion

feat(workspace): implement comprehensive keyboard navigation and multi-cell range selection in DataGrid
…tting, hex viewer, and shortcut support

- Add Format XML/HTML, Format Hex, and Wrap/No-Wrap buttons to GridCellInspectorDialog
- Add real-time text statistics bar (lines, characters, byte size)
- Support keyboard shortcuts in inspector (Ctrl+Enter / Meta+Enter to apply, Alt+N for NULL)
- Add Ctrl+I / Meta+I shortcut in VirtualResultGrid to inspect active cell
- Add widget tests for XML, Hex formatting, wrap toggles, and shortcut handling

Closes #663
…modal

feat(workspace): expand rich cell inspector modal with XML/HTML formatting, hex viewer, and shortcut support
…silience

fix(extensions): harden plugin rpc bridge against stdin flush hangs and manifest request timeouts
…tart-ui

feat(extensions): implement extension driver session restart and recovery action in workspace UI
…dening

perf(workspace): harden memory lifecycle, staging buffer disposal, and grid row cache cleanup
- Add customizable show/dismiss duration and animation curves to PopoverOverlayHandler
- Configure high-performance menuHandler with 60ms open and 50ms dismiss duration using Curves.easeOutCubic
- Update scale animation from 0.9->1.0 to 0.96->1.0 for subtle, desktop-native reveal
- Unify TapRegion group IDs and allow immediate closure when switching sibling menus
- Toggle close open dropdowns upon clicking menu button again
- Add widget test verifying rapid open timing, toggle close, and sibling switch
)

- Unwrap Menubar from MoveWindow in QueryaWindowTitleBar to prevent window drag gesture arena interception from delaying menu clicks
- Trigger top-level Menubar opening on onTapDown (pointer down) rather than waiting for mouse release
- Adjust entry scale to 0.98 for instantaneous perceived start of dropdown appearance
perf(ui): accelerate menubar dropdown open and transition speed
chore(release): prepare release 0.4.14
@ZhuchkaTriplesix ZhuchkaTriplesix self-assigned this Aug 30, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit d1ced50 into main Aug 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant