Skip to content

Releases: Archont561/qgis-sdk

python-v0.9.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:15
181f8cc

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

python-v0.9.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:05
181f8cc

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

Choose a tag to compare

@github-actions github-actions released this 29 Oct 23:49

@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

Choose a tag to compare

@github-actions github-actions released this 29 Oct 23:49

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

ts-v0.6.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 23:19

@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

python-v0.8.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 23:19

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

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:22
e9b2ce8

@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 ui release train: pack check, alias smoke install and the
    bridge peer-range check in release.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

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:22
e9b2ce8

@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-sdk in its
    request schema; validateAgainstSchema reads past that one keyword and
    a regenerated bridge.schema.ts moves its CONTRACT_FINGERPRINT
    (decision-46, 34766b0)
  • FileRef.kind is "file" | "directory" (34766b0)

Features

  • the framework-free store core in the root (formStore, jobStore,
    hostQueryStore, layersQuery) with ./react rewritten over it
    (useStore, useForm, useHostQuery) and the new ./vue and
    ./svelte adapters behind optional peers (decision-47, a2c653f)
  • Processing from a page: algorithms.providers/list/describe/run, the
    grants algorithms.read/algorithms.run, runAlgorithm,
    outputsByName and the typed shapes in ./host; qgis-sdk processing generate writes processing.schema.ts (decision-64, 387caa1)
  • the scaffold's pages render a form from the declaration and a layer
    picker over layers.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

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:22
e9b2ce8

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.ui is gone: NativeForms and
    DeclaredFormDialog are replaced by Form.for_action(ctx, id) inside a
    Dialog/Dock, Button and Column (403df68)
  • a Literal[...] of strings is the enum kind for algorithms (it was
    refused in 0.6); declared inputs with a marker carry x-qgis-sdk in
    their schema, so a generated bridge.schema.ts must be regenerated
    (decision-46, 34766b0)
  • FileRef moved to qgis_sdk.models and gained kind = "directory";
    the host contract's HOST_FINGERPRINT moved (schema and protocol
    versions stay at 1)

Features

  • six parameter kinds join LayerInput/CrsInput/Metres: FileInput,
    DirectoryInput, FieldInput, Range, Colour and Literal choices
    (decision-46, 34766b0)
  • the input catalogue: eleven components, Component, Option,
    coerce_value; ctx.files and UiContext.files/layers/project
    (581dcdb)
  • Form, Button, Column; Form accepts declared inputs directly
    (403df68, 828b7ca)
  • @on/@subscribe wiring, wire_surface, behaviour mixins, containers
    Panel/Group/Tabs/Row, feedback JobProgress/LogView/
    ResultTable, RunButton/AcceptCancel, Custom, ctx.log, Designer
    files through load_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 --ui writes the declared
    starter and opts a page into qgis-sdk-ui; UI001-UI005 in check
    (25551d1, c79dc80, eddddbc)
  • the Processing catalogue and ctx.algorithms.run for any registered
    algorithm, from Python and over the bridge (decision-64, f323d57,
    637f1bf, 387caa1)
  • release.py learns the ui scope; the documentation site renders the
    guides and the Storybook (c1a73c8, 496b94c)

Fixes

  • verify-versions reads the example's window on release segments, so an
    -rc.N of 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

ui-v0.1.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 27 Oct 19:10
2427e37

@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.