Release 0.4.11-b - #471
Merged
Merged
Conversation
Share injectSqlLimit via sql_limit.dart and apply it in the SQLite SQL workspace so SELECT/WITH/VALUES are bounded at the engine, not only after rawQuery loads the full set. Document row-cap behavior. Closes #415
perf(sqlite): inject LIMIT before materializing SQL results (#415)
saveToFile no longer builds a full-document String; CSV reuses writeResultGridCsv and JSON/Markdown/SQL write row-by-row with yields. Clipboard keeps isolate formatAsync (OS clipboard API). Closes #417
perf(export): stream DataExportService file saves (#417)
Extend injectSqlLimit to clamp LIMIT n, LIMIT ALL, and FETCH FIRST when larger than the UI row cap so Postgres (and SQLite) engines do not buffer more rows than Preferences allow. Document the policy. Closes #416
Hash archives with sha256HexOfFile (openRead stream) and decode via InputFileStream so marketplace/sideload no longer keep a full byte buffer plus ZipDecoder output. Clear entry content after write. Closes #418
perf(sql): clamp oversized LIMIT / FETCH (#416 onto dev)
perf(marketplace): stream SHA256 + file-stream zip decode (#418)
Fail closed when a plugin stdout line exceeds 32 MiB, decode large lines off the UI isolate, always send db.query limit from Preferences, and document host payload limits for driver authors. Closes #419
Flatten expanded tree rows and render via ListView.builder + itemExtent so large schemas only build viewport widgets instead of a full Column. Closes #420
Small buffers highlight inline; large buffers still use compute(), avoiding isolate overhead on every keystroke in short SQL editors. Closes #424
perf(extensions): bound JSON-RPC payload size (#419)
perf(sdui): virtualize SduiTreeBuilder (#420)
…eshold perf(editor): honor syntax highlight isolate threshold (#424)
Avoid shipping full Object? matrices across isolates (peak ~2× copy). Shared convertResultRowsToStringsYielding; MySQL SQL workspace converts while streaming rowsStream. Postgres/SQLite/table browse use the helper. Closes #421
perf(results): yielding row→string convert (no isolate double-copy) (#421)
Enqueue all TYPE then all TTL before awaiting replies (pipe_start/end), so a 100-key batch is one RTT burst instead of ~200 round-trips. Closes #426
Cap incomplete-line carry, drop overflow until the next newline, and avoid toString+split rebuilds on every chunk. Bound sanitize input length. Closes #427
Index (connection_id, database_name, recorded_at, id); prune via count + oldest-id DELETE instead of nested OFFSET subquery. Schema v8 migration. Closes #428
…ield-reland perf(mysql): re-land table browse yield convert (#422)
Skip unchanged theme file reads on refresh; cache builtins; theme-only watcher modify events avoid full extension registry reload. Closes #425
perf(redis): pipeline TYPE/TTL for SCAN batches (#426)
perf(storage): SQL history index + prune without nested OFFSET (#428)
perf(sandbox): bound stderr carry to avoid O(n²) (#427)
perf(theme): incremental theme registry rescan (#425)
Build only the visible column window (plus overscan) with leading/trailing spacers so wide result sets do not mount O(rows×cols) cells. Header stays aligned with the body. Closes #423
…alize perf(ui): 2D virtualization for VirtualResultGrid (#423)
Pass the flag through to showGeneralDialog so ModalRoute DismissIntent closes on Escape when dismissible; keep frosted backdrop tap handling. Closes #446
Capture NavigatorState before await and pop loading even when the host widget unmounts mid-fetch (extension + SQLite table views). Closes #447
Match extension_stats: clear _loading when replaceIfChanged is a no-op. Set error + stop spinner when connection is missing after load started. Closes #448
fix(ui): Escape dismisses showAppDialog (#446)
fix(ui): always pop DDL loading overlay (#447)
…clear fix(ui): clear loading on stats/table early exits (#448)
fix(ui): tree errors, empty table state, scrollable toolbars
fix(ui): SQL toasts, chrome scale, Redis/Mongo empty states
chore(release): prepare 0.4.11-b
Keep version 0.4.11-b over main auto-bump 0.4.12+.
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.
Summary
Patch release after 0.4.11. Tag
0.4.11-awas mistargeted (same commit as0.4.11); 0.4.11-b is the first real patch binaries.pubspec.yaml: 0.4.11-bChangelog
[0.4.11-b] - 2026-07-27
Post-0.4.11 patch that ships security + Linux distro packaging (intended for 0.4.11-a), plus performance bounds (#414), UI reliability (#445), and code-review correctness (#463).
Added
.rpm, Flatpak (.flatpakbundle + manifest), and AUR PKGBUILD; Release CI publishes rpm + Flatpak alongside existing.deb/ AppImage — see packaging.md.Security
ThemeRemoteInstallServicedefaultsallowLocalhostInDebugtokDebugMode.p.isWithin()bounds checks (archive_path_guard.dart).HttpMarketplaceRepositoryrequires manifest checksum before install.MarketplaceDownloadPolicy).SafeZipExtractor(extensions, updater, themes)..zip/.qextinstall dialog with security notice and optional SHA256.Performance
LIMITbefore materializing rows; Postgres clamps oversizedLIMIT/FETCH.SduiTreeBuilder.Fixed
showAppDialog; DDL overlay always pops; stats/table loading clears on early exit; tree error + Retry; empty table state; scrollable toolbars; SQL open/save toasts; title-bar scale; Redis/Mongo empty banners; mounted guards; ResultsTab invariants.injectSqlLimitskips string/dollar quotes; delete partial export files on failure; PG tree clears stale children on error; theme watcher queues in-flight refresh; Redis keys error banner clears on success.After merge (tag yourself)
Verify
git rev-parse 0.4.11-b^{}≠0.4.11^{}and Release artifacts areQuerya-Desktop-0.4.11-b-*(incl..rpm/.flatpak).