Changelog
v0.6.0 (2026-03-19)
BREAKING CHANGE
- Collection IDs now use nested paths (e.g., "climate/hittekaart")
Feat
- push: add parallel push with --workers flag (#244)
- cli: git-style command scoping for list, push, pull (#243)
- scan: nested catalog support with structure recommendations (#242)
- nested catalog support (#237) (#240)
- push: add catalog-wide push without --collection flag (#228)
- cli: agent-native improvements with JSON output and input hardening (#223)
Fix
- cli: default AWS profile to 'default' for S3 commands (#227)
- output: improve detail text readability across terminal themes (#219)
Refactor
- catalog: remove dead write/read_catalog_json helpers (#217)
v0.5.0 (2026-03-08)
Feat
- cli: unify list and status commands (#215)
- cli: remove deprecated dataset command group (#214)
- cli: add file-level progress output for add and check --fix (#213)
- check: add --remove-legacy flag to delete source files after conversion (#212)
Fix
- scan: normalize filenames to lowercase with dashes (#211)
v0.4.4 (2026-03-07)
Feat
- scan: batch and summarize repeated warnings (#194)
- add: accept multiple paths like git add (#189)
- add: support tabular parquet as auxiliary assets (#190)
Fix
- list: show all assets grouped by item (#196) (#204)
- add: batch repetitive failures by error message (#199) (#205)
- add: accept PMTiles as cloud-native primary asset (#201)
- status: treat FileGDB directories as single assets (#187)
- status: detect and skip symlink cycles (#188)
- add: continue on errors and report all failures at end (#191)
- scan: list specific unrecognized files instead of just count (#185)
- scan: make PATH argument optional, default to current directory (#184)
- scan: remove non-existent --bundle flag reference from suggestion (#183)
v0.4.3 (2026-03-07)
BREAKING CHANGE
- Removes --fix-metadata flag; use --metadata --fix instead.
Feat
- cli: add portolan clean command to remove metadata (#172)
- cli: add --item-id flag to portolan add command (#171)
- check: redesign --fix to work orthogonally with --metadata/--geo-assets (#164)
Fix
- dataset: make add_dataset atomic and track files in-place (#170)
- catalog: unify catalog root detection (#162) (#169)
- status: detect untracked files in uninitialized collections (#167)
- dry-run: prevent network calls in dry-run mode (#168)
- add: support recursive add at catalog root (#166)
- list: add guidance when no items found (#165)
v0.4.2 (2026-03-06)
Feat
- full FileGDB support for scan and add workflows (#157)
- clone: add git-style ergonomics to clone command (#156)
- assets: track ALL files in item directories, not just geo files (#135)
- validation: add collection ID validation and auto-fix (#132)
- ci: add duplicate code detection with pylint R0801 (#130)
- config: add conversion config for format handling overrides (#128)
Fix
- detect FileGDB directories during scan (#153)
- warn and skip non-geospatial CSV files during add (#152)
- cli: remove contradictory dry-run output messages (#150)
- normalize trailing slashes in S3 URLs (#151)
- versions: merge assets with previous version for snapshot model (#149)
- versions: use catalog-root-relative hrefs in versions.json (#126)
Refactor
- catalog: unify config.json and config.yaml as sentinel (ADR-0027) (#131)
v0.4.1 (2026-02-27)
BREAKING CHANGE
- Catalog structure changed. Collections now live at root
level, not inside
.portolan/collections/.
Feat
- Wave 1 documentation alignment (Phases 1-3) (#122)
- cli: promote add/rm to top-level commands (#106)
- check: add --metadata and --geo-assets flags (#105)
- config: add config command and hierarchical configuration system (#104)
- sync: add sync and clone commands for catalog synchronization (#93)
- sync: implement push and pull commands (#92)
- backends: wire JsonFileBackend versioning methods (#90)
- download: add download primitive for cloud object storage (#91)
- upload: port upload primitive from geoparquet-io (#46)
- metadata: implement check metadata handling (#87)
- convert: implement check --fix conversion workflow (#85)
- init: implement portolan init with state detection (#83)
- tooling: add grepai MCP integration for semantic code search (#79)
- models: implement STAC metadata models for catalog, collection, item, schema (#78)
- scan: implement --fix flag for safe auto-fixes (#76)
- scan: add --manual flag for tree-structured manual-resolution output (#72)
- add global --format=json output option (#70)
- backends: implement VersioningBackend protocol and plugin discovery (#71)
- scan: implement portolan scan command (Phase 1 MVP) (#63)
- tests: add directory scan fixtures for portolan scan command (#61)
- tests: consolidate fixtures, migrate to real-world data (#58)
- tests: add real-world test fixtures for orchestration testing (#55)
Fix
- scan: add .parquet to GEO_ASSET_EXTENSIONS (#124)
- catalog: write versions.json to root per ADR-0023 (#123)
- structure: STAC at root level per ADR-0023 (#102)
- emit warnings for permission errors and broken symlinks in scan (#65)
- ci: add pythonpath to pytest config for scripts imports (#56)
- ci: enable workflow_dispatch for release recovery (#52)
v0.4.0 (2026-02-09)
Feat
- validation: PMTiles recommended, not required (#49)
- warn on non-cloud-native formats (#48)
- workflow: add speckit for specification-driven development (#47)
- hooks: add auto-fetch for core dependency docs via gitingest (#44)
Fix
- ci: extract only project version from pyproject.toml (#45)
v0.3.0 (2026-02-07)
Feat
- dataset: implement dataset CRUD operations (#39)
- v0.4 - Metadata extraction and validation framework (#37)
- v0.3 format conversion foundation (#36)
- output: add dry-run and verbose modes to output functions (#32)
- test: add geospatial test fixtures for vector and raster formats (#31)
Fix
- ci: add retry for Python install and suppress hypothesis flaky test warning (#40)
- ci: update codecov configuration with token and slug (#28)
- ci: update nightly workflow for mutmut 3.x API (#25)
- ci: use mutmut junitxml instead of non-existent --json flag (#23)
- ci: repair failing workflows with tag-based releases and placeholder tests (#22)
- docs: update GitHub organization from portolan to portolan-sdi (#21)
v0.2.0 (2026-02-05)
Feat
- cli: add
portolan init command (#20)
v0.1.3 (2026-02-05)
Fix
- docs: use absolute GitHub URL for ADR link in roadmap
v0.1.2 (2026-02-04)
Fix
- ci: handle commitizen exit code 16 (NO_PATTERN_MAP)
- ci: use commit SHA for GitHub release target
v0.1.1 (2026-02-04)
Fix
- ci: add --yes flag to commitizen dry-run for first tag
- ci: handle commitizen NO_COMMITS_TO_BUMP exit code gracefully