Changes in version 0.2.1 Fixes - install_gdalraster() now passes repos = NULL to utils::install.packages() when installing from a local source tarball. Previously, repos was set to the active CRAN mirror, which caused R to treat the tarball path as a package name to look up remotely rather than a local file to install. The symptom was a silent no-op accompanied by the warning "package '…tar.gz' is not available for this version of R", followed by the error "gdalraster source install did not produce an installed package" (#11). - When upgrade = TRUE, R package dependencies are now installed via a separate install.packages("gdalraster", repos = repos) call before the source build, so CRAN-resolution still works for the upgrade case while the tarball install itself always uses repos = NULL. Changes in version 0.2.0 Documentation - Technical documentation promoted to published vignettes: vignette("architecture") (toolchain, ABI, DLL loading, embedded python, bundle reproduction) and vignette("troubleshooting") (triage flow and symptom matrix). These are now the canonical docs; dev/docs/ is explicitly non-normative maintainer notes. Fixes - tools/build_gdal.sh discovers the produced libgdal-*.dll by glob in its final verification instead of hardcoding the SONAME, and fails loudly when no DLL is produced (#2). - install_gdal_runtime() now emits actionable guidance on download failure: the releases URL and the local_zip offline install path (#5). Build - GDAL runtime baseline bumped to 3.13.1 (upstream release 2026-06-05); default gdal_version in the build workflow updated accordingly. Changes in version 0.1.0 New features - The GDAL runtime bundle now ships GDAL's pure-python osgeo_utils package (gdal-utils) under /python, version-locked to the built GDAL tag. activate_gdal_runtime() prepends this directory to PYTHONPATH (session-scoped) so GDAL algorithms that embed a Python interpreter at runtime (e.g. gdal driver gpkg validate) can import it. - activate_gdal_runtime() now returns gdal_python in its invisible result alongside the other configured paths. Documentation - New README technical section on the embedded CPython layer and why the compiled osgeo SWIG bindings are intentionally not bundled. - Offline / air-gapped installation documented in the README, vignette, and install_gdal_runtime() help (local_zip workflow). - Troubleshooting guide gains a triage entry for ModuleNotFoundError: No module named 'osgeo_utils'. - Maintainer docs aligned with the current bundle contract (bin, include, lib, share, python). Build and CI - CI is now scoped to its single responsibility: build, verify, and publish the GDAL runtime bundle. The gdalraster source-build verification job was removed; building gdalraster against the bundle is package functionality (install_gdalraster()). - Every CI run now produces durable output: a 30-day workflow artifact and the distributable zip are always created; release publication is gated on tag pushes or the publish_release dispatch input (default true). - Bundle verification asserts the full runtime contract, including python/osgeo_utils. Package - gdalraster declared in Suggests (resolves an R CMD check warning). Changes in version 0.0.1 - Initial development version: GDAL runtime bundle install/activation helpers, gdalraster source-build integration, startup hooks, and the Windows CI build pipeline.