All notable changes to this project are documented here. Format inspired by Keep a Changelog; versioning follows SemVer. Pre-1.0, expect breaking changes in minor releases.
- Optional Rust/CLI GeoParquet backend and GeoParquet-enabled Python wheels.
- Scoped, named, resumable STAC metadata ingestion with progress and storage caps.
- Snapshot and automatic API fallback modes, freshness checks, and gap-aware scope unions.
- Per-catalog sorting, local collection summaries, row-group pruning, and a reproducible benchmark.
- Explicit acquisition-window incremental overlays, atomic compaction, and cleanup with reader protection.
- Sync/async Python ingestion, backend configuration, maintenance, and type hints.
- Automatically versioned Parquet provenance and search diagnostics.
- A GeoParquet Jupyter/Colab notebook, release highlights page, and documented local benchmark.
- Dataset manifests use version 2; legacy version-1 inventories remain readable.
- Release publishing includes the GeoParquet crate before the engine; CI checks both feature modes.
- Forward sort fields to live STAC searches instead of silently discarding them.
- First Rust-backed Python distribution with synchronous
Client,AsyncClient, native dictionary results, configuration, discovery, and search metadata. - Documentation at https://spatialnode.com/superstac, with Python, Rust, CLI, configuration guides, and a runnable notebook.
- Release automation for Python wheels, a source distribution, and Rust crates.
- The PyPI package replaces the legacy 0.1.0a2 Python implementation. This is a breaking migration; use the new client API rather than assuming compatibility.
- Python requires CPython 3.9+. Maturin is a build dependency only.
- All Rust crate versions advance together to 0.2.0 and link to the docs site.
- Python bindings import configuration types from their current Rust module.
- Python
Searchnow returns an iterator from__iter__. - Python type hints include constructor keyword options and
to_geojson().
Initial public release.
- Workspace layout split across
superstac-core,superstac-config,superstac-search,superstac-engine, andsuperstac-cli. - Federated STAC search with concurrent fan-out, retry with exponential backoff, per-catalog timeouts, and concurrency cap.
- Collection alias rewriting (canonical ↔ local) so users can query with one name across heterogeneous catalogs.
- Asset alias rewriting for canonical asset key normalization.
- Item deduplication across catalogs with
seen_inprovenance. - Response unification (collection + asset name rewriting on incoming items), settings-gated.
- Source selection: catalogs whose introspected
/collectionsdoesn't include the request are skipped. - Per-catalog failure reporting via
SearchMetadata.failures. - Discovery API:
list_collections,catalogs_supporting,collections_by_catalog,describe_collection. - Background health monitoring with configurable check frequency.
superstacCLI withsearchandcollectionssubcommands,--jsonoutput, and--verbose/--quietlog control.tracinginstrumentation across the engine, withRUST_LOGenv var override.- YAML configuration with shared workspace settings + per-catalog overrides.