Skip to content

0.7.0 release gate (2026-10-27)

What was run on main a161d4b (the PR #116 merge; TASK-32’s dependencies all landed by ee7ab78, the re-scope by 2427e37) on Linux x86-64 with QGIS 4.2.3 (Qt 6.11.2), CPython 3.14.8 in the locked Pixi environment and CPython 3.11.2 for the clean installs, Bun 1.4.2. Every line is a command that ran here; nothing is inferred from CI except where a run id is given. The tree is unstamped: manifests still say 0.6.0 / 0.4.0 / 0.1.0, so artifact names below carry 0.6.0. Stamping, tagging and publishing wait for an explicit “Release 0.7.0”.

  • Required work. TASK-68, 69, 96, 70, 108, 109, 110 and 43 are Done (PRs #101–#114, each green on checks, macOS and Windows); TASK-73 and TASK-77 left the milestone unopened (PR #115, re-scope above). On a161d4b the main runs CI 40568427871, docs 40568427854 and autorelease 40568427794 are green. Open targets stay blockers, not promises: the Windows and macOS QGIS rows and the display-server Desktop GUI row are TASK-33, now in m-11 with TASK-99.
  • Scope. release.py plan --trigger push from python-v0.6.0 / ts-v0.4.0 reads the sixteen merges since 0.6.0 as 0.6.1 / 0.4.1 and skips the ui train, as the alignment rule says it must; --bump minor plans python-v0.7.0 and ts-v0.5.0. The minor is a decision, not a planner result: the UI toolkit (sixteen feat commits on the Python side, among them the removal of the NativeForms spelling the 0.7.0 migration notes document), the bridge’s store core with the ./vue and ./svelte adapters and algorithms.run, and the first @archont561/qgis-sdk-ui 0.1.0 whose peer range names the bridge minor it was qualified with. The transport protocol and the host schema version stay at 1; HOST_FINGERPRINT moved since 0.6.0 (sha256:f96bdf10… → sha256:16790dc8…, the FileRef kind and the four Processing operations - additions), so a 0.4.0 page keeps working against a 0.7 host. (Corrected 2026-10-27 after the release: the first version of this line called the fingerprint unchanged.)
  • Static gate. lint-python clean, format-python-check 338 files, lint-github-actions clean, biome-check 177 files, typecheck (bridge and components) clean, test-release-tool / tests/scripts 262 passed.
  • Suites. Root bun run test 10/10 tasks: config 6, docs 34, bridge 310 (16 files, every adapter’s project), alias 12, components 100 (14 files, --conditions=browser), ui alias 13, Python 1989 passed / 48 skipped inside turbo and 1964 passed / 48 skipped as the standalone pytest tests -q -x from packages/qgis-sdk-python. Storybook storybook:build completed (storybook-static, 16 entries).
  • Harnesses, one file per process. QGIS_SDK_SCAFFOLD_WEB=1 test_scaffold_web_native.py 8 passed (generated vanilla, React, Vue and Svelte pages installed, tested and built against the workspace bridge and components, then driven in a real QWebEngineView); QGIS_SDK_REFERENCE=1 test_reference_example_native.py 5 passed; QGIS_SDK_BUILD_INSTALL=1 test_bundle_native.py 1 passed; test_desktop_host_native.py 4 passed; QGIS_SDK_SCAFFOLD_DESKTOP=1 tests/scripts/test_qualification_scaffold.py 10 passed; the reference example test-reference-example 20 pure + 7 QGIS passed.
  • Artifacts. bun run build built the bridge (7 entries, each reaching its own framework only), the alias, the components and the example page, and build-python three wheels, all twine PASSED (verify-python): qgis_sdk-0.6.0-py3-none-any.whl (69976a57…), qgis_sdk_runtime-0.6.0-py3-none-any.whl (1201c063…, 106 modules, MIT LICENSE in dist-info/licenses), qgis_sdk_tools-0.6.0-py3-none-any.whl (d41e3903…). build:conda fails here because conda-forge is unreachable from the sandbox; the python-v0.7.0-rc.2 run above built the three Conda outputs from this tree’s recipe, so that step is attested by the run.
  • Clean install. A fresh CPython 3.11.2 venv with only the three wheels: pip check clean (typer 0.27.3 the one third-party dependency); qgis-sdk new fresh_plugin --ui native --web vanilla writes qgis-sdk-runtime>=0.6,<0.7, qgis-sdk-tools>=0.6,<0.7, "@archont561/qgis-sdk": "0.4.0" and "@archont561/qgis-sdk-ui": "0.1.0" (the committed scaffold pins the stamp moves); check on it is clean (4 files); targets prints the four-row support matrix.
  • A 0.6 project under the 0.7 tools (AC 3). A second venv with pip install qgis-sdk==0.6.0 from PyPI scaffolded old_plugin (qgis-sdk-runtime>=0.6,<0.7, bridge pin 0.4.0); its own check is clean. The tools at HEAD on that project: clean on the unstamped tree (the runtime is still 0.6.0), and on a tree stamped 0.7.0 locally (then reverted) check reports exactly the two version findings and nothing else - VERSION001 (the pin is outside the runtime range this tools release supports, >=0.7.0,<0.8) and VERSION004 (declares >=0.6,<0.7 but the importable runtime is 0.7.0), each with its remediation - rather than crashing. The remaining 0.6 → 0.7 renames are documented in the doc-12 0.7.0 notes and are not something check detects (no rule reads plugin source for removed names).
  • Verify. verify-versions agrees on 0.6.0 for the nine Python entries, 0.4.0 for the four bridge entries and 0.1.0 for the ui manifests, contract version 1 across both languages. The ui scope’s peer range >=0.4.0 <0.5.0 holds the bridge at HEAD today and will refuse it once the bridge is stamped 0.5.0: the stamp pull request moves it to >=0.5.0 <0.6.0 (the rehearsal finding above).
  • Licences. MIT LICENSE in each wheel’s dist-info/licenses and in the two npm tarballs the rehearsals packed; DEP001 still refuses third-party code inside a plugin.
  • Migration notes. doc-12 carries 0.7.0 migration notes (in progress) and doc-13 Next minor (unreleased) migration notes, published with the Draft badge; the stamp pull request drops the qualifiers so the site publishes them as 0.7.0 / 0.5.0 notes together with the manifests.
  • Not run here. The Conda build (above); pixi run -e bun bun run coverage (the 90 % gates run in CI on every pull request and were green on #116).
  • Approval. Not given by this record. The real triple is three tags on the stamp pull request’s merge commit - python-v0.7.0, ts-v0.5.0, ui-v0.1.0 - and the first clean ui-v0.1.0 is the first real publish of @archont561/qgis-sdk-ui and qgis-sdk-ui (deprecate the 0.0.0 placeholders after it, owner-side).
  • Stamp and artifacts (2026-10-27, the stamp pull request). On the gate record’s merge a7d8d5a: release.py stamp --scope python --version 0.7.0 moved the kit, runtime and tools manifests, the kit’s exact pins, the tools’ runtime range (>=0.7.0,<0.8), the recipe’s three versions and the example’s windows (>=0.7,<0.8); stamp --scope typescript --version 0.5.0 moved package.json, the alias (and its pin on the scoped package) and the scaffold pin SDK_NPM_VERSION. By hand, as announced above: the components’ and their alias’s peer range on @archont561/qgis-sdk to >=0.5.0 <0.6.0, the doc-12 heading to 0.7.0 migration notes and the doc-13 heading to 0.5.0 migration notes (the site now publishes python-migration/v0-7 and typescript-migration/v0-5 without the Draft badge), the READMEs’ and the two guides’ status lines, and one test literal (test_scaffold_web.py, 0.4.0 → 0.5.0). verify-versions agrees on 0.7.0 for the nine Python entries, 0.5.0 for the four bridge entries, 0.1.0 for the four ui entries with the peer range holding the bridge, contract version 1 in both languages. On the stamped tree: the static gate clean, root bun run test 10/10 (bridge 310, components 100, Python 1989 passed / 48 skipped), tests/scripts 262, harnesses scaffold web 8, reference 5, bundle 1, scaffold desktop 10, reference example 20 + 7, docs-build 71 pages and 6470 links clean. build-python + verify-python (twine) pass on qgis_sdk-0.7.0-py3-none-any.whl (262a32c4…, pins qgis-sdk-runtime==0.7.0 and qgis-sdk-tools==0.7.0), qgis_sdk_runtime-0.7.0-py3-none-any.whl (fe409110…, 106 modules, no dependency, MIT LICENSE in dist-info/licenses) and qgis_sdk_tools-0.7.0-py3-none-any.whl (862f1118…, qgis-sdk-runtime>=0.7.0,<0.8 and typer==0.27.3). A fresh CPython 3.11.2 venv with only the three wheels: pip check clean; qgis-sdk new --ui native --web vanilla writes qgis-sdk-runtime>=0.7,<0.8, qgis-sdk-tools>=0.7,<0.8, "@archont561/qgis-sdk": "0.5.0" and "@archont561/qgis-sdk-ui": "0.1.0", and check is clean; the same installed tools on a project scaffolded by qgis-sdk==0.6.0 from PyPI report VERSION001 and VERSION004 with their remediations and nothing else. The three tags follow on this pull request’s merge commit, each only on explicit authorization.
  • Released afterwards. PR #118 merged as e9b2ce8; the annotated tags python-v0.7.0, ts-v0.5.0 and ui-v0.1.0 (release notes in the annotations) on that one commit ran release.yml three times: 40577281463 (build, conda, pypi, github-release succeeded; the npm jobs skipped), 40577281275 (build, npm, github-packages, github-release succeeded; the Python jobs skipped) and 40577280907 (build, ui, github-release succeeded; everything else skipped). PyPI serves qgis-sdk 0.7.0 (262a32c4…), qgis-sdk-runtime 0.7.0 (fe409110…) and qgis-sdk-tools 0.7.0 (862f1118…) - the same hashes as the wheels built here on the stamped tree, so the build is reproducible. npm serves @archont561/qgis-sdk@0.5.0 and the alias qgis-sdk@0.5.0 as latest, and - the first real publish of both names - @archont561/qgis-sdk-ui@0.1.0 and qgis-sdk-ui@0.1.0 as latest next to the 0.0.0 placeholders. The GitHub Releases carry three wheels, qgis-sdk-0.7.0-pyh245bdaf_0.conda, qgis-sdk-runtime-0.7.0-pyh4616a5c_0.conda, qgis-sdk-tools-0.7.0-pyh4616a5c_0.conda and SHA256SUMS (Python), the two tarballs and SHA256SUMS (bridge), the two tarballs and SHA256SUMS (ui). prefix.dev uploads succeeded per the job log; that channel and the release-asset CDN are not reachable from the sandbox, so they are attested by the runs only. Still open for the owner: deprecate the 0.0.0 placeholders of @archont561/qgis-sdk-ui and qgis-sdk-ui on npm (and the 0.0.0 / 0.0.0-stage ones that remain from earlier releases).