{"name": "niva", "package_name": "niva_qgis", "version": "0.43.1", "experimental": true, "qgis_min": "3.22.0", "qgis_max": "4.99.0", "downloads": 14, "uploaded_by": "waterlover", "upload_datetime": "2026-07-06T07:08:05.483573", "changelog": "0.43.1 \u2014 Changed: `show` now reports a feature count for vectors and cell dimensions for\nrasters (empty/oversized datasets obvious at a glance); the plugin's starter text opens with\nrunnable orientation commands (info / show / describe) for new users.\n0.43.0 \u2014 Added: `niva pdal [check|test|setup]` sets up & tests the point-cloud (PDAL)\nbackend (finds pdal_wrench, OS-tailored fixes); a cross-platform install self-test\n(platform_selftest) + pdal-setup guide. Fixed: `run` no longer glob-expands compact formula\nvalues; pdalcli:/saga: no longer crash on a missing NIVA_TMPDIR. CI now enforces ruff + the\nplugin-store security scan (bandit/detect-secrets) so every release stays scan-clean.\n0.42.5 \u2014 Security: cleared all 5 blocking findings from the QGIS plugin security scan\n(Bandit) \u2014 usedforsecurity=False on a dedup hash, parameterized SpatiaLite lineage writes, an\nhttp(s)-only scheme allowlist + file/ftp-free openers for network fetches, and a DOCTYPE-refusing\nXML parser. Real hardening, not just suppressions. Added a security-scanning playbook to the docs.\n0.42.4 \u2014 Changed: removed the deprecated `supportsQt6` flag (removed from QGIS core, no\nlonger recognised); QGIS 4 readiness is set by qgisMaximumVersion=4.99 alone. Plugin already uses\nthe qgis.PyQt compat layer, so no code change. Added a reusable QGIS-plugin-publishing playbook.\n0.42.3 \u2014 Fixed: `niva validate`/`--dry-run` are now side-effect-free \u2014 the dry-run no\nlonger writes report/catalog files, deletes files (`remove`), or sends `notify`/`email`. New\nengine `inert` mode suppresses outward actions while still validating each stage.\n0.42.2 \u2014 Packaging: the plugin zip now bundles the GPL-3.0-or-later LICENSE and ships a\nPNG icon (icon.png) for the QGIS Plugin Repository listing. Fixed an example that didn't parse\n(multi-line SQL string \u2014 niva's grammar is line-based). No functional change to niva itself.\n0.42.1 \u2014 Changed: license text corrected to GPL-3.0-or-later (matches the project's\nstated GPLv3 license); added plugin `tags` for discoverability. No functional change from 0.42.0.\n0.42.0 \u2014 Added: `niva validate <file.niva>` \u2014 an OFFLINE linter (no QGIS). Grammar +\nclosed-set verb check (did-you-mean) + alias arg/option/enum binding + `run <id>` params, then a\nMockBackend dry-run so a clean pass means the flow actually runs. Errors + style warnings with\nline numbers; exit 0 clean / 1 on error. `--explain` now rejects an invented built-in verb too.\n0.41.0 \u2014 Added: OFFLINE algorithm catalog (packaged algorithms.json, 878 algos w/ every\nparameter default + enum) \u2192 `describe <id>` and `run <id>` parameter validation now work with NO\nQGIS. Provenance now records the niva version (pins the exact defaults). SpatiaLite saves record\nlineage in an aspatial `niva_lineage` table (PostGIS unchanged; best-effort, hidden from `show`).\n0.40.1 \u2014 Fixed: provenance/lineage metadata now covers RASTER and POINT-CLOUD outputs\n(was vector-only). Rasters and .las/.laz/.copc.laz get a .qmd sidecar carrying the niva lineage\nwhen the format can't embed it (gpkg/PostGIS embed; shp/geojson/tif/asc/laz \u2192 .qmd sidecar).\n0.40.0 \u2014 Added: `map` verb \u2014 a composed cartographic layout (PDF/PNG/SVG) with legend,\nscale bar, north arrow ON by default; a bare `map out.pdf` yields a complete map, no template\nneeded. Overlays, basemap, labels, page/orientation/dpi; or `from=project.qgz` to export an\nexisting QGIS layout/atlas. figure/map now stream render progress. Long-run resilience test suite.\n0.39.0 \u2014 Added: `figure` verb \u2014 render a quick map image (PNG/JPG) of the current\nlayer, vector OR raster, with labels and sensible defaults (`load x | figure out.png` just works).\nOptions: size, dpi, extent, layers (overlays), basemap=osm, bg, labels. Pass-through.\n0.38.0 \u2014 Added: native-CLI harness \u2014 `run pdalcli:<cmd>` drives PDAL (pdal_wrench) on\nraw LAS/LAZ/COPC (DTM/DSM/CHM, class filtering, merge/clip/classify \u2014 no COPC step), and\n`run saga:<lib>:<tool>` drives saga_cmd. Delegates all other ids to QGIS unchanged; graceful\ndegradation when a tool is missing or the SAGA version differs. Example: lidar_pdal_grass.niva.\n0.37.0 \u2014 Added: `search <keyword>` (fuzzy-find verbs + the live QGIS algorithm catalog)\nand `docs <keyword>` (full describe of every match \u2192 your own mini-guide). `describe` now ends\nwith a runnable example (curated or synthesised) and covers built-in verbs too.\n0.36.0 \u2014 Added: `describe` now runs as a flow verb (works in the dock and mid-script),\nand any report can be captured with `to=<file>`. Changed: show/info/describe emit text the\nsame way (file / dock / stdout); assess/style/metadata now confirm their action.\n0.35.1 \u2014 Fixed: `show` no longer lists SpatiaLite's internal tables (KNN/KNN2,\ndata_licenses, *_geometry_columns registries) as loadable layers \u2014 QGIS 3.44 exposed some that\nQGIS 4 hid. Testing: full suite now passes on Windows 11 (QGIS 4.0.3 and 3.44 LTR).\n0.35.0 \u2014 Added: native CSV lon/lat point loading (load points.csv builds points when it\nhas longitude/latitude columns; no .vrt needed). New format-matrix test suite + FileGDB/KML/\nCSV/JP2 fixtures + a wget data fetcher. Fixed (macOS): all QGIS providers now load headless.\n0.34.1 \u2014 Fixed: reproject/warp now FAIL CLOSED on an unknown CRS (e.g. EPSG:99999),\nwhich used to silently produce a layer with an invalid/empty CRS. Added four property-based\ntest suites (error-path/fail-closed, numerical correctness, round-trip fidelity, security).\n0.34.0 \u2014 Added: `remove` \u2014 delete a file output and its sidecar family (shapefile\nparts, gpkg -wal/-shm, project attachments), behind a strict safety gate: refuses @conn refs,\nglobs, directories and non-geodata types (force to override); -dryrun previews. Batch with\n`each \"<glob>\" | remove`. Generated validation scripts are now fully self-cleaning.\n0.33.0 \u2014 Added: a @conn.table can now be a SECONDARY layer in an overlay/join\n(clip @conn.table, spatialjoin with=@conn.table, ...). Fixed: sql results keep their\ngeometry, now including COMPUTED geometry (ST_Centroid/ST_Buffer) on SpatiaLite. Two new\n40-pipeline validation suites (simple\u2192complex, and \"different & more complex\").\n0.32.1 \u2014 Fixed: a PostGIS table whose tableUri omits the geometry column now loads\nWITH its geometry (was an empty aspatial layer that broke reproject/buffer/centroid); the\ngeometry column is found by type, any name. The honest geometry error now fires mid-pipe too.\n0.32.0 \u2014 Renamed the `fix` verb to `fixgeom` (breaking) \u2014 it now says what it does\n(repair geometry). Clearer error when centroid/pointonsurface hit invalid/empty geometry.\n0.31.6 \u2014 Fixed: no more benign GDAL \"gpkg_metadata ... unable to open database\nfile\" error printed on a successful save when a flow reads from and writes to the same\nGeoPackage (standalone niva now filters just that message).\n0.31.5 \u2014 Clearer save error: mode= (create/replace/append) is database-only;\non a file use `save <file> as <layer>` to add/append a GeoPackage layer.\n0.31.4 \u2014 show now also prints write-into-existing examples (add a layer to a\nGeoPackage; append to a DB table mode=append); its second vector example is now `fix`\n(centroid crashed on mixed/GeometryCollection geometry).\n0.31.3 \u2014 show's vector example reprojects before buffering (buffer 100m used to error on a\ngeographic layer); show quotes a Source containing #, a space, or |.", "external_deps": "", "download_url": "https://plugins.qgis.org/plugins/niva_qgis/version/0.43.1/download/"}