Repository navigation
Releases: Archont561/qgis-sdk
Release list
python-v0.9.0
qgis-sdk 0.9.0
Python kit train 0.9.0: the one plugin class on three hosts - QGIS Desktop,
QGIS Server and standalone PyQGIS apps - and worker-first registered jobs.
A Python-only minor: @archont561/qgis-sdk stays at 0.6.0 and the
plugin-description contract version stays 1.
Released on the stamp pull request's merge commit after the python-v0.9.0-rc.1
rehearsal was green.
python-v0.9.0-rc.1
qgis-sdk 0.9.0-rc.1 (rehearsal)
Rehearsal of the Python kit train for 0.9.0 - hosts (QGIS Server plugins,
standalone PyQGIS apps) and worker-first named jobs - on the stamp pull
request's merge commit. Publishes a GitHub prerelease; PyPI and Conda are
dry-run by the workflow for a prerelease tag.
ts-v0.6.0
@archont561/qgis-sdk 0.6.0
The bridge minor that ships with Python 0.8.0. The package's sources moved
while the wire did not:
- The bridge and store modules split into src/bridge/ and src/stores/ behind
the same ./bridge, ./react, ./vue and ./svelte exports. - QgisSdkBridgeSequenceError and QgisSdkBridgeStreamEndedError are gone:
nothing constructed them, because a missed frame is the stream terminal's
{kind: gap} and an end is its terminal frame. Switch on the terminal's kind. - Introspection is unified across the languages and the Pydantic
contract-types generation leg is retired.
HOST_FINGERPRINT (sha256:16790dc8...), HOST_SCHEMA_VERSION 1 and
BRIDGE_PROTOCOL_VERSION 1 are unchanged from 0.5.0. The web components
(@archont561/qgis-sdk-ui 0.1.0) are not re-released; their peer range now
reads >=0.6.0 <0.7.0.
Rehearsed as ts-v0.6.0-rc.1 (run 40972199246).
python-v0.8.0
qgis-sdk 0.8.0
Runtime, tools and the kit at 0.8.0. Since 0.7.0 (63 commits):
- The explicitly hosted, authenticated loopback plugin HTTP API: allowlisted
plugin actions and SSE streams for clients outside QGIS, with the tools-side
PluginClient and the qgis-sdk plugin describe|call|stream commands. - qgis-sdk mcp on the official MCP package, behind the new [mcp] extra:
developer commands only, developer mode by default, the read-only list
derived from it. This is the first release whose extra resolves on install. - UI snapshots: a structured tree plus a screenshot of the plugin's own
surfaces (dev.ui.*, the ui_snapshot fixture, qgis-sdk ui snapshot). - qgis_sdk.console with ConsoleSession and PluginHandle: the QGIS Python
console reaches the curated services and running plugins. - Declared externals with a startup probe, pure-Python vendoring in build,
DEP003/DEP004 and the check import buckets. - Processing output safety: one local vector destination, or an SDK-owned one.
- Plugin authoring is an instantiated application (module:app); the public
class API is gone and the class lowering stays private.
The tools' tested runtime range is >=0.8.0,<0.9; the runtime still declares
no dependencies. Paired with the bridge at 0.6.0: the wire is unchanged
(HOST_FINGERPRINT sha256:16790dc8..., HOST_SCHEMA_VERSION 1,
BRIDGE_PROTOCOL_VERSION 1), so a 0.5 host needs no migration.
Gate and evidence: doc-14 '0.8.0 release gate (2026-10-29)', 'Stamp and
artifacts' and '0.8.0 rehearsal (2026-10-29)'. Rehearsed as
python-v0.8.0-rc.1 (run 40972199140).
ts-v0.6.0-rc.1
@archont561/qgis-sdk 0.6.0-rc.1 (rehearsal)
Prerelease rehearsal of the bridge minor, on the stamp pull request's merge
commit. NOT a stable release: npm and GitHub Packages publish steps are
skipped by the workflow for a prerelease.
The package's sources moved under the 0.8.0 train while the wire did not:
the bridge and store modules split into src/bridge/{client,errors,frames,
protocol}.ts and src/stores/{base,form,host-query,operation,stream}.ts, two
bridge errors nothing throws are gone, and introspection is unified.
HOST_FINGERPRINT (sha256:16790dc8...), HOST_SCHEMA_VERSION 1 and
BRIDGE_PROTOCOL_VERSION 1 are unchanged from 0.5.0, so a 0.5 host needs no
migration. The components' peer range is >=0.6.0 <0.7.0.
python-v0.8.0-rc.1
qgis-sdk 0.8.0-rc.1 (rehearsal)
Prerelease rehearsal of the 0.8.0 train, on the stamp pull request's merge
commit. NOT a stable release: PyPI and conda publish steps are skipped by
the workflow for a prerelease, and nothing here is a 1.0.0 promise.
Contents since 0.7.0 (63 commits): the explicitly hosted loopback plugin
HTTP API for allowlisted actions and SSE streams with the tools-side
client and CLI; qgis-sdk mcp on the official MCP package behind the new
[mcp] extra, developer commands only; UI snapshots (dev.ui.*, ui_snapshot);
the qgis_sdk.console ConsoleSession and PluginHandle; declared externals
with a startup probe and pure-Python vendoring; processing destination
safety. Runtime, tools and the kit all move to 0.8.0 and the tools'
runtime range becomes >=0.8.0,<0.9. The runtime still declares no
dependencies.
Gate: doc-14 '0.8.0 release gate (2026-10-29)' and 'Stamp and artifacts'.
ui-v0.1.0
@archont561/qgis-sdk-ui 0.1.0
The first release of the web components: Lit light-DOM elements over the
bridge's store core, styled through UnoCSS preset-mini with the qs-
prefix and addressable through data-part hooks, with ./react, ./vue
and ./svelte wrappers behind optional peers and ./define for plain
custom-element registration (decision-47). The unscoped alias qgis-sdk-ui
follows at 0.1.0; both replace the 0.0.0 name reservations on npm.
Peer range: @archont561/qgis-sdk >=0.5.0 <0.6.0 - the bridge released on
this same commit (ts-v0.5.0), next to qgis-sdk 0.7.0 (python-v0.7.0).
qgis-sdk new --web from tools 0.7.0 opts a page into this package.
Features
- inputs mirroring the Python catalogue (
<qgis-layer-picker>,
<qgis-field-picker>,<qgis-crs-picker>,<qgis-file-input>,
<qgis-directory-input>,<qgis-distance>,<qgis-number>,
<qgis-text>,<qgis-toggle>,<qgis-choice>,<qgis-colour>), the
form,<qgis-run-button>,<qgis-job-progress>,<qgis-log-view>,
<qgis-result-table>and the Python keyword spellings as attributes
(6528e69, 25551d1) - the Storybook, whose stories double as the test fixtures (496b94c)
- the
uirelease train: pack check, alias smoke install and the
bridge peer-range check inrelease.py verify-versions(c79dc80,
f83fac0)
Qualified in the scaffold-web harness inside a real QWebEngineView (QGIS
4.2.3 / Qt 6.11.2 / Chromium 140) for the vanilla, React, Vue and Svelte
pages; Bun 1.4.2; three rehearsals (ui-v0.1.0-rc.1 to rc.3) in doc-14.
Experimental: nothing is promised stable before 1.0.0.
ts-v0.5.0
@archont561/qgis-sdk 0.5.0
Released as a triple with qgis-sdk 0.7.0 (python-v0.7.0) and the first
@archont561/qgis-sdk-ui 0.1.0 (ui-v0.1.0), both on this same commit; the
unscoped alias qgis-sdk follows at 0.5.0. The transport protocol (1) and
the host schema version (1) are unchanged; HOST_FINGERPRINT moved
(f96bdf10… to 16790dc8…) because the host gained operations - a 0.4.0
page keeps working against a 0.7.0 host, and a regenerated
bridge.schema.ts is needed only where a declaration uses a parameter
kind.
Breaking changes
- a declared input marked on the Python side carries
x-qgis-sdkin its
request schema;validateAgainstSchemareads past that one keyword and
a regeneratedbridge.schema.tsmoves itsCONTRACT_FINGERPRINT
(decision-46, 34766b0) FileRef.kindis"file" | "directory"(34766b0)
Features
- the framework-free store core in the root (
formStore,jobStore,
hostQueryStore,layersQuery) with./reactrewritten over it
(useStore,useForm,useHostQuery) and the new./vueand
./svelteadapters behind optional peers (decision-47, a2c653f) - Processing from a page:
algorithms.providers/list/describe/run, the
grantsalgorithms.read/algorithms.run,runAlgorithm,
outputsByNameand the typed shapes in./host;qgis-sdk processing generatewritesprocessing.schema.ts(decision-64, 387caa1) - the scaffold's pages render a form from the declaration and a layer
picker overlayers.list(25551d1)
Qualified inside a real QWebEngineView (QGIS 4.2.3 / Qt 6.11.2 / Chromium
140) against qgis-sdk 0.7.0; Bun 1.4.2; contract version 1 on both sides.
python-v0.7.0
qgis-sdk 0.7.0
The UI toolkit minor: parameter kinds, the curated input components, forms
as plain classes, standard Desktop surfaces with wiring and feedback, and
any registered Processing algorithm from Python or a page. Released as a
triple with @archont561/qgis-sdk 0.5.0 (ts-v0.5.0) and the first
@archont561/qgis-sdk-ui 0.1.0 (ui-v0.1.0), both on this same commit.
Breaking changes on the 0.x line; the doc-12 0.7.0 migration notes name
every removed or renamed symbol.
Breaking changes
qgis_sdk.adapters.qgis.uiis gone:NativeFormsand
DeclaredFormDialogare replaced byForm.for_action(ctx, id)inside a
Dialog/Dock,ButtonandColumn(403df68)- a
Literal[...]of strings is theenumkind for algorithms (it was
refused in 0.6); declared inputs with a marker carryx-qgis-sdkin
their schema, so a generatedbridge.schema.tsmust be regenerated
(decision-46, 34766b0) FileRefmoved toqgis_sdk.modelsand gainedkind = "directory";
the host contract'sHOST_FINGERPRINTmoved (schema and protocol
versions stay at 1)
Features
- six parameter kinds join
LayerInput/CrsInput/Metres:FileInput,
DirectoryInput,FieldInput,Range,ColourandLiteralchoices
(decision-46, 34766b0) - the input catalogue: eleven components,
Component,Option,
coerce_value;ctx.filesandUiContext.files/layers/project
(581dcdb) Form,Button,Column;Formaccepts declared inputs directly
(403df68, 828b7ca)@on/@subscribewiring,wire_surface, behaviour mixins, containers
Panel/Group/Tabs/Row, feedbackJobProgress/LogView/
ResultTable,RunButton/AcceptCancel,Custom,ctx.log, Designer
files throughload_ui,ui_snapshot(c053bf7, 316a6ea)- the declarative surface form: components as class attributes, optional
names,Surface.build()returning the declared tree (decision-55
amendment, 0774928) - UI wrappers and the palette;
qgis-sdk new --uiwrites the declared
starter and opts a page into qgis-sdk-ui;UI001-UI005incheck
(25551d1, c79dc80, eddddbc) - the Processing catalogue and
ctx.algorithms.runfor any registered
algorithm, from Python and over the bridge (decision-64, f323d57,
637f1bf, 387caa1) release.pylearns theuiscope; the documentation site renders the
guides and the Storybook (c1a73c8, 496b94c)
Fixes
verify-versionsreads the example's window on release segments, so an
-rc.Nof the Python scope passes the stamp (c431216)
Qualified 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 install; the
0.7.0 release gate and the three rc rehearsals are recorded in doc-14.
Experimental 0.x: nothing is promised stable before 1.0.0.
ui-v0.1.0-rc.3
@archont561/qgis-sdk-ui 0.1.0-rc.3 (rehearsal)
Third dry run of the ui release train on main at 2427e37, before the
TASK-32 gate. Prerelease: pack check, alias smoke install and npm publish
--dry-run --tag next for both names; nothing is uploaded.