{"name": "SOLWEIG", "package_name": "solweig_qgis", "version": "0.1.0-beta74", "experimental": true, "qgis_min": "4.0.0", "qgis_max": "4.99.0", "downloads": 123, "uploaded_by": "songololo", "upload_datetime": "2026-03-17T21:25:29.035415", "changelog": "0.1.0-beta74\n- Fix rasterio resampling pixel drift (from_bounds back-computed inexact pixel size)\n- Fix phantom vegetation shadows: QGIS load path preserved CDSM NaN markers\n- Add SurfaceData.load() API; eliminate QGIS/core loading duplication\n- Remove duplicate root-level SVF/raster saves from QGIS preprocessing\n- Fix progress bar regression: wall computation now reports progress\n0.1.0-beta73\n- Fix CDSM/TDSM preprocessing tests for sub-threshold NaN behaviour\n0.1.0-beta72\n- Handle CDSM reconciliation with DEM to prevent shadow artefacts on hills\n0.1.0-beta71\n- Clarify TMY nature of PVGIS downloads in docs and QGIS plugin (#8)\n0.1.0-beta70\n- Fix sitting posture producing negative Tmrt with anisotropic sky (issue #9)\n- Add box direct beam splitting for sitting posture shortwave\n0.1.0-beta69\n- Fix SVF Options 3/4 zenith patch count to match upstream UMEP\n- Fix documentation examples and spec discrepancies\n- Move geopandas to optional extra [geo]; CI adds Python 3.13\n0.1.0-beta68\n- Lower min_object_height default from 1.5m to 1.0m\n0.1.0-beta67\n- Flatten sub-threshold DSM features to DEM before shadow casting (min_object_height=1.0m default) to remove kerbs, street furniture, and LiDAR noise\n- Expose MIN_OBJECT_HEIGHT as advanced parameter in Surface Preparation\n- Use original measurement station POIs from shapefiles (GeoJSON) for validation\n0.1.0-beta65\n- Fix backend auto-detection test: access lazy _compat attrs before restoring QGIS mocks to sys.modules, so in_osgeo_environment() sees the clean (non-QGIS) state\n0.1.0-beta64\n- Fix _compat.py reload bug: stale backend attrs (GDAL_ENV, RASTERIO_AVAILABLE) survived importlib.reload(), causing wrong backend after switching between GDAL-forced and auto-detect modes\n0.1.0-beta63\n- Consistent GDAL/rasterio backend separation: CRS validation and coordinate transforms now use osgeo.osr in QGIS environments instead of unconditionally importing pyproj\n- Fix backend auto-detection test for environments with partial rasterio stack\n0.1.0-beta62\n- Bug fixes and refinements\n0.1.0-beta61\n- Fix file-mode prepare() order: preprocess relative heights before walls/SVF computation\n- Fix tiled execution silently dropping wall_height/wall_aspect from tiles\n- Fix calculate() crash on single Weather object (now accepts Weather | list[Weather])\n- Fix ModelConfig.from_json() populating dead material_params instead of materials\n- Fix QGIS land-cover override table inheriting missing values from cobblestone instead of existing class\n- Fix QGIS EPW loader cross-year/TMY timestamp non-monotonicity\n- Update validation thresholds for corrected SVF geometry (absolute heights)\n0.1.0-beta60\n- GPU GVF compute shader: offload cached thermal accumulation (18 azimuths x ray march) to wgpu with automatic CPU fallback\n- Fix PVGIS EPW download: use QgsBlockingNetworkRequest instead of QgsNetworkAccessManager (fixes SSL errors on macOS)\n0.1.0-beta58\n- HPC performance: Cargo release profile (LTO, codegen-units=1), parallel SVF bitpacking, dynamic tile worker scaling, tile array view optimization, GPU SVF buffer reuse, increased GPU inflight submissions\n- Codebase cleanup: input validation, dead code removal, constants consolidation, deduplication, type hints\n- Fix test expectations for early ModelConfig validation\n0.1.0-beta57\n- Move optional deps (rasterio, geopandas, tqdm, pillow) to core so pip install solweig works out of the box\n0.1.0-beta56\n- Fix nighttime Ldown: CI now defaults to 1.0 (clear) instead of 0 at night; carry forward last daytime CI into nighttime hours\n- Fix GPU SVF: guard against f32 tan(~90\u00b0) sign flip in shadow propagation shader\n- Fix SVF recompute: fall back to recomputation when old SVF zips lack shadow matrices needed for anisotropic sky\n- Auto-detect met file timestep instead of hard-coding 60/10 min\n- Add Kronenhuset validation test and report (Lindberg et al. 2008)\n0.1.0-beta55\n- Adds tutorial for Bilbao; Fixes DEM vs CDSM absolute handling.\n0.1.0-beta54\n- Fix docs consistency tests; fix CI GDAL build for QGIS compat\n0.1.0-beta53\n- Enforce output directory for timeseries outputs\n0.1.0-beta52\n- Array vs. GeoTIFF API consistency\n0.1.0-beta51\n- Linting\n0.1.0-beta50\n- Cleanup\n0.1.0-beta49\n- Calculate API change and specs cleanup\n0.1.0-beta48\n- Add MkDocs site with API reference, I/O docs, and QGIS plugin guide\n0.1.0-beta46\n- Support QGIS 4 (Qt6); raise minimum to QGIS 4.0, Python 3.11\n0.1.0-beta45\n- Fix mountain shadow reach; simplify QGIS tiling options; minor bug fixes\n0.1.0-beta44\n- Expose day/night UTCI heat-stress thresholds; optional per-timestep Tmrt output; log TimeseriesSummary report\n0.1.0-beta43\n- TimeseriesSummary with aggregated grids and inline UTCI/PET; remove batch postprocess\n0.1.0-beta42\n- Remove percent symbol from changelog (fixes ini-style metadata parsing)\n0.1.0-beta41\n- Configurable land cover materials table in Surface Preparation with UMEP defaults\n- Save/load UMEP-compatible parametersforsolweig.json from surface directory\n0.1.0-beta40\n- Tighten golden test tolerances (SVF, wall temp, Tmrt, PET, ground temp)\n0.1.0-beta39\n- Fix nighttime Tmrt: full longwave radiation balance via Rust pipeline\n- Remove deprecated Python physics; all paths use fused Rust pipeline\n0.1.0-beta38\n- SVF must be prepared before calculate(); fix shadow spec convention\n- Documentation and quick-start improvements\n0.1.0-beta37\n- Fix integer raster crash on NaN assignment; rename coerce_f64_to_f32 to ensure_float32\n0.1.0-beta36\n- GPU shadow-to-bitpack shader; anisotropic sky GPU cleanup\n- SVF core API tests; Python 3.9 fix; surface model type-safety fixes\n0.1.0-beta35\n- Fall back to Python logging/tqdm when QGIS is importable but inactive\n0.1.0-beta34\n- Use local relief for max_height; harden NaN handling; fix SVF tile-size context\n0.1.0-beta33\n- GPU and processing performance improvements; multi-resolution SVF/wall cache\n0.1.0-beta32 - Bump\n0.1.0-beta31 - Bump\n0.1.0-beta30\n- Reuse precomputed SVF and shadow matrices in tiled timeseries\n0.1.0-beta29\n- Configurable tile orchestration (workers, queue depth, prefetch)\n- Backpressure-controlled dispatch; memory-aware prefetch; adaptive worker count\n0.1.0-beta28\n- Optimized tiled timeseries; parallel tile execution via ThreadPoolExecutor\n0.1.0-beta27\n- Fix 4 tiling bugs (pipelining split, tile-size semantics, anisotropic sky, overlap buffer)\n- Free result arrays after writing to disk in timeseries mode\n0.1.0-beta26\n- Vegetation transmissivity for diffuse SVF; configurable leaf-off transmissivity\n- Expose vegetation parameters in QGIS (transmissivity, seasonal leaf dates)\n0.1.0-beta25\n- Fix multiple bugs: GVF shadow inversion, CDSM/TDSM clamping, thermal delay state mutation, nighttime NaN propagation, diffuse fraction division by zero, clearness index log(0), TMY date filter, polar winter altmax, missing conifer params\n0.1.0-beta24\n- Skip tiling for nighttime timesteps (single-pass full grid)\n0.1.0-beta23\n- Fix EPW hour-24 timestamp bug; fix hardcoded Gothenburg lat/lon defaults\n0.1.0-beta22\n- GPU pipelining for sustained utilisation; opt-in timing instrumentation\n0.1.0-beta21\n- Height-aware tile buffer (reduces tile count for short buildings)\n0.1.0-beta20\n- QGIS progress monitor for timeseries; auto-tile large rasters\n- Resource-aware tile sizing from real GPU/RAM limits\n0.1.0-beta19\n- Fix import sorting (ruff formatting)\n0.1.0-beta18\n- Enable anisotropic sky by default; port Perez model to Rust\n- Fix bitpacked shadow extraction; fix veg shadow init; release GIL\n0.1.0-beta17\n- Install solweig with --no-deps in QGIS (fixes gdal_array ABI crash)\n0.1.0-beta16\n- Catch all exceptions on import so upgrade prompt still appears\n0.1.0-beta15\n- Force GDAL backend via env var (fixes rasterio detection in QGIS)\n0.1.0-beta14\n- Gate plugin build on passing tests; fix CI test reload failure\n0.1.0-beta13\n- Add Location.from_epw(); enable anisotropic sky in tiled mode\n- Fix SVF cache reuse and validation; enforce release-mode Rust builds\n0.1.0-beta12\n- CI: create GitHub Release with wheels on tag push\n0.1.0-beta11\n- Fix PyPI upload: include LICENSE in sdist\n0.1.0-beta10\n- Auto-fill NaN with DEM ground reference; clamp near-ground noise\n0.1.0-beta9\n- Fix numpy dtype crash in QGIS; consolidate backend detection\n0.1.0-beta8\n- Fix plugin not appearing in Processing Toolbox; defer install prompt\n0.1.0-beta7\n- Publish workflow gates on passing tests\n0.1.0-beta6\n- Auto-detect outdated library and prompt to upgrade\n0.1.0-beta5\n- CI fixes: simplified build workflow; tags no longer trigger redundant workflows\n0.1.0-beta4\n- Library installed via pip (auto-prompted); EPW proxy support; remove bundled binaries\n0.1.0-beta1 - First public beta\n- Tmrt and thermal comfort; SVF preprocessing; anisotropic sky; GPU shadows\n0.1.0-alpha1 - Internal alpha\n- Single timestep and timeseries Tmrt; SVF; UTCI/PET; EPW import; tiled processing", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/solweig_qgis/version/0.1.0-beta74/download/"}