[general]
name=LiDAR Relief Visualization
qgisMinimumVersion=3.0
qgisMaximumVersion=4.99
description=A free, open-source QGIS toolkit with 29 Processing algorithms for archaeological LiDAR visualization and terrain analysis. Reveal subtle earthworks, prepare point clouds, compare surveys, combine LiDAR with satellite imagery, validate anomalies in the field, and produce reproducible research outputs.
version=2.0.22
author=Mark Bouck
email=markbouck@duck.com

about=LiDAR Relief Visualization is a free and open-source archaeological terrain-analysis toolkit for QGIS and part of the Dig:Tools ecosystem.
    Its 29 Processing algorithms help archaeologists, heritage professionals, and landscape researchers examine digital elevation models and LiDAR point clouds for subtle features such as ditches, banks, mounds, hollow ways, scarps, platforms, quarrying, and disturbed ground.
    Core tools include multi-directional hillshade, SLRM, Sky-View Factor, anisotropic Sky-View Factor, positive and negative openness, Local Dominance, MSTP, e4MSTP, Terrain Ruggedness Index, slope, VAT, Simple Red Relief, PCA composites, visualization blending, and batch processing with landscape presets.
    Extended workflows support LAS/LAZ ground filtering, PDAL processing, multi-temporal DEM comparison, LiDAR and Sentinel-2 fusion, Cloud-Optimized GeoTIFF export, interactive web maps, QField survey packages, reproducible visualization recipes, PDF reporting, and optional ONNX-based feature detection.
    Core terrain tools work with libraries supplied by QGIS. Specialized capabilities use clearly identified optional packages and remain isolated, so missing optional dependencies do not prevent the plugin from loading.
    The plugin supports QGIS 3 and QGIS 4 and is tested through automated numerical, packaging, clean-runtime, and desktop-loader checks. It supports transparent, reproducible research without subscription fees or proprietary lock-in.
    Visualizations and automated detections are interpretive aids rather than archaeological classifications. Assess potential features using complementary evidence and, where appropriate, field validation.

tracker=https://github.com/dig-tools/lidar-relief-qgis-plugin/issues
repository=https://github.com/dig-tools/lidar-relief-qgis-plugin
homepage=https://github.com/dig-tools/lidar-relief-qgis-plugin

hasProcessingProvider=yes

tags=lidar,relief,visualization,dem,archaeology

category=Raster
icon=resources/icon.png

experimental=False
deprecated=False

changelog_url=https://github.com/dig-tools/lidar-relief-qgis-plugin/releases

changelog=
 Version 2.0.22:
 **Security**
 - **QGIS security-scan compliance.** Documented and explicitly suppressed
   Bandit B405 at the sole ElementTree import because the field-package exporter
   only constructs and serializes a new QGIS project; it never parses XML.
   Added a regression test proving that untrusted project names and paths are
   escaped as text and cannot inject XML elements, declarations, or entities.
 - **Lean runtime package.** Excluded the development-only pytest suite from the
   installable QGIS archive. Tests remain fully available in the source
   repository and CI, but test assertions and optional fixtures are no longer
   shipped as plugin runtime files.
 **Fixed**
 - **QGIS 4 / Qt6 enum compatibility.** Replaced all 56 deprecated unscoped QGIS
   enum aliases with their QGIS 3.34-and-QGIS 4-compatible scoped forms,
   covering Processing number and field types, raster source types, raster
   statistics, and contrast-enhancement algorithms.

 Version 2.0.21:
 **Added**
 - **Terrain Ruggedness Index (TRI).** Added a dependency-free Riley 3×3
   implementation and QGIS Processing wrapper. TRI maps local elevation
   contrast in the DEM's elevation units and can help identify scarps, banks,
   rough ground, stone spreads, quarrying, and other microtopographic changes.
 - **Release version guard.** Tag-based publishing now fails before upload when
   the tag version and `metadata.txt` version differ.
 - **QGIS runtime smoke test.** Added a reusable headless test that loads and
   unloads the plugin, checks all 29 Processing algorithms, executes TRI on a
   synthetic projected DEM, and validates the output raster. It now runs in CI
   inside the official QGIS container.
 **Fixed**
 - **Persistently failing full-test workflow.** The QGIS container ran the CSF
   determinism test without installing `cloth-simulation-filter`; pytest skipped
   the module and the explicit node selection then failed. CI now installs and
   verifies the package before running the test.
 - **Plugin failed to load without optional ReportLab.** A runtime-evaluated
   `Drawing` return annotation raised `NameError` whenever ReportLab was absent,
   preventing every plugin tool from loading. Annotations are now deferred, so
   only the PDF report tool requires ReportLab as documented.
 - **2.0.20 package metadata drift.** The 2.0.20 tag contained
   `version=2.0.19`, old `mabo-du` links, and no 2.0.20 changelog entry. All live
   metadata now identifies version 2.0.21 and the `dig-tools` repository.
 - **Documentation drift.** Corrected feature counts, installation guidance,
   optional-dependency wording, and release links.

 Version 2.0.19:
 **Fixed**
 - **Plugins.qgis.org "Changes" tab completeness.** v2.0.18 reduced the `changelog=` block in `metadata.txt` down to a single `2.0.18` entry on the assumption that QGIS-Django's per-version auto-fill would render a multi-version block as empty / duplicated version rows. v2.0.19 restores the cumulative `changelog=` block covering versions `2.0.14 → 2.0.18` (each version followed by full bullets, no bare version-number-only lines, no duplicates), so plugins.qgis.org's auto-fill has the full release history since the 30 June 2026 v2.0.14 baseline.
 - **GitHub release bodies contained `--generate-notes` boilerplate, not CHANGELOG.md narrative.** The release.yml workflow's `gh release create --generate-notes` flag emits a commit/PR list, which is not useful as end-user release notes. Replaced the GitHub release bodies for `v2.0.18` and `v2.0.19` with the actual CHANGELOG.md narrative for each version.


