{"name": "Whitebox Workflows for QGIS", "package_name": "whitebox_workflows_for_qgis", "version": "2.1.0", "experimental": false, "qgis_min": "3.28.0", "qgis_max": "4.99.0", "downloads": 1206, "uploaded_by": "jlindsay", "upload_datetime": "2026-06-09T13:20:33.363441", "changelog": "## 2.1.0 - 2026-06-09\r\n\r\n### Major Architecture Change\r\n- **Eliminated static metadata bundling**: The plugin no longer ships with bundled static help files, tool taxonomy files, or parameter definitions. All tool discovery, help text, and parameter metadata is now queried dynamically from the backend at runtime via the catalog and schema APIs. This simplifies plugin maintenance, enables real-time tool updates without plugin redeployment, and ensures UI and backend metadata stay perfectly in sync.\r\n\r\n### Fixed\r\n- Fixed LiDAR tool outputs not appearing in the QGIS Layers panel after the algorithm completes. `QgsProcessingParameterFileDestination` (used for `.las`/`.laz` outputs) does not trigger auto-loading in QGIS. The plugin now explicitly calls `context.addLayerToLoadOnCompletion()` after each LiDAR tool run so the output point cloud is loaded into the Layers panel automatically \u2014 both for user-specified paths and `TEMPORARY_OUTPUT` \u2014 matching the behaviour users expect from raster and vector tools.\r\n- Fixed `output_id_mode` parameter in `individual_tree_segmentation` not appearing as a dropdown in the QGIS tool dialog. The backend describes enum options using curly-brace format `{a|b|c}` without a preceding colon. The enum-option extractor now recognises this pattern, including options that contain `+` for combination modes (e.g., `rgb+user_data`, `rgb+point_source_id`). Users now see a dropdown with all five modes instead of a plain text box with no guidance.\r\n- Removed `*.zlidar` from the LiDAR output file-format filter. The wblidar backend does not support the zlidar format; its presence in the save-dialog filter was misleading.\r\n- Fixed `individual_tree_segmentation` tool GUI failure where the `output_id_mode` enum parameter was incorrectly being treated as a file destination, causing QGIS to pass a temp file path instead of the mode string (`rgb`, `user_data`, `point_source_id`, or combinations). Updated the plugin parameter type-inference logic to exclude semantic parameter names ending in `_mode`, `_type`, `_encoding`, `_format`, `_units`, `_method`, `_style`, `_scheme`, `_class`, and `_kind` from the `output_` file-destination rule.\r\n- Fixed backend installation failure on Windows when QGIS is installed via the OSGeo4W installer. The OSGeo4W bundled Python does not include `pip` by default. The plugin now detects when pip is missing and displays a **persistent, user-friendly dialog** with step-by-step remediation instructions specific to OSGeo4W, rather than a generic error message. The remediation guidance includes commands for bootstrapping pip via `ensurepip` or the direct pip bootstrap script, eliminating the need for users to search documentation when they encounter this issue.\r\n- Fixed \"No Python interpreter is available\" error when using Check Backend Updates or Runtime Diagnostics on macOS (and some Linux builds). In these environments `sys.executable` inside QGIS is the QGIS binary, not a Python executable. The interpreter discovery logic now also searches for Python inside the macOS QGIS `.app` bundle (alongside the binary and inside `Contents/Frameworks/Python.framework/`). As a further fallback, when `whitebox_workflows` is importable in-process the in-process path is used for version queries (which never spawns a subprocess), preventing the error entirely in the common case.\r\n- Fixed Runtime Diagnostics panel rendering blank / appearing to hang on macOS. The panel was using `QMessageBox.information` which renders a blank white window on some macOS Qt builds when the message text is large. Replaced with a proper scrollable `QDialog` containing a `QPlainTextEdit` with a monospace font, matching the style of other plugin dialogs.\r\n- Fixed \"License transfer failed: No external Python interpreter was found for license operations\" error when activating, deactivating, or transferring a Pro license in the standard QGIS-mode installation. License operations previously required an external subprocess Python, which does not exist in the standard pip-installed QGIS environment. License functions (`activate_license`, `deactivate_license`, `transfer_license`) are now called in-process via the already-loaded `whitebox_workflows` module when no external interpreter is configured.\r\n- Added comprehensive flake8 validation pass to ensure compliance with QGIS plugin repository validator rules (W293, W503, W504, F841, F401, E303, E305). Fixed trailing whitespace on blank lines and removed unused variable assignments.\r\n- Fixed `deploy_wbw_to_qgis.sh` development script emitting \"Target directory already exists\" warnings on repeated installs. The script now pre-removes the existing `whitebox_workflows/` package directory and `.dist-info` folder before installing, so pip always sees a clean target. Removed `--force-reinstall` flag (redundant after the pre-clean).", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/whitebox_workflows_for_qgis/version/2.1.0/download/"}