Skip to content

Latest commit

 

History

History
99 lines (78 loc) · 10 KB

release-checklist.md

File metadata and controls

99 lines (78 loc) · 10 KB

Pre-release checklist (release 0.4.19)

Use this before tagging 0.4.19 or running the Release workflow. See tags-and-releases.md, CHANGELOG.md. Manual 120 Hz DevTools QA: issue #739 (does not block this cut).

Product smoke (manual) — 0.4.19

  • Buttons and controls (#1331) — in the SQL toolbar, results bar, ERD toolbar and Preferences every control of a row has one height; hover, pressed, keyboard focus ring (Tab, not mouse click) and disabled states look the same on primary / secondary / ghost / destructive; icon buttons show a tooltip.
  • Dialog footers (#1441) — Cancel / Close is ghost, the main action is the only filled button; Esc cancels, Enter confirms (About, Driver manager, Preferences, a connection form, new folder).
  • Toast (#1466) — an export, a copy and an error show a toast that stacks, closes by itself and by its button; Motion Off shows it at once.
  • Light theme — rules in connection forms and dialogs are visible (not black); dropdown menus are not narrower than their field.
  • Run modes (#1148) — Ctrl+Enter runs the statement at the caret, F5 the script statement by statement; Run on an empty editor says Nothing to run; the status bar follows the active tab.
  • SQL toolbar (#1150) — one row at 1000 px and at 800 px; the transaction badge and Commit / Rollback only while a transaction is open.
  • ER diagram — open from a SQLite and a PostgreSQL connection; group, note, saved view; Export → SVG, PNG, PDF, DBML; the toolbar stays on one row at ~1000 px.
  • Connections — removing a connection asks first; Test connection of an edited connection uses the saved password; an SSH tunnel failure names the bastion.
  • PostgreSQL TLS — with a root CA set, the connection verifies the server (verify-full).
  • Startup recovery — with an unreadable local database the app opens the recovery screen instead of crashing.
  • MCP server — enable it, copy a client config, one list_tables call from a client; the activity log shows it.
  • Packaging — .deb / .rpm install, bubblewrap is recommended; the Flathub manifest in packaging/linux/flatpak/ is updated with the release zip's URL and sha256 after the tag (see below).

Product smoke (manual) — 0.4.18 (regression)

  • Sidebar toggle layout isolation (#984) — Ctrl+B toggles sidebar smoothly with zero LayoutBuilder rebuilds in workspace; build time < 0.5ms.
  • LazyOffstage (#1004) — inactive workspace layers stay offstage and skip redundant layouts.
  • Dirty edit guards (#867, #869, #870, #873) — Execute, navigation, and refresh never discard dirty grid or editor state silently.
  • SQL tab unsaved tracking (#910) — Unsaved SQL editor text triggers warning dialog on close.
  • Redis key rename & list bounds (#921, #922, #1009) — Key rename confirms overwrite; list edits do not overflow or lose binary data.
  • Result grid row cache bounds (#1010) — Heavy vertical scrolling stays within memory budget.
  • SQLite compound PK & zero-row headers (#1005, #914) — Multi-statement comments and compound PKs correctly detected.
  • Context menu edge repositioning (#1011) — Right-click menus at viewport edges do not overflow or crash.

Regression smoke (prior releases)

  • Fresh profile / empty state: create one connection per supported type (PostgreSQL, MySQL, Redis, MongoDB, SQLite).
  • Reopen the app: connections still appear; connect succeeds (secrets migrated or loaded from secure store).
  • Remove a connection: it disappears and reconnect is impossible without re-entering credentials.
  • Connection → New Database Connection from the menu saves and shows in the tree.
  • Driver Manager lists built-in drivers + installed sandboxed drivers (no misleading JDBC requirement).
  • Empty workspace hero — quick-start actions + recent connections; connect morphs into workspace without hard-cut jank.
  • Export — CSV / JSON / Markdown / SQL dump from ResultsTab on a small result set.
  • Extension table view — open a sandboxed driver table (or fixture); toolbar filter + export present.
  • Updater — Check for Updates / badge sees Latest Release channel correctly after tag.
  • Fluid shell — tab strip sliding pill; dialog/dropdown fade-slide; Motion Off snaps (see also perf-baseline.md Fluid §).

Custom themes (manual QA)

Use Preferences → Appearance unless noted. Fixtures for copy/import tests live under test/fixtures/themes/; bundled built-in sample: Querya Cyberpunk Neon in the theme picker.

  • Import valid custom dark — import test/fixtures/themes/querya_custom_dark.json (or copy to themes folder). Theme appears in picker; UI uses custom primary (#38BDF8).
  • Import valid custom light — import test/fixtures/themes/querya_custom_light.json. App switches to light brightness; readable text on cards and sidebar.
  • Import VS Code JSONC — import test/fixtures/themes/querya_custom_jsonc.jsonc or themes/samples/cyberpunk-neon.jsonc. Parser accepts comments/trailing commas; theme applies without crash.
  • Picker with many themes — install 50+ themes (copy fixtures with unique ids, or duplicate renamed files) → open theme picker: no overflow, list scrolls, search filters rows.
  • Restart persists selection — select a registry theme (not only Querya Dark/Light), quit and relaunch: same theme active, no error in Preferences.
  • Missing file fallback — with a registry theme selected, delete its file from {appSupport}/themes/, restart: app starts on Querya Dark, Preferences shows Selected theme failed to load. Using Querya Dark.; saved selection id remains until user picks another theme.
  • Title bar / window controls — switch Querya Dark, Querya Light, Cyberpunk Neon, and a custom theme: title bar background and minimize/maximize/close hover colors track the active theme.
  • SQL / JSON syntax — open SQL editor with a theme that defines tokenColors (e.g. cyberpunk sample): comments, keywords, and strings use distinct colors; changing theme updates highlighting after editor refresh.

Theme follow-ups 0.4.3 (manual QA)

  • File watcher (TP-F1) — copy a valid theme JSON into {appSupport}/themes/ via file manager (no Refresh themes): new theme appears in picker within a few seconds.
  • Marketplace metadata (TP-F2) — theme with author / tags in manifest shows subtitle in picker; search matches tag text.
  • Visual theme editor (TP-F3) — open Theme editor, change a workbench color, confirm live preview; Export writes valid querya.theme.v1 JSON; import exported file applies the same colors.
  • Remote install (TP-F4) — Install from URL… with a public HTTPS theme JSON (optional SHA-256): theme imports and appears in picker; http:// or localhost URL is rejected with a clear error.

Motion and High-Hz 0.4.4 (manual QA)

Verify the 0.4.4 motion tokens, smooth animations, and high refresh rate support:

  • Motion preferences — open Preferences → Appearance, verify Motion option appears.
  • Motion Full — set to Full, check that all animations run normally.
  • Motion Reduced — set to Reduced, check that animations are visibly faster (durations cut in half).
  • Motion Off — set to Off, check that animations complete instantly (0 ms).
  • OS Reduced Motion — enable reduced motion in OS settings. The app should automatically disable animations (acting as Off) regardless of in-app Full/Reduced settings (OS setting wins).
  • Hz diagnostics — start the app with --dart-define=QUERYA_REFRESH_OVERLAY=true. The overlay should display the monitor refresh rate (Linux: query-only — compositor decides Hz; see motion-and-high-refresh.md).
  • High refresh rate smoothness — verify dialog fade-slide, dropdown show, and tree expand/collapse look smooth at high-Hz (90/120/144 Hz) without jank.
  • Optional: full DevTools pass @ 120 Hz (#739).

Automated

  • flutter analyze — clean (on Linux, if the analyzer crashes with Too many open files, try ulimit -n 8192; see CONTRIBUTING.md).
  • flutter test — all green.
  • CI Flutter version in .github/workflows/*.yml matches the toolchain you validated (bump intentionally when upgrading stable).

Versioning and release

  • pubspec.yaml on the 0.4.19 track is 0.4.19+2 (the same as main after the bump that followed 0.4.18, so the merge has no version conflict).
  • After merge to main, confirm Auto Version Bump yields a 0.4.20+… placeholder.
  • Tag 0.4.19 is placed on the main merge commit that includes 0.4.19+2 (not the auto-bump commit).
  • Run the Release workflow via that tag (see tags-and-releases.md).
  • Verify portable zips (*-linux.zip, *-windows.zip, *-macos.zip), installable artifacts (*.AppImage, *.deb, *.rpm, *.flatpak, *-windows-setup.exe), and SHA256SUMS.txt on the GitHub Release.
  • After the release, set the release zip's URL and sha256 in packaging/linux/flatpak/com.queryahub.querya_desktop.flathub.yml (and the metainfo.xml release entry is already 0.4.19); the Flathub submission (flathub/flathub#10606) is separate and has open lint errors (HTTPS on queryahub.com or another app id, no --filesystem=home, a supported GNOME runtime).

Docs

  • CHANGELOG.md has a dated ## [0.4.19] section for the release (CI copies it into the GitHub Release body); scripts/extract-changelog-section.sh 0.4.19 finds it.
  • security.md still matches behavior if storage changed.
  • roadmap.md marks 0.4.19 as this cut and 0.5.0 as next.