All notable changes to rs-embed will be documented in this file.
The project keeps this changelog as the canonical release record. GitHub Releases should summarize the same versioned changes rather than introducing a second source of truth.
The format is based on Keep a Changelog, and the project follows Semantic Versioning with extra care around model and embedding semantics.
0.1.2 - 2026-04-03
This release rolls up upstream-alignment work and correctness fixes that may change default embedding behavior for some model adapters compared with 0.1.1. Users who need strict reproducibility across versions should review the model-specific changes below and pin explicit options where needed.
- Standardised NumPy docstrings across all public functions and classes in
export.py,inspect.py,writers.py, and thetools/andproviders/layers. No behaviour changes.
-
Versioned documentation with a version selector powered by
mikeand MkDocs Material. Each release tag deploys a pinned version; pushes tomainupdate adevalias. Themike,mkdocs-material, andpymdown-extensionspackages are now included in the[dev]optional group. -
load_export(path)reader API that loads any export produced byexport_batch(...)— both combined (single file) and per-item (directory) layouts — and returns a structuredExportResult. Failed points are NaN-filled rather than dropped, partial model runs are surfaced viastatus="partial", andExportResult.embedding(model)provides a typed shortcut to the embedding array.
anysatnow defaultsgridoutput to nativedensefeatures while keeping pooled output on patch-grid pooling by default, with new AnySat-specific switches forgrid_feature_mode(dense/patch) andpooled_source(patch/tile).galileonow aligns more closely with the upstream NASA Harvest runtime:gridoutput prefers Galileo's own patch-level token averaging path, automatic NDVI derivation has been removed, and the default normalization mode is nownonewith anofficial_statsoption for upstream pretraining statistics.satvision_toanow uses the vendored official SatVision runtime as its only model path and narrows provider-side preprocessing to the default MODIS proxy route (MOD09GAreflectance +MOD21A1Dthermal proxy). Custom collections are no longer treated as implicit GEE fallbacks; callers should pass calibratedinput_chwdirectly for non-default inputs.
device="auto"now correctly selects MPS on Apple Silicon instead of silently falling back to CPU. Follows the PyTorch-recommended priority (cuda > mps > cpu), giving an approximately 4x speedup on Apple M-series hardware for all API calls that use the default device.galileomonth overrides now use the official zero-based month indexing expected by Galileo embeddings, fixing the previous one-month offset inRS_EMBED_GALILEO_MONTH.satvision_toagridoutput now consistently extracts spatial features from the official-style SwinV2 path instead of misinterpreting pooled vectors as token grids, and the tightened fetch path records explicit proxy provenance in metadata.scalemaenow follows the official feature-extraction path more closely: the adapter unwraps commonrshfwrappers to call the nested ScaleMAE backbone'sforward_features(...)instead of falling back to wrapperforward(), uses ImageNet eval preprocessing (Resize(short side) + CenterCrop + Normalize) with effective post-preprocessinput_res_m, and fixes the declarative input metadata to reflect raw Sentinel-2 SR inputs plus adapter-managed preprocessing.satmaeppandsatmaepp_s2_10bnow align more closely with the official SatMAE++ preprocessing paths. The RGB adapter now defaults torgbchannel order for the published fMoW-RGB checkpoint and no longer pre-resizes provider/input overrides before the official eval transform, while the Sentinel-2 10-band adapter no longer sanitizes inputs with adapter-sideclip/nan_to_numbefore the source-styleSentinelNormalize -> ToTensor -> Resize(short side) -> CenterCroppipeline.
0.1.1 - 2026-04-01
- Automated pull request changelog enforcement with a
skip-changelogescape hatch for docs, tests, CI, and other internal-only changes. - Tag-driven GitHub Release publishing that uses the matching
CHANGELOG.mdsection as the release notes. - Trusted Publishing release automation for PyPI and TestPyPI, including a manual TestPyPI dry run and install smoke test.
- The contribution and release workflow now treats
CHANGELOG.mdas the canonical source for user-visible release notes. - The tag-triggered release flow now validates
src/rs_embed/_version.py, publishes to PyPI, and only then creates the GitHub Release. - The tag-triggered release flow now validates the matching
CHANGELOG.mdentry before publishing to PyPI, so a missing release-notes section fails early instead of after package upload. - The base package installation now includes the Copernicus GeoTIFF runtime (
tifffileandimagecodecs) instead of requiring a separate extra. - The public docs now default to
pip install rs-embedfor published releases while keeping editable installs documented for repository development.
- The TestPyPI smoke test now verifies package importability and the
rs-embedCLI entry point, not just installability and version metadata.
0.1.0 - 2026-03-31
- Initial public alpha release of
rs-embed. - Unified ROI to embedding API centered on
get_embedding(...),get_embeddings_batch(...),export_batch(...), andinspect_provider_patch(...). - Support for precomputed embedding products including
tessera,gse, andcopernicus. - Support for on-the-fly model adapters including
satmae,satmaepp,satmaepp_s2_10b,prithvi,scalemae,remoteclip,dofa,satvision,anysat,galileo,wildsat,fomo,terramind,terrafm,thor, andagrifm. - Documentation site covering quickstart, model behavior, API contracts, and extension guidance.