From 1e3435ad89270fb9b00066b8838ec9a01beb2093 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 10 Jul 2026 09:41:00 +0000 Subject: [PATCH 1/7] Bump version to 0.4.10+2 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 6fc38a73..401c2d31 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: querya_desktop description: Lightweight desktop SQL/NoSQL client. Flutter (Dart). -version: 0.4.9+1 +version: 0.4.10+2 From 062027d6881aa36ffcc07fd9e3de555fc6c5a63c Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sat, 11 Jul 2026 16:06:10 +0300 Subject: [PATCH 2/7] chore(release): prepare 0.4.10 release Bump pubspec to 0.4.10+1 and document sandboxed drivers, SDUI, updater, and reliability fixes shipped since 0.4.9. --- CHANGELOG.md | 22 ++++++++++++++++++++++ docs/roadmap.md | 4 +--- pubspec.yaml | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index feadc289..161e8606 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.10] - 2026-07-11 + +Sandboxed extension runtime, SDUI, and first end-to-end external database drivers (Registration + Activation), plus in-app updates and connection reliability fixes. + +### Added + +- **Extension sandbox runtime (Block E, #300–#305)** — parse `sandbox` capabilities from manifests; launch plugins via `SandboxProcessRunner` (bwrap / sandbox-exec / Windows soft-start); Zero-Trust `system.injectCredentials` over Stdio; watchdog + auto-recovery; stderr sanitization, rotating logs, and security audit; Level-1 embedded runtime stubs and lifted preview gate for policy-compliant `process` drivers. +- **Plugin RPC bridge (Block C, #312)** — `PluginRpcBridge` over NDJSON JSON-RPC (`system.handshake` / `ping` / `shutdown`, `db.connect`). +- **SDUI builders (#314)** — `SduiFormBuilder` and `SduiTreeBuilder` render connection forms and schema trees from extension JSON schemas (`key` / `boolean` aliases supported). +- **Local extension install (#316)** — install `.zip` / `.qext` packages from Preferences and Extension Manager with the same SandboxPolicy checks as the Marketplace. +- **Driver Registration + Activation (#318 / #319)** — parse `contributions.drivers` / `capabilities`; list installed drivers in New Connection and Driver Manager; SDUI connection form; `ExtensionDriverSession` for connect + schema tree; SQL workspace / table view for sandboxed drivers; Docker ClickHouse service for local testing. +- **In-app updates (#280–#282)** — updater service, Check for Updates UI / badge / startup settings, and platform installer helpers. +- **SSL certificate pickers for MySQL, MongoDB, and Redis (#278)** — optional client certificate paths on those connection forms. +- **SQLite in Driver Manager (#270)** — built-in SQLite listed alongside other Dart drivers. + +### Fixed + +- **Secrets / shutdown / reliability** — atomic LocalDb + secure-store updates (#276); disconnect SQLite on app shutdown (#271); log remaining silent catches in database drivers (#272); harden MySQL custom SELECT validation (#274); stream large CSV exports on an isolate (#277). +- **UI / menus** — disabled Run (F5) when no SQL-capable connection (#266); coming-soon placeholders for unfinished workspace tabs (#267); global File → New/Open/Save SQL for active SQL editors (#268). +- **Marketplace** — database drivers without a valid process sandbox stay preview-only listings (#269). +- **Sandbox launch** — mark driver binaries executable after zip install; fall back when bubblewrap user namespaces are unavailable. + ## [0.4.9] - 2026-07-10 PostgreSQL connection reliability and TLS improvements, plus menu and URI import polish. diff --git a/docs/roadmap.md b/docs/roadmap.md index 6ae907fe..419d5fff 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -12,9 +12,7 @@ Living document for planned work. Not a commitment order; adjust as priorities c - **Shipped in 0.4.4:** UI motion polish + high refresh rate (90/120/144 Hz), memory and security fixes — [planned-0.4.4.md](planned-0.4.4.md), [motion-and-high-refresh.md](motion-and-high-refresh.md), epic [#170](https://github.com/QueryaHub/Querya-Desktop/issues/170), milestone [0.4.4](https://github.com/QueryaHub/Querya-Desktop/milestone/3). - **Shipped in 0.4.6:** SQLite Database Connector — [planned-0.4.6.md](planned-0.4.6.md), milestone [0.4.6](https://github.com/QueryaHub/Querya-Desktop/milestones). - **Planned 0.4.7:** Local Extension Discovery — `ExtensionManifest`, сканирование локальных папок и миграция тем на формат расширений ([planned-0.4.7.md](planned-0.4.7.md)). -- **Planned 0.4.8:** Extension Manager UI — Вкладка или боковая панель для просмотра и включения/выключения локальных расширений. -- **Planned 0.4.9:** RPC Protocol Bridge — Транспортный слой (`json_rpc_2` + `Process.start`) для будущих плагинов баз данных. -- **Planned 0.4.10:** Server-Driven UI (SDUI) — Динамические компоненты (формы, деревья), рендерящиеся из JSON-схем, присылаемых расширениями. +- **Shipped in 0.4.10:** Sandboxed extension runtime (Block E), Plugin RPC bridge (Block C), SDUI form/tree builders, local `.zip`/`.qext` install, and Registration/Activation for external database drivers (e.g. ClickHouse) — see [CHANGELOG.md](../CHANGELOG.md). - **Planned 0.5.0:** Marketplace Launch — Запуск Маркетплейса (клиентская часть). Скачивание, валидация `sha256` и установка тем из сети. База под другие расширения (ДБ драйверы) полностью готова! - **Optional:** Preferences → **Animate theme changes** (off by default). - **Later:** P2 Mongo/Redis token colors; `re_editor` if perf gap; LSP epic per diff --git a/pubspec.yaml b/pubspec.yaml index b5d795c7..0c0da2b1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: querya_desktop description: Lightweight desktop SQL/NoSQL client. Flutter (Dart). -version: 0.4.9+1 +version: 0.4.10+1 From 64338b102688c6178d5b7d6121d3f7ed245942bd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 11 Jul 2026 13:12:57 +0000 Subject: [PATCH 3/7] Bump version to 0.4.11+3 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 3be14897..58fb0025 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: querya_desktop description: Lightweight desktop SQL/NoSQL client. Flutter (Dart). -version: 0.4.10+2 +version: 0.4.11+3 From 719745c51c85f80be28dc317cee17a54f0d7627c Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sat, 11 Jul 2026 16:18:11 +0300 Subject: [PATCH 4/7] ci(release): avoid secrets context in step if condition GitHub rejects workflow parse when secrets are referenced in if:, which blocked all Release runs (including tag 0.4.10). Gate signing inside the step script instead. --- .github/workflows/release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ff80357d..57e05ec2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -157,7 +157,6 @@ jobs: run: flutter build macos --release - name: Sign and notarize macOS app - if: ${{ secrets.MACOS_SIGN_IDENTITY != '' && secrets.MACOS_NOTARY_KEY != '' }} env: MACOS_CERTIFICATE_P12: ${{ secrets.MACOS_CERTIFICATE_P12 }} MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} @@ -168,6 +167,10 @@ jobs: MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} run: | set -euo pipefail + if [ -z "${MACOS_SIGN_IDENTITY:-}" ] || [ -z "${MACOS_NOTARY_KEY:-}" ]; then + echo "Skipping macOS signing/notarization — secrets not configured." + exit 0 + fi APP="build/macos/Build/Products/Release/querya_desktop.app" test -d "$APP" From db042f67580a7bbda39fbdc1a9f43fe939e3c2cd Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 12 Jul 2026 21:50:38 +0000 Subject: [PATCH 5/7] Bump version to 0.4.12+4 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 58fb0025..7148b5ec 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: querya_desktop description: Lightweight desktop SQL/NoSQL client. Flutter (Dart). -version: 0.4.11+3 +version: 0.4.12+4 From f99876bcbb16325ac2ed1e9ca6870077b1b72dc3 Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sun, 26 Jul 2026 23:39:46 +0300 Subject: [PATCH 6/7] chore(release): merge main into dev and prepare 0.4.11 changelog Sync release/CI commits from main, restore [0.4.10] notes, draft [0.4.11] from post-0.4.10 dev work, and set pubspec to 0.4.11+1. Closes #346 Co-authored-by: Cursor --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ pubspec.yaml | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 161e8606..f5bf26fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.11] - Unreleased + +Universal UI standard for drivers/extensions, shell UX hardening, Fluid QueryaMotion morphing, virtual grid/pool reliability, and performance follow-ups. Candidate release from `dev` after syncing `main` (#346). + +### Added + +- **SDUI / extension RPC expand (#323)** — `getCapabilities`, `getServerStats`, `getObjectMetadata`, and `cancelQuery` on the plugin bridge for richer driver UIs. +- **ExtensionTableView (#324)** — table toolbar, custom SQL filter, and async row-count for sandboxed drivers. +- **Universal data export (#326)** — CSV, JSON, Markdown, and SQL dump from ResultsTab / table toolbars. +- **MySQL / SQLite UI parity (#325)** — align workspace chrome and flows with the Obsidian UI standard. +- **Shell UX (#339)** — semantic palette, shared toast, keyboard-operable tab strip, empty-workspace hero + recent connections, resizable connections sidebar, shared dialogs/widgets. +- **Fluid QueryaMotion (#342)** — spring primitives, workspace empty↔connected morph, sliding tab indicator, hero/recent stagger, ResultsTab mode morph, dialog/dropdown fade-slide, theme morph gated by motion level, split drag-end settle + motion guardrails. +- **Perf follow-ups (#356 / #357–#366)** — isolate tab-strip rebuilds; SwitchingBody/CrossFade `RepaintBoundary` + `TickerMode`; static dialog blur; vertical-split paint isolation; ticker-gated stats polling; badge pulse lifecycle; ResultsTab morph paint scope; document theme morph cost, stagger/badge duration constants, and Linux query-only refresh_rate. + +### Fixed + +- **Virtual result grid (#331)** — synchronize column width recalculation in `VirtualResultGrid`. +- **Connection pools (#332)** — eviction and exception wrapping in SQLite and MySQL pools. +- **Query timeout (#333)** — force-close connection on `TimeoutException`. +- **Large result mapping (#334)** — optimize SQL result set mapping and DDL rendering; RPC parse on compute isolate where applicable. +- **Sidebar width persist (#354)** — keyboard/semantics resize + dispose flush; dropdown exit delay for fade-slide. + +### Changed + +- **CI / release hygiene** — merge `main` into `dev` (includes release workflow secrets-if fix #321); pubspec set to **0.4.11+1** (not the misleading 0.4.12 CI bumps from `main`). + ## [0.4.10] - 2026-07-11 Sandboxed extension runtime, SDUI, and first end-to-end external database drivers (Registration + Activation), plus in-app updates and connection reliability fixes. diff --git a/pubspec.yaml b/pubspec.yaml index 7148b5ec..7302f13c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: querya_desktop description: Lightweight desktop SQL/NoSQL client. Flutter (Dart). -version: 0.4.12+4 +version: 0.4.11+1 From 8ed03541b1cd843a98fe9212948d0e262d171f68 Mon Sep 17 00:00:00 2001 From: ZhuchkaTriplesix Date: Sun, 26 Jul 2026 23:42:35 +0300 Subject: [PATCH 7/7] fix(ui): drop unused foundation import in update badge Co-authored-by: Cursor --- lib/features/updater/update_available_badge.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/features/updater/update_available_badge.dart b/lib/features/updater/update_available_badge.dart index d9a4e900..72384c19 100644 --- a/lib/features/updater/update_available_badge.dart +++ b/lib/features/updater/update_available_badge.dart @@ -1,6 +1,5 @@ import 'dart:async' show unawaited; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' as material; import 'package:querya_desktop/core/motion/querya_motion.dart'; import 'package:querya_desktop/core/motion/querya_motion_context.dart';