Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
767 commits
Select commit Hold shift + click to select a range
166cc10
Merge pull request #1300 from QueryaHub/fix/erd-group-gather
ZhuchkaTriplesix Oct 10, 2026
54fd227
fix(erd): interface review polish - plain notes, keys after a note, v…
ZhuchkaTriplesix Oct 10, 2026
a63d4e8
Merge pull request #1301 from QueryaHub/fix/erd-ui-review-2
ZhuchkaTriplesix Oct 10, 2026
250f8a4
fix(db): a failed reconnect gives its lease back in the PostgreSQL, M…
ZhuchkaTriplesix Oct 10, 2026
38cf416
fix(connections): Test Connection of an edited connection uses the sa…
ZhuchkaTriplesix Oct 10, 2026
0ad087b
fix(redis): connect timeout, no socket left after a failed AUTH, sing…
ZhuchkaTriplesix Oct 10, 2026
2d1b7c3
Merge pull request #1317 from QueryaHub/fix/1306-pool-lease-leak
ZhuchkaTriplesix Oct 10, 2026
cfdecd4
fix(connections): a saved password with URI special characters no lon…
ZhuchkaTriplesix Oct 10, 2026
4169d0a
fix(storage): an unreadable keyring is an error, not an empty passwor…
ZhuchkaTriplesix Oct 10, 2026
0fe0070
fix(redis): connect limit is a seam so widget tests do not leave a ti…
ZhuchkaTriplesix Oct 10, 2026
4a78e0d
fix(ssh): host key fingerprints are in the OpenSSH format (#1304)
ZhuchkaTriplesix Oct 10, 2026
9ec82c9
fix(errors): SSH tunnel failures are not reported as a database authe…
ZhuchkaTriplesix Oct 10, 2026
2dfb834
fix(connections): Test Connection says why it failed (#1308)
ZhuchkaTriplesix Oct 10, 2026
f0535fd
fix(errors): a missing column is not reported as a missing table (#1310)
ZhuchkaTriplesix Oct 10, 2026
5066a94
Merge pull request #1318 from QueryaHub/fix/1302-test-connection-stor…
ZhuchkaTriplesix Oct 10, 2026
a01bbd4
Merge pull request #1319 from QueryaHub/fix/1307-redis-connect
ZhuchkaTriplesix Oct 10, 2026
525ae58
Merge pull request #1320 from QueryaHub/fix/1303-secret-store-read-er…
ZhuchkaTriplesix Oct 10, 2026
e4ec54b
Merge pull request #1321 from QueryaHub/fix/1304-ssh-fingerprint-format
ZhuchkaTriplesix Oct 10, 2026
5ebee53
fix(mongodb): connection strings with several hosts work (#1309)
ZhuchkaTriplesix Oct 10, 2026
45f438c
fix(mysql): forceClose and disconnect during connect end the attempt …
ZhuchkaTriplesix Oct 10, 2026
50ffd9a
fix(connections): editing a connection of a missing extension or driv…
ZhuchkaTriplesix Oct 10, 2026
8ac8d21
fix(errors): pool exhaustion, lost sessions and TLS failures read as …
ZhuchkaTriplesix Oct 10, 2026
89cdd84
fix(connections): URL import edge cases: raw special characters, Wind…
ZhuchkaTriplesix Oct 10, 2026
af8c40b
fix(connections): the user info of a raw URL ends at the last @ (#1315)
ZhuchkaTriplesix Oct 10, 2026
d23c393
fix(storage): secrets can be removed on edit, SSH secrets go with the…
ZhuchkaTriplesix Oct 10, 2026
e215199
Merge pull request #1325 from QueryaHub/fix/1309-mongodb-multi-host
ZhuchkaTriplesix Oct 10, 2026
a4c88eb
Merge pull request #1324 from QueryaHub/fix/1310-column-not-found
ZhuchkaTriplesix Oct 10, 2026
196f046
test(db): the pool exhaustion tests expect the typed exception (#1316)
ZhuchkaTriplesix Oct 10, 2026
0d0dbd9
Merge pull request #1326 from QueryaHub/fix/1313-mysql-forceclose-con…
ZhuchkaTriplesix Oct 10, 2026
094cfda
Merge pull request #1327 from QueryaHub/fix/1314-edit-extension-conne…
ZhuchkaTriplesix Oct 10, 2026
f957901
merge dev into fix/1316
ZhuchkaTriplesix Oct 10, 2026
40b7ed8
merge dev into fix/1315
ZhuchkaTriplesix Oct 10, 2026
dbfa8b2
merge dev into fix/1305
ZhuchkaTriplesix Oct 10, 2026
177a637
merge dev into fix/1308
ZhuchkaTriplesix Oct 10, 2026
acc2233
fix(connections): the remove-password option is not a const widget (#…
ZhuchkaTriplesix Oct 10, 2026
24be31c
Merge pull request #1328 from QueryaHub/fix/1316-error-mapping-gaps
ZhuchkaTriplesix Oct 10, 2026
a7f87ec
Merge pull request #1323 from QueryaHub/fix/1308-test-connection-reason
ZhuchkaTriplesix Oct 10, 2026
3ea3e29
Merge pull request #1330 from QueryaHub/fix/1311-secret-clearing
ZhuchkaTriplesix Oct 10, 2026
a84fb0c
Merge pull request #1329 from QueryaHub/fix/1315-url-import-edge-cases
ZhuchkaTriplesix Oct 10, 2026
a8f544e
merge dev into fix/1305
ZhuchkaTriplesix Oct 10, 2026
5a93892
Merge pull request #1322 from QueryaHub/fix/1305-ssh-errors-not-db-auth
ZhuchkaTriplesix Oct 10, 2026
ca849cd
docs(changelog): what has been merged to dev since the ER epic
ZhuchkaTriplesix Oct 10, 2026
c7fc968
Merge pull request #1361 from QueryaHub/docs/changelog-since-1298
ZhuchkaTriplesix Oct 10, 2026
54e48c4
fix(db): reflect underlying driver socket state in isConnected and ma…
ZhuchkaTriplesix Oct 10, 2026
692d440
fix(ssh): close zombie local port forwarder on SSH keep-alive ping fa…
ZhuchkaTriplesix Oct 10, 2026
fc349c5
fix(db): import the mapped exception types in the drivers, await-lint…
ZhuchkaTriplesix Oct 10, 2026
eea81bb
fix(security): prevent host credential exfiltration in bwrap and Seat…
ZhuchkaTriplesix Oct 10, 2026
b407ba9
Merge pull request #1379 from QueryaHub/fix/1373-reflect-driver-socke…
ZhuchkaTriplesix Oct 10, 2026
f974d79
fix(ssh): drop unnecessary null assertions on tunnel session
ZhuchkaTriplesix Oct 10, 2026
18b53e4
Merge pull request #1381 from QueryaHub/issue/1376-prevent-sandbox-cr…
ZhuchkaTriplesix Oct 10, 2026
552071b
fix(storage): add disaster recovery fallback UI when LocalDb fails to…
ZhuchkaTriplesix Oct 10, 2026
667b5fd
Merge pull request #1380 from QueryaHub/issue/1374-close-zombie-ssh-p…
ZhuchkaTriplesix Oct 10, 2026
52c1bf9
fix(updater): use robocopy mirror on Windows to remove obsolete DLLs …
ZhuchkaTriplesix Oct 10, 2026
36c2ab9
fix(packaging): add bubblewrap to Recommends in Linux deb and rpm pac…
ZhuchkaTriplesix Oct 10, 2026
eb0c067
Merge pull request #1383 from QueryaHub/issue/1377-windows-updater-ro…
ZhuchkaTriplesix Oct 10, 2026
7c609d0
fix(data-grid): distinguish literal string 'NULL' from SQL NULL in Ta…
ZhuchkaTriplesix Oct 10, 2026
789071e
Merge pull request #1384 from QueryaHub/issue/1378-add-bubblewrap-to-…
ZhuchkaTriplesix Oct 10, 2026
e61dd47
fix(storage): resolve analyzer issues in startup recovery UI
ZhuchkaTriplesix Oct 10, 2026
35f4f9d
fix(data-grid): use columnMeta types when building WHERE clause
ZhuchkaTriplesix Oct 10, 2026
fcd2dc9
Merge pull request #1385 from QueryaHub/issue/1368-distinguish-null-l…
ZhuchkaTriplesix Oct 10, 2026
4893eb7
Merge pull request #1382 from QueryaHub/issue/1375-localdb-disaster-r…
ZhuchkaTriplesix Oct 10, 2026
170cc05
fix(security): enforce root CA verification and expose TLS sslmode fo…
ZhuchkaTriplesix Oct 10, 2026
e1d67eb
refactor(app): remove non-idempotent side effects and async loads fro…
ZhuchkaTriplesix Oct 10, 2026
931d5ea
fix(postgresql): upgrade sslmode to verify-full when root CA is set
ZhuchkaTriplesix Oct 10, 2026
e238c00
test(app): remove unused widgets import
ZhuchkaTriplesix Oct 10, 2026
c4eb679
fix(ssh): openTunnel leaks sockets on its failure paths, ignores a mi…
ZhuchkaTriplesix Oct 10, 2026
770eda6
fix(postgresql): stop SSL mode dropdown from overflowing in the form
ZhuchkaTriplesix Oct 10, 2026
166ec85
fix(ssh): resolve key before dialing and destroy jump socket on failure
ZhuchkaTriplesix Oct 10, 2026
21344f5
test(recovery): run real DB I/O in runAsync so retry test does not hang
ZhuchkaTriplesix Oct 10, 2026
1aeb1c6
Merge pull request #1389 from QueryaHub/fix/recovery-test-real-io-hang
ZhuchkaTriplesix Oct 10, 2026
198f9b8
refactor(connections): compose connection forms from reusable network…
ZhuchkaTriplesix Oct 10, 2026
12945c2
Merge dev into issue/1367-postgres-sslmode-ca-verification
ZhuchkaTriplesix Oct 10, 2026
00f8910
Merge dev into issue/1345-querya-app-idempotent-build
ZhuchkaTriplesix Oct 10, 2026
26ae0d2
Merge dev into issue/1312-ssh-opentunnel-leaks-singleflight
ZhuchkaTriplesix Oct 10, 2026
a893671
Merge dev into issue/1364-reusable-connection-form-sections
ZhuchkaTriplesix Oct 10, 2026
d6e9ac8
Merge pull request #1386 from QueryaHub/issue/1367-postgres-sslmode-c…
ZhuchkaTriplesix Oct 10, 2026
ec292a3
refactor(editor): decouple QueryaCodeEditor from highlight controller…
ZhuchkaTriplesix Oct 10, 2026
12aba62
test(app): disable native window chrome in QueryaApp build test
ZhuchkaTriplesix Oct 10, 2026
675e498
refactor(workspace): extract SqlWorkspaceToolbar and introduce BaseSq…
ZhuchkaTriplesix Oct 10, 2026
b05b62a
Merge pull request #1388 from QueryaHub/issue/1312-ssh-opentunnel-lea…
ZhuchkaTriplesix Oct 10, 2026
26cae97
Merge pull request #1387 from QueryaHub/issue/1345-querya-app-idempot…
ZhuchkaTriplesix Oct 10, 2026
60d72dc
fix(connections): align form section API and restore imports
ZhuchkaTriplesix Oct 10, 2026
12d1120
fix(workspace): fix toolbar test compile error and analyzer warnings
ZhuchkaTriplesix Oct 10, 2026
3796941
test(connections): fix expectations in connection form sections test
ZhuchkaTriplesix Oct 10, 2026
497f6e0
fix(editor): import QueryaHighlightController in SyntaxHighlightService
ZhuchkaTriplesix Oct 10, 2026
2d1c55b
Merge pull request #1390 from QueryaHub/issue/1364-reusable-connectio…
ZhuchkaTriplesix Oct 10, 2026
a40bbcb
test(workspace): use const ThemeData.dark() in toolbar test
ZhuchkaTriplesix Oct 10, 2026
cd44ba6
refactor(erd): extract ErdTableCard and ErdRelationPainter from erd_view
ZhuchkaTriplesix Oct 10, 2026
3b080a4
Merge pull request #1391 from QueryaHub/issue/1366-editor-controller-…
ZhuchkaTriplesix Oct 10, 2026
ddb3c3e
Merge pull request #1392 from QueryaHub/issue/1363-extract-sql-worksp…
ZhuchkaTriplesix Oct 10, 2026
636f4cb
refactor(erd): move layout, router and geometry to core and add ErdLa…
ZhuchkaTriplesix Oct 10, 2026
3e48e2d
test(erd): unit-test ErdLayoutEngine without a widget tester
ZhuchkaTriplesix Oct 10, 2026
ce4e7d3
refactor(erd): satisfy analyzer in extracted card and engine test
ZhuchkaTriplesix Oct 10, 2026
091efa8
refactor(erd): extract export data builders and toolbar/search/group …
ZhuchkaTriplesix Oct 10, 2026
20920cf
refactor(erd): drop search field import now used by ErdSearchPanel
ZhuchkaTriplesix Oct 10, 2026
d467f96
refactor(erd): extract export menu, table context menu and status bodies
ZhuchkaTriplesix Oct 10, 2026
18ebd6d
refactor(erd): move group operations into ErdGroupOps
ZhuchkaTriplesix Oct 10, 2026
242282c
Merge pull request #1393 from QueryaHub/issue/1362-decompose-erd-view
ZhuchkaTriplesix Oct 10, 2026
7088c4c
refactor(erd): extract ErdNoteCard and ErdNoteOps from the view state
ZhuchkaTriplesix Oct 10, 2026
099ac8b
test(erd): make the note ops test schema const
ZhuchkaTriplesix Oct 10, 2026
e4ed816
Merge pull request #1394 from QueryaHub/issue/1362-erd-note-and-canvas
ZhuchkaTriplesix Oct 10, 2026
a3307b5
fix(a11y): focus ring and state semantics for QueryaIconButton and Qu…
ZhuchkaTriplesix Oct 10, 2026
d657338
Merge pull request #1395 from QueryaHub/issue/1370-icon-button-focus-…
ZhuchkaTriplesix Oct 10, 2026
b376b2f
fix(a11y): expose QueryaDropdown trigger and items to screen readers
ZhuchkaTriplesix Oct 10, 2026
9ddc2fd
Merge pull request #1396 from QueryaHub/issue/1371-dropdown-semantics
ZhuchkaTriplesix Oct 10, 2026
d5658a0
fix(a11y): keep the selected row visible in Command Palette and Quick…
ZhuchkaTriplesix Oct 10, 2026
e216d1f
test(command_palette): drop unused motion import
ZhuchkaTriplesix Oct 10, 2026
f0cf857
Merge pull request #1397 from QueryaHub/issue/1369-palette-scroll-sel…
ZhuchkaTriplesix Oct 10, 2026
a30e340
fix(a11y): close tabs from the keyboard and enlarge the close target
ZhuchkaTriplesix Oct 10, 2026
5ab1a38
Merge pull request #1398 from QueryaHub/issue/1372-tab-strip-keyboard…
ZhuchkaTriplesix Oct 10, 2026
e32bc11
perf(editor): single-pass line numbers and one RegExp in SqlStatement…
ZhuchkaTriplesix Oct 10, 2026
333c5cf
Merge pull request #1399 from QueryaHub/issue/1350-statement-splitter…
ZhuchkaTriplesix Oct 10, 2026
d0fbc34
perf(theme): scan JSONC string literals once and copy them as a slice
ZhuchkaTriplesix Oct 10, 2026
edae090
Merge pull request #1400 from QueryaHub/issue/1360-jsonc-single-pass-…
ZhuchkaTriplesix Oct 10, 2026
9ea12cd
perf(theme): cache the hash of QueryaTheme token colours
ZhuchkaTriplesix Oct 10, 2026
48e92a0
Merge pull request #1401 from QueryaHub/issue/1353-cache-token-colors…
ZhuchkaTriplesix Oct 10, 2026
c238ad2
perf(editor): sync syntax highlighters once when a theme transition ends
ZhuchkaTriplesix Oct 10, 2026
d170c9e
Merge pull request #1402 from QueryaHub/issue/1358-theme-transition-h…
ZhuchkaTriplesix Oct 10, 2026
2f88931
docs(ui): the Querya button and control standard
ZhuchkaTriplesix Oct 10, 2026
e5dbf74
Merge pull request #1403 from QueryaHub/issue/1332-button-control-sta…
ZhuchkaTriplesix Oct 10, 2026
5c398bc
feat(ui): control metrics and tokens shared by the kit's controls
ZhuchkaTriplesix Oct 10, 2026
6a61af3
test(ui): simplify the control row height test
ZhuchkaTriplesix Oct 10, 2026
e3f9a50
perf(sdui): cache visible row list and eliminate rows.any linear scan…
ZhuchkaTriplesix Oct 10, 2026
a37847d
test(ui): const search field in the scope row test
ZhuchkaTriplesix Oct 10, 2026
fabac2c
Merge pull request #1405 from QueryaHub/issue/1359-cache-sdui-tree-vi…
ZhuchkaTriplesix Oct 10, 2026
ed05792
Merge pull request #1404 from QueryaHub/issue/1333-control-metrics-to…
ZhuchkaTriplesix Oct 10, 2026
73bd3e9
feat(ui): QueryaButton on Flutter primitives, no shadcn
ZhuchkaTriplesix Oct 10, 2026
c94f403
perf(sqlite): eliminate redundant double string conversion pass in Sq…
ZhuchkaTriplesix Oct 10, 2026
fcb90f8
test(guards): lib/shared must not import shadcn_flutter (ratchet)
ZhuchkaTriplesix Oct 10, 2026
37ee82d
Merge pull request #1407 from QueryaHub/issue/1354-sqlite-single-pass…
ZhuchkaTriplesix Oct 10, 2026
26f9b21
fix(ui): use material.Key in QueryaButton constructors
ZhuchkaTriplesix Oct 10, 2026
4a004cc
test(guards): drop data_export_service from the shadcn allow-list
ZhuchkaTriplesix Oct 10, 2026
b54ccd7
perf(mysql): add StringInternPool to MySqlSqlExecutionDelegate row co…
ZhuchkaTriplesix Oct 10, 2026
142c635
perf(grid): eliminate duplicate 40-row sampling in computeResultGridC…
ZhuchkaTriplesix Oct 10, 2026
9d5f58b
Merge pull request #1409 from QueryaHub/issue/1365-shared-shadcn-guard
ZhuchkaTriplesix Oct 11, 2026
dde34da
Merge pull request #1410 from QueryaHub/issue/1356-mysql-string-inter…
ZhuchkaTriplesix Oct 11, 2026
907b81e
Merge pull request #1411 from QueryaHub/issue/1349-grid-sampling-spar…
ZhuchkaTriplesix Oct 11, 2026
7253e76
test(ui): the button guard checks imports, not the word in a comment
ZhuchkaTriplesix Oct 11, 2026
76a516d
refactor(ui): QueryaSpinner, QueryaBadge and the tree loading row no …
ZhuchkaTriplesix Oct 11, 2026
a970eb2
Merge pull request #1408 from QueryaHub/issue/1334-querya-button
ZhuchkaTriplesix Oct 11, 2026
c7a043c
perf(grid): eliminate eager List<String> allocation on every pointer-…
ZhuchkaTriplesix Oct 11, 2026
c8bfd4b
refactor(ui): QueryaIconButton, QueryaSearchField and QueryaTabStrip …
ZhuchkaTriplesix Oct 11, 2026
59f8663
refactor(ui): QueryaDropdown and QueryaDialogCard no longer import sh…
ZhuchkaTriplesix Oct 11, 2026
8269121
perf(connections): eliminate blocking File.existsSync() filesystem ca…
ZhuchkaTriplesix Oct 11, 2026
1f8af8d
Merge pull request #1412 from QueryaHub/issue/1365-spinner-badge-load…
ZhuchkaTriplesix Oct 11, 2026
84e49dd
fix(ui): icon button gap is a SizedBox, not shadcn's Gap
ZhuchkaTriplesix Oct 11, 2026
5afe95c
Merge dev into issue/1365-icon-search-tabs-off-shadcn
ZhuchkaTriplesix Oct 11, 2026
f882574
Merge pull request #1414 from QueryaHub/issue/1348-grid-drag-selectio…
ZhuchkaTriplesix Oct 11, 2026
604d666
fix(ui): material.KeyEventResult in the dropdown, const radius in the…
ZhuchkaTriplesix Oct 11, 2026
3046b7b
Merge dev into issue/1365-dropdown-dialogcard-off-shadcn
ZhuchkaTriplesix Oct 11, 2026
4f9443e
Merge pull request #1416 from QueryaHub/issue/1344-driver-icon-async-io
ZhuchkaTriplesix Oct 11, 2026
181657b
fix(ui): read the colour scheme with context.colors, which needs no Q…
ZhuchkaTriplesix Oct 11, 2026
2aabdfb
fix(ui): read the colour scheme with context.colors, which needs no Q…
ZhuchkaTriplesix Oct 11, 2026
de035ed
Merge pull request #1415 from QueryaHub/issue/1365-dropdown-dialogcar…
ZhuchkaTriplesix Oct 11, 2026
f1e0abf
Merge pull request #1413 from QueryaHub/issue/1365-icon-search-tabs-o…
ZhuchkaTriplesix Oct 11, 2026
35e4350
feat(ui): QueryaMenuButton, QueryaSplitButton and QueryaDialogActions
ZhuchkaTriplesix Oct 11, 2026
e7cf47c
refactor(ui): QueryaModalDialog and QueryaConfirmDialog on QueryaButt…
ZhuchkaTriplesix Oct 11, 2026
430834c
refactor(ui): QueryaEmptyState on QueryaButton, off shadcn
ZhuchkaTriplesix Oct 11, 2026
7be09c7
test(ui): material.SingleActivator and no settle while a spinner runs
ZhuchkaTriplesix Oct 11, 2026
e76e9f5
Merge pull request #1419 from QueryaHub/issue/1365-empty-state-off-sh…
ZhuchkaTriplesix Oct 11, 2026
74b2e5f
fix(ui): kit buttons read the workbench with a default when there is …
ZhuchkaTriplesix Oct 11, 2026
0f2c6ee
fix(ui): kit buttons read the workbench with a default when there is …
ZhuchkaTriplesix Oct 11, 2026
5f52ee2
Merge dev into issue/1338-confirm-dialog-querya-button
ZhuchkaTriplesix Oct 11, 2026
94288a3
Merge pull request #1417 from QueryaHub/issue/1335-split-menu-dialog-…
ZhuchkaTriplesix Oct 11, 2026
5ca77a7
refactor(ui): update and welcome tour dialogs use QueryaButton
ZhuchkaTriplesix Oct 11, 2026
5af23e8
Merge pull request #1418 from QueryaHub/issue/1338-confirm-dialog-que…
ZhuchkaTriplesix Oct 11, 2026
6b7c754
Merge pull request #1420 from QueryaHub/issue/1338-updater-onboarding…
ZhuchkaTriplesix Oct 11, 2026
b615373
refactor(ui): connection forms and dialogs use QueryaButton
ZhuchkaTriplesix Oct 11, 2026
aff751b
test: Create Index in the dialog is a QueryaButton now
ZhuchkaTriplesix Oct 11, 2026
dbca112
Merge pull request #1421 from QueryaHub/issue/1338-forms-dialogs-quer…
ZhuchkaTriplesix Oct 11, 2026
c9a1bea
refactor(ui): Mongo and Redis panels use QueryaButton
ZhuchkaTriplesix Oct 11, 2026
4afe564
refactor(ui): tables, grid inspector, extensions and settings use Que…
ZhuchkaTriplesix Oct 11, 2026
7d90c8c
Merge pull request #1422 from QueryaHub/issue/1337-nosql-panels-query…
ZhuchkaTriplesix Oct 11, 2026
a6f3940
test: drop the shadcn import the readonly save test no longer needs
ZhuchkaTriplesix Oct 11, 2026
a9937bc
Merge pull request #1423 from QueryaHub/issue/1337-tables-extensions-…
ZhuchkaTriplesix Oct 11, 2026
e5cc1e1
refactor(ui): QueryaActionButton is a QueryaButton.secondary wrapper,…
ZhuchkaTriplesix Oct 11, 2026
3c204b0
Merge pull request #1424 from QueryaHub/issue/1337-action-button-menu
ZhuchkaTriplesix Oct 11, 2026
0f41ac6
refactor(ui): menus are QueryaMenuButton, Execute is a QueryaSplitButton
ZhuchkaTriplesix Oct 11, 2026
6368dd5
refactor(ui): drop action menu imports now exported by widgets.dart
ZhuchkaTriplesix Oct 11, 2026
df05034
Merge pull request #1425 from QueryaHub/issue/1335-action-menu-to-men…
ZhuchkaTriplesix Oct 11, 2026
2ea510f
perf(commands): eliminate redundant search calls and double setState …
ZhuchkaTriplesix Oct 11, 2026
46ca356
refactor(ui): the last shadcn buttons in lib become QueryaButton
ZhuchkaTriplesix Oct 11, 2026
f9602a9
perf(ui): eliminate speculative layout overhead from IntrinsicWidth i…
ZhuchkaTriplesix Oct 11, 2026
745b303
perf(ui): eliminate per-frame ImageFilter.blur sigma animation in sho…
ZhuchkaTriplesix Oct 11, 2026
0c80ed5
Merge pull request #1426 from QueryaHub/issue/1343-command-palette-ho…
ZhuchkaTriplesix Oct 11, 2026
92111ec
Merge pull request #1427 from QueryaHub/issue/1338-remaining-dialogs-…
ZhuchkaTriplesix Oct 11, 2026
009c5b0
Merge pull request #1428 from QueryaHub/issue/1342-querya-tab-strip-i…
ZhuchkaTriplesix Oct 11, 2026
2764ba5
Merge pull request #1429 from QueryaHub/issue/1341-dialog-backdrop-co…
ZhuchkaTriplesix Oct 11, 2026
bc13a1a
fix(connections): confirm before removing a connection and leave its …
ZhuchkaTriplesix Oct 11, 2026
4597d63
fix(workspace): the status bar does not keep 'Running query…' after a…
ZhuchkaTriplesix Oct 11, 2026
28a6f7d
fix(workspace): a long query error scrolls instead of overflowing the…
ZhuchkaTriplesix Oct 11, 2026
9fbb357
fix(ui): export and copy menu buttons have one chevron
ZhuchkaTriplesix Oct 11, 2026
cb4d0e1
fix(editor): prevent duplicate onChanged, cursor false positives, and…
ZhuchkaTriplesix Oct 11, 2026
adef5ea
Merge pull request #1446 from QueryaHub/issue/1430-code-editor-events…
ZhuchkaTriplesix Oct 11, 2026
d5eb30e
fix(editor): a filling code editor starts its text at the top
ZhuchkaTriplesix Oct 11, 2026
6f7062f
fix(connections): Remove connection is drawn as a destructive menu item
ZhuchkaTriplesix Oct 11, 2026
bb0c349
Merge pull request #1434 from QueryaHub/fix/remove-connection-confirm
ZhuchkaTriplesix Oct 11, 2026
e3bb5f0
Merge pull request #1435 from QueryaHub/fix/status-bar-after-query-error
ZhuchkaTriplesix Oct 11, 2026
1d2c06e
Merge pull request #1436 from QueryaHub/fix/results-error-overflow
ZhuchkaTriplesix Oct 11, 2026
a997a76
fix(grid): eliminate redundant debounce timer and duplicate validatio…
ZhuchkaTriplesix Oct 11, 2026
00d325c
Merge pull request #1449 from QueryaHub/issue/1431-datagrid-value-pan…
ZhuchkaTriplesix Oct 11, 2026
63731a1
Merge pull request #1447 from QueryaHub/fix/sql-editor-top-aligned
ZhuchkaTriplesix Oct 11, 2026
b2d74d4
fix(mongo): enable JSON syntax highlighting in MongoDocumentsJsonView…
ZhuchkaTriplesix Oct 11, 2026
3dbcce4
Merge pull request #1437 from QueryaHub/fix/export-menu-double-chevron
ZhuchkaTriplesix Oct 11, 2026
9d7db3d
Merge pull request #1450 from QueryaHub/issue/1432-mongo-json-view-bu…
ZhuchkaTriplesix Oct 11, 2026
f1c071e
Merge pull request #1448 from QueryaHub/fix/remove-connection-destruc…
ZhuchkaTriplesix Oct 11, 2026
35f09a8
test(core): skip live MySQL test on auth failure and update outdated …
ZhuchkaTriplesix Oct 11, 2026
aa9c7c2
Merge pull request #1451 from QueryaHub/issue/1433-test-stabilization…
ZhuchkaTriplesix Oct 11, 2026
60f4d07
fix(ui): align Preferences button labels, icons and Close variant
ZhuchkaTriplesix Oct 11, 2026
cc3fedb
Merge pull request #1452 from QueryaHub/issue/ui-review-preferences-b…
ZhuchkaTriplesix Oct 11, 2026
0731340
perf(editor): eliminate quadratic line counting and substring allocat…
ZhuchkaTriplesix Oct 11, 2026
77a8d60
Merge pull request #1453 from QueryaHub/issue/1350-sql-splitter-perf
ZhuchkaTriplesix Oct 11, 2026
f410668
refactor(ui): finish the control scale and button family leftovers
ZhuchkaTriplesix Oct 11, 2026
9dedcb4
fix(ui): QueryaTabStrip draws its focus ring only for keyboard focus
ZhuchkaTriplesix Oct 11, 2026
cfaaf1d
test(ui): drop the import left unused by the density test removal
ZhuchkaTriplesix Oct 11, 2026
284d51b
Merge pull request #1455 from QueryaHub/issue/1438-tab-strip-focus-ring
ZhuchkaTriplesix Oct 11, 2026
fc3fc2e
fix(ui): the dropdown menu is at least as wide as its trigger
ZhuchkaTriplesix Oct 11, 2026
fa157c9
fix(ui): rules use the workbench border colour through QueryaDivider
ZhuchkaTriplesix Oct 11, 2026
533e6fb
perf(editor): eliminate syntax highlight flicker on documents >= 8KB …
ZhuchkaTriplesix Oct 11, 2026
8c4440b
Merge pull request #1454 from QueryaHub/issue/1333-1335-kit-leftovers
ZhuchkaTriplesix Oct 11, 2026
a2dfe8c
Merge pull request #1458 from QueryaHub/issue/1351-highlight-flicker-…
ZhuchkaTriplesix Oct 11, 2026
5ed10fc
Merge pull request #1456 from QueryaHub/issue/1444-dropdown-menu-width
ZhuchkaTriplesix Oct 11, 2026
e5f800a
fix(ui): the new-connection wizard search is a QueryaSearchField
ZhuchkaTriplesix Oct 11, 2026
f73b7d8
fix(ui): dialogs whose only action is Close use a ghost Close in Quer…
ZhuchkaTriplesix Oct 11, 2026
79f1126
Merge pull request #1457 from QueryaHub/issue/1443-theme-dividers
ZhuchkaTriplesix Oct 11, 2026
7aedb79
fix(ui): toolbar rows set one control size through QueryaControlScope
ZhuchkaTriplesix Oct 11, 2026
43eb3f8
Merge pull request #1459 from QueryaHub/issue/1442-wizard-search-field
ZhuchkaTriplesix Oct 11, 2026
53cbd94
refactor(ui): name dialogs use QueryaDialogActions for their footer
ZhuchkaTriplesix Oct 11, 2026
934fc39
Merge pull request #1460 from QueryaHub/issue/1441-dialog-close-cance…
ZhuchkaTriplesix Oct 11, 2026
1bb3f1f
refactor(ui): connection forms use QueryaDialogActions for their footer
ZhuchkaTriplesix Oct 11, 2026
3eca520
Merge pull request #1461 from QueryaHub/issue/1439-toolbar-row-height
ZhuchkaTriplesix Oct 11, 2026
4503e32
Merge pull request #1462 from QueryaHub/issue/1441-dialog-footers
ZhuchkaTriplesix Oct 11, 2026
0b8304f
Merge pull request #1463 from QueryaHub/issue/1441-connection-form-fo…
ZhuchkaTriplesix Oct 11, 2026
0f75f95
perf(database): integrate CompactResultDataset into SQL drivers to el…
ZhuchkaTriplesix Oct 11, 2026
030091b
perf(editor): eliminate full-string comparisons and redundant listene…
ZhuchkaTriplesix Oct 11, 2026
3d7c724
refactor(ui): app toast on our own overlay, off shadcn (#1466)
ZhuchkaTriplesix Oct 11, 2026
886cb30
perf(grid): offload GridFilterEngine to background isolate and deboun…
ZhuchkaTriplesix Oct 11, 2026
edbb109
refactor(ui): text styles from QueryaTextStyles, shadcn TextExtension…
ZhuchkaTriplesix Oct 11, 2026
39b4bdc
fix(ui): SQL toolbar row states its control size, test one height (#1…
ZhuchkaTriplesix Oct 11, 2026
dc3d361
perf(grid): hoist secondary click (context menu) and tooltip handling…
ZhuchkaTriplesix Oct 11, 2026
642f63a
refactor(ui): QueryaIconButton is a thin wrapper over QueryaButton (#…
ZhuchkaTriplesix Oct 11, 2026
af392d2
fix(grid): restore ExcludeSemantics in _GridCell to preserve row sema…
ZhuchkaTriplesix Oct 11, 2026
72a86fb
docs(changelog): what has been merged to dev since the ER refactor (#…
ZhuchkaTriplesix Oct 11, 2026
dc4ab4f
refactor(erd): export flows move out of ErdView into ErdExporter (#1472)
ZhuchkaTriplesix Oct 11, 2026
5a27665
feat(packaging): add standalone Flathub manifest and bundle icon (#10…
ZhuchkaTriplesix Oct 11, 2026
f8e1827
refactor(ui): private and raw Material buttons leave lib, button guar…
ZhuchkaTriplesix Oct 11, 2026
88e16f1
fix(sql-workspace): Run on an empty editor says so, the status bar fo…
ZhuchkaTriplesix Oct 11, 2026
ea74feb
fix(ui): disabled primary chip, transaction badge, MCP sizes, ERD too…
ZhuchkaTriplesix Oct 11, 2026
d6fc53d
chore(release): prepare Querya Desktop 0.4.19
ZhuchkaTriplesix Oct 11, 2026
9af6ae6
Merge origin/main into release/0.4.19
ZhuchkaTriplesix Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM ghcr.io/cirruslabs/flutter:3.41.6

# Linux desktop toolchain + libs the app links against.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
clang cmake ninja-build pkg-config libgtk-3-dev libsecret-1-dev \
libsqlite3-dev libglu1-mesa xvfb git curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*

# Docker CLI so the dev stack (docker/docker-compose.yml) can be started from inside the container.
COPY --from=docker:27-cli /usr/local/bin/docker /usr/local/bin/docker
COPY --from=docker:27-cli /usr/local/libexec/docker/cli-plugins/docker-compose /usr/local/libexec/docker/cli-plugins/docker-compose

ENV DISPLAY=:99

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Магическое число и переменная

23 changes: 23 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "Querya Desktop",
"build": { "dockerfile": "Dockerfile" },
"features": {
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {}
},
"postCreateCommand": "flutter config --enable-linux-desktop && flutter pub get",
"postStartCommand": "docker compose -f docker/docker-compose.yml up -d || echo 'Docker stack not started (run it manually: cd docker && docker compose up -d)'",
"forwardPorts": [5432, 3306, 6379, 27017, 8123, 9000],
"portsAttributes": {
"5432": { "label": "PostgreSQL" },
"3306": { "label": "MySQL" },
"6379": { "label": "Redis" },
"27017": { "label": "MongoDB" },
"8123": { "label": "ClickHouse HTTP" }
},
"customizations": {
"vscode": {
"extensions": ["Dart-Code.dart-code", "Dart-Code.flutter"]
}
},
"hostRequirements": { "cpus": 4, "memory": "8gb" }
}
128 changes: 128 additions & 0 deletions .github/actions/test-extension/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Test Querya extension
description: >-
Downloads a released querya-ext-tester and checks a Querya database-driver
extension (manifest and JSON-RPC lifecycle) headlessly, with no Flutter
install. Publish a copy of this directory as QueryaHub/action-test-extension
to use it as `uses: QueryaHub/action-test-extension@v1`.

inputs:
querya-version:
description: Querya Desktop release to take the tester from (e.g. 0.4.18) or "latest".
required: false
default: latest
target-version:
description: Host version to emulate (--target-version). Defaults to querya-version.
required: false
default: ''
extension-dir:
description: Directory containing manifest.json and the driver entry point.
required: false
default: .
connect:
description: db.connect parameters as inline JSON or a path to a JSON file.
required: false
default: ''
query:
description: Statement for the db.query check.
required: false
default: SELECT 1
table:
description: Table name for the db.getTableSchema check (skipped when empty).
required: false
default: ''
sandbox:
description: Run the plugin inside the OS sandbox when available ("true" / "false").
required: false
default: 'false'
junit-path:
description: Where to write the JUnit XML report.
required: false
default: querya-ext-test-junit.xml
tap-path:
description: Where to write the TAP report (skipped when empty).
required: false
default: ''

outputs:
tester-version:
description: Querya Desktop release the tester binary came from.
value: ${{ steps.fetch.outputs.version }}

runs:
using: composite
steps:
- name: Download querya-ext-tester
id: fetch
shell: bash
env:
GH_TOKEN: ${{ github.token }}
REQUESTED: ${{ inputs.querya-version }}
REPO: QueryaHub/Querya-Desktop
run: |
set -euo pipefail
case "${RUNNER_OS}-${RUNNER_ARCH}" in
Linux-X64) TARGET=linux-x64; EXT=tar.gz ;;
macOS-ARM64) TARGET=macos-arm64; EXT=tar.gz ;;
macOS-X64) TARGET=macos-x64; EXT=tar.gz ;;
Windows-X64) TARGET=windows-x64; EXT=zip ;;
*) echo "::error::Unsupported runner ${RUNNER_OS}-${RUNNER_ARCH}"; exit 1 ;;
esac

if [ "$REQUESTED" = "latest" ]; then
TAG=$(gh api "repos/${REPO}/releases/latest" --jq .tag_name)
else
TAG="$REQUESTED"
fi
VERSION="${TAG#v}"
ASSET="querya-ext-tester-v${VERSION}-${TARGET}.${EXT}"

DEST="${RUNNER_TEMP}/querya-ext-tester"
rm -rf "$DEST" && mkdir -p "$DEST"
gh release download "$TAG" --repo "$REPO" --dir "$DEST" \
--pattern "$ASSET" --pattern SHA256SUMS.txt

cd "$DEST"
EXPECTED=$(grep " ${ASSET}\$" SHA256SUMS.txt | cut -d' ' -f1)
if [ -z "$EXPECTED" ]; then
echo "::error::${ASSET} is not listed in SHA256SUMS.txt of release ${TAG}"
exit 1
fi
if command -v sha256sum >/dev/null; then
ACTUAL=$(sha256sum "$ASSET" | cut -d' ' -f1)
else
ACTUAL=$(shasum -a 256 "$ASSET" | cut -d' ' -f1)
fi
if [ "$EXPECTED" != "$ACTUAL" ]; then
echo "::error::Checksum mismatch for ${ASSET}"
exit 1
fi

if [ "$EXT" = "zip" ]; then 7z x -y "$ASSET" >/dev/null; else tar -xzf "$ASSET"; fi
echo "dir=${DEST}" >> "$GITHUB_OUTPUT"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"

- name: Run querya-ext-tester
shell: bash
env:
TESTER_DIR: ${{ steps.fetch.outputs.dir }}
TARGET_VERSION: ${{ inputs.target-version != '' && inputs.target-version || steps.fetch.outputs.version }}
EXTENSION_DIR: ${{ inputs.extension-dir }}
CONNECT: ${{ inputs.connect }}
QUERY: ${{ inputs.query }}
TABLE: ${{ inputs.table }}
SANDBOX: ${{ inputs.sandbox }}
JUNIT_PATH: ${{ inputs.junit-path }}
TAP_PATH: ${{ inputs.tap-path }}
run: |
set -euo pipefail
EXE="${TESTER_DIR}/querya-ext-tester"
if [ "${RUNNER_OS}" = "Windows" ]; then EXE="${EXE}.exe"; fi

ARGS=("$EXTENSION_DIR" --target-version "$TARGET_VERSION" --query "$QUERY" --no-color)
if [ -n "$CONNECT" ]; then ARGS+=(--connect "$CONNECT"); fi
if [ -n "$TABLE" ]; then ARGS+=(--table "$TABLE"); fi
if [ "$SANDBOX" = "true" ]; then ARGS+=(--sandbox); fi
if [ -n "$JUNIT_PATH" ]; then ARGS+=(--junit "$JUNIT_PATH"); fi
if [ -n "$TAP_PATH" ]; then ARGS+=(--tap "$TAP_PATH"); fi

"$EXE" "${ARGS[@]}"
139 changes: 139 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
name: Benchmark

# Informational: compares frame timings of benchmark/grid_perf_bench.dart on the
# PR against its base branch, three interleaved runs per side, and comments when
# the Dart build time is slower in every pair (scripts/ci/bench_compare.py).
# Never blocks a merge.

on:
pull_request:
branches: [ dev, main ]
paths:
- 'lib/features/workspace/**'
- 'lib/core/database/**'
- 'lib/core/csv/**'
- 'lib/features/erd/**'
- 'lib/features/results/**'
- 'benchmark/**'
- 'scripts/ci/bench_compare.py'
- 'scripts/ci/app_bench_report.py'
- '.github/workflows/benchmark.yml'
workflow_dispatch:

permissions:
contents: read
pull-requests: write

concurrency:
group: benchmark-${{ github.ref }}
cancel-in-progress: true

jobs:
grid-bench:
name: Grid performance
# Forks get no write token and must never reach any self-hosted runner.
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 75
continue-on-error: true
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Linux dependencies
timeout-minutes: 8
run: |
sudo apt-get -o Acquire::Retries=3 update
sudo apt-get -o Acquire::Retries=3 install -y clang cmake ninja-build pkg-config libgtk-3-dev libsecret-1-dev libsqlite3-dev xvfb libgl1-mesa-dri

- uses: subosito/flutter-action@v2
with:
flutter-version: '3.47.1'
channel: 'stable'
cache: true

- name: Prepare the PR and the base checkouts
run: |
flutter pub get
if [ "${{ github.event_name }}" = "pull_request" ]; then
git worktree add "$RUNNER_TEMP/base" "origin/${{ github.base_ref }}"
# The base runs the PR's benchmark, so both sides measure the same thing.
rm -rf "$RUNNER_TEMP/base/benchmark"
cp -r benchmark "$RUNNER_TEMP/base/benchmark"
(cd "$RUNNER_TEMP/base" && flutter pub get)
fi

# Base and PR alternate (base, PR, base, PR, base, PR), so a slow
# stretch of the shared runner lands on both sides.
- name: Run the benchmark, 3 interleaved runs per side
timeout-minutes: 40
run: |
bench() {
(cd "$1" && xvfb-run -a -s '-screen 0 1920x1080x24' flutter run --profile -d linux \
-t benchmark/grid_perf_bench.dart --dart-define=MODE=scroll \
2>&1 | tee "$2") || true
}
for i in 1 2 3; do
if [ "${{ github.event_name }}" = "pull_request" ]; then
bench "$RUNNER_TEMP/base" "$RUNNER_TEMP/base$i.log"
fi
bench "$GITHUB_WORKSPACE" "$RUNNER_TEMP/head$i.log"
done

- name: Compare
id: compare
run: |
python3 scripts/ci/bench_compare.py \
--base "$RUNNER_TEMP"/base*.log --head "$RUNNER_TEMP"/head*.log \
> "$RUNNER_TEMP/report.txt"
cat "$RUNNER_TEMP/report.txt"
echo "regression=$(head -1 "$RUNNER_TEMP/report.txt" | cut -d= -f2)" >> "$GITHUB_OUTPUT"
tail -n +2 "$RUNNER_TEMP/report.txt" > "$RUNNER_TEMP/report.md"
cat "$RUNNER_TEMP/report.md" >> "$GITHUB_STEP_SUMMARY"

- name: Comment on regression
if: github.event_name == 'pull_request' && steps.compare.outputs.regression == '1'
env:
GH_TOKEN: ${{ github.token }}
run: gh pr comment "${{ github.event.pull_request.number }}" --body-file "$RUNNER_TEMP/report.md"

# #1173: ERD, charts / groupings and multi-tab SQL scenarios of the real app
# (benchmark/app_perf_bench.dart, Demo Playground, no database server),
# checked against per-scenario limits. Informational, like the grid bench.
app-bench:
name: App scenarios performance
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 30
continue-on-error: true
steps:
- uses: actions/checkout@v4

- name: Install Linux dependencies
timeout-minutes: 8
run: |
sudo apt-get -o Acquire::Retries=3 update
sudo apt-get -o Acquire::Retries=3 install -y clang cmake ninja-build pkg-config libgtk-3-dev libsecret-1-dev libsqlite3-dev xvfb libgl1-mesa-dri

- uses: subosito/flutter-action@v2
with:
flutter-version: '3.47.1'
channel: 'stable'
cache: true

- name: Run the app scenarios
timeout-minutes: 20
run: |
flutter pub get
xvfb-run -a -s '-screen 0 1920x1080x24' flutter run --profile -d linux \
-t benchmark/app_perf_bench.dart \
--dart-define=ONLY=charts_5000,groupings_5000,multi_tab_run,erd_open_200,erd_hover,erd_drag,erd_auto_layout \
--dart-define=STREAMS= \
2>&1 | tee "$RUNNER_TEMP/app.log" || true

- name: Report
run: |
python3 scripts/ci/app_bench_report.py "$RUNNER_TEMP/app.log" > "$RUNNER_TEMP/app_report.txt"
cat "$RUNNER_TEMP/app_report.txt"
tail -n +2 "$RUNNER_TEMP/app_report.txt" >> "$GITHUB_STEP_SUMMARY"
Loading
Loading