Releases: brawer/osmdiffs
Releases · brawer/osmdiffs
Release list
v0.8.5
Immutable
release. Only release title and notes can be modified.
v0.8.4
Immutable
release. Only release title and notes can be modified.
0.8.4 (2026-09-13)
🆕 Enhancements
- draw the ATP↔OSM connector line in conflated.pmtiles at high zoom (#775) (#778) (2f082b3)
- minimal conflated-overview tiles; full-tag detail for unmatched too (#783) (f91715f)
- pipeline: make conflated.parquet + provenance BOM reproducible (#792) (344746d), closes #791
- pipeline: normalise --run_id instead of rejecting unsafe values (#795) (892c4cc), closes #791
- publish: dated /data/ uploads + Frictionless datapackage.json (#794) (8bafa02)
- render conflated.parquet into its own PMTiles archive (#709) (#777) (3b443b4)
📚 Documentation
- document temporary download location for current output (#772) (d7ccbd5)
- record the /data/ edge-caching contract for the Bunny CDN (#790) (e8f5548)
- split documentation index by audience (#773) (0dcbf50)
- turn pipeline diagram's processing steps into real boxes (#774) (98dbf86)
🚧 Maintenance
- ci: Bump taiki-e/install-action from 2.86.2 to 2.86.6 (#771) (3e6b3ab)
- ci: Bump taiki-e/install-action from 2.86.6 to 2.87.7 (#789) (0ecc40d)
- ci: Bump taiki-e/install-action from 2.87.7 to 2.87.8 (#800) (466c296)
- ci: Bump the codeql group with 3 updates (#770) (f66f02b)
- ci: Bump the codeql group with 3 updates (#786) (414f64b)
- deps: Bump boto3 from 1.43.75 to 1.43.83 in /scripts in the uv group (#784) (e69ec8b)
- deps: Bump boto3 from 1.43.83 to 1.43.89 in /scripts in the uv group (#799) (b1f750a)
- deps: Bump boto3 in /scripts in the uv group (b1f750a)
- deps: Bump boto3 in /scripts in the uv group (e69ec8b)
- deps: bump chacha20 0.10.1 -> 0.10.2 (yanked) (#782) (c2f8abe)
- deps: Bump the cargo group across 1 directory with 34 updates (#805) (81d0152)
- deps: Bump the cargo group with 21 updates (#785) (3d19965)
- ignore .DS_Store (#798) (ce7c5c1)
- merge conflated tile extraction into one scan (#780) (14027d1)
- re-vendor osm-testdata grid at 98a9b32, drop redundant unit test (#781) (53393d4)
- release: adopt release-please for version bumps and CHANGELOG.md (#806) (0a3ab6a)
- rename crate and binary osm-diffs -> osmdiffs (1fe3f31)
- rename crate and binary osm-diffs → osmdiffs (#803) (1fe3f31)
- sbom: merge tippecanoe.jq/tile-join.jq into one template (#779) (d265328)
- tables: dedupe encode_wkb in geometry tables (#706) (#797) (cdfba0f)
- tables: use crate::geometry::encode_wkb in geometry tables (#706) (cdfba0f)
- update in-repo references for the move to brawer/osmdiffs (#802) (a6ee6e2)
- upload: split S3 into PUBLIC_S3_* and INTERNAL_S3_* buckets (#793) (30610c7), closes #791
v0.8.3
What's Changed
🆕 Enhancements
- feat: log import_osm's internal sub-steps individually by @brawer in #761
- feat: log available_parallelism() and version, structured, at startup by @brawer in #765
🐞 Bugs
- fix: log unbuildable relation geometry at WARN, not ERROR by @brawer in #762
- fix(validate): handle a genuinely missing conflated.parquet cleanly by @brawer in #766
📚 Documentation
- docs: add PRODUCTION.md, from the #711 --mem-limit sweep results by @brawer in #763
- docs: say 'OpenStreetMap planet', not just 'planet' by @brawer in #764
- docs: clarify the Hetzner volume quota is project-wide, not per-volume by @brawer in #767
- docs: fresh-eyes pass over docs/ and README by @brawer in #768
🚧 Maintenance
Full Changelog: v0.8.2...v0.8.3
v0.8.2
What's Changed
🆕 Enhancements
🔗 Dependencies
- chore(deps): Bump rust from 1.97.1-alpine3.23 to 1.98.0-alpine3.23 by @dependabot[bot] in #756
📚 Documentation
- docs: document reliance on Mozilla's CA trust store, not the OS's by @brawer in #757
- docs: update pipeline-step docs for the HTTPS planet download by @brawer in #758
- docs: mention crypto:catrust:* properties in scripts/sbom/README.md by @brawer in #759
🚧 Maintenance
- chore: rename scripts/test-branch-on-hetzner to test-on-hetzner by @brawer in #753
- chore(release): bump version to 0.8.2 by @brawer in #760
Full Changelog: v0.8.1...v0.8.2
v0.8.1
What's Changed
🆕 Enhancements
- feat(scripts): add bucket create/destroy for ephemeral S3 test buckets by @brawer in #736
- feat(scripts): adopt uv real dependencies + tests for test-branch-on-hetzner by @brawer in #738
- feat: add
validatesubcommand to cloud_test.py by @brawer in #743 - feat: add advisory checks to
validateby @brawer in #744 - feat: destroy cost estimate, create prints teardown command, list surfaces buckets by @brawer in #747
🐞 Bugs
- fix(ci): auto-label docs: PRs as documentation by @brawer in #734
- fix: teardown_cost_note crashed cmd_destroy before deleting anything by @brawer in #748
- fix: resolve #749 -- osm.modified.timestamp is milliseconds, and decode Feature.id in error messages by @brawer in #750
- fix: check_geometry_validity failed against real output by @brawer in #751
🔗 Dependencies
- chore(ci): Bump taiki-e/install-action from 2.86.1 to 2.86.2 by @dependabot[bot] in #741
- chore(deps): Bump quinn-proto from 0.11.16 to 0.11.17 in the cargo group by @dependabot[bot] in #742
📚 Documentation
- docs(release): bump minor, not major, for breaking changes before 1.0.0 by @brawer in #733
- docs: mention scripts/ tests in TESTING.md and CONTRIBUTING.md by @brawer in #740
- docs: mention regional-extract smoke testing and validate in TESTING.md by @brawer in #746
🚧 Maintenance
- ci: add shellcheck as a CI gate by @brawer in #735
- chore(deps): track scripts/'s Python dependencies with Dependabot by @brawer in #739
- test: condense #743's hard-check tests by @brawer in #745
- chore(release): bump version to 0.8.1 by @brawer in #752
Full Changelog: v0.8.0...v0.8.1
v0.8.0
What's Changed
🆕 Enhancements
- feat(ci): add cargo-deny for license, advisory, and bans checks by @brawer in #727
- feat(scripts): pull + run osm-diffs images containerized on Hetzner by @brawer in #725
🐞 Bugs
🚧 Maintenance
- fix!: remove OSM changeset from pipeline output by @brawer in #731
- chore(release): bump version to 0.8.0 by @brawer in #732
Full Changelog: v0.7.1...v0.8.0
v0.7.1
What's Changed
🐞 Bugs
- Bump h2 to 0.4.16, fixing RUSTSEC-2026-0258 by @brawer in #714
- Bump s2 to 0.2.0, fixing RUSTSEC-2026-0196/0197 (cgmath) by @brawer in #717
- Bump librqbit to 9.0.0, fixing 4 of the remaining RUSTSEC findings by @brawer in #718
- fix(osm): self-heal a missing .meta.json sidecar instead of erroring by @brawer in #723
🔗 Dependencies
- Build(deps): Bump the codeql group with 3 updates by @dependabot[bot] in #715
- Build(deps): Bump taiki-e/install-action from 2.85.11 to 2.86.1 by @dependabot[bot] in #716
- chore(deps): Bump the cargo group with 50 updates by @dependabot[bot] in #721
🚧 Maintenance
- chore: adopt Conventional Commits for PR titles by @brawer in #719
- docs: clarify OSSF Scorecard vulnerability findings aren't private-disclosure worthy by @brawer in #720
- Bump version to 0.7.1 by @brawer in #724
Full Changelog: v0.7.0...v0.7.1
v0.7.0
What's Changed
🆕 Enhancements
- Cut conflate over to OsmFeatureIndex by @brawer in #665
- conflated.parquet: make it valid GeoParquet 2.0-rc.1 by @brawer in #688
🐞 Bugs
- ci: Fix git commit hash for Swatinem/rust-cache by @brawer in #630
- Give LineStitcher::compact() a ring-aware floor for closed loops by @brawer in #641
- cloud_test.py: fix AttributeError when up calls start by @brawer in #672
- ATP phase: preserve real (non-point) geometry by @brawer in #692
- GeometryTally::log: take target as an explicit parameter by @brawer in #693
🔗 Dependencies
- Build(deps): Bump taiki-e/install-action from 2.85.10 to 2.85.11 by @dependabot[bot] in #625
📚 Documentation
- docs/SUPPLY_CHAIN_SECURITY.md: document that we now reach SLSA Build L3 by @brawer in #609
- docs/SUPPLY_CHAIN_SECURITY.md: shorten the SLSA L3 paragraph by @brawer in #611
- docs/RELEASING.md: fix release.yml/release-build.yml split after #603 by @brawer in #615
- Document Feature and RelationMember fields in feature.proto by @brawer in #632
- Add Documentation category to auto-generated release notes by @brawer in #633
- Link SECURITY.md to SUPPLY_CHAIN_SECURITY.md by @brawer in #652
- docs/SECURITY.md: use an absolute link to SUPPLY_CHAIN_SECURITY.md by @brawer in #653
- docs/SUPPLY_CHAIN_SECURITY.md: rewrite the closing paragraph by @brawer in #658
- docs/SUPPLY_CHAIN_SECURITY.md: fix dead event-stream link by @brawer in #659
- Add docs/CONTRIBUTING.md and docs/TESTING.md by @brawer in #674
- docs/CONTRIBUTING.md: drop coverage-threshold detail by @brawer in #675
- docs/CONTRIBUTING.md: spell out CI, link to test.yml by @brawer in #676
- README: don't commit to MapRoulette specifically, link to #696 by @brawer in #697
- docs/RELEASING.md: drop #588 from the still-open known-gaps list by @brawer in #695
- Document why places and tables are separate, fix stale PlaceIndex reference by @brawer in #698
- Add docs/TECHNICAL_DESIGN.md by @brawer in #707
🚧 Maintenance
- ci: only save the rust-cache target/ cache from main by @brawer in #606
- verify-release.sh: check runDetails.builder.id, not externalParameters by @brawer in #608
- ci: note why sccache is kept alongside the target/ cache by @brawer in #610
- release-build.yml: fix pre-existing shellcheck warnings (via actionlint) by @brawer in #612
- test-container.yml: fix shellcheck warnings reported by actionlint by @brawer in #613
- Remove fuzz/ target for GeoJSON import by @brawer in #614
- Add src/memstats.rs: process/cgroup memory snapshots by @brawer in #617
- pipeline: log a memory snapshot at the start/end of each step by @brawer in #618
- pipeline: warn when nearing the cgroup memory limit by @brawer in #619
- logging: support structured key-value fields in the JSON logger by @brawer in #622
- pipeline: log step elapsed time via structured fields by @brawer in #623
- Extract shared sorted-u64-key lookup into src/tables/sorted_u64_index.rs by @brawer in #624
- Fall back to build_line for closed ways too degenerate to be a ring by @brawer in #628
- Clean up .gitignore by @brawer in #629
- Add centroid_s2_cell_id spatial sort key to FeatureToIndex by @brawer in #631
- Expose OSMHeader provenance metadata from BlobReader by @brawer in #634
- Capture and log AllThePlaces run provenance metadata by @brawer in #640
- Add test for an inner ring touching the outer at two points by @brawer in #643
- Assemble and embed a CycloneDX provenance BOM into conflated.parquet by @brawer in #642
- Fix crate::provenance to correctly model the CycloneDX 1.7 data BOM by @brawer in #647
- Rename PLANET_PBF_FILENAME to match upstream's planet-latest.osm.pbf by @brawer in #649
- Compute and embed the AllThePlaces zip's SHA-256 hash (#646, ATP half) by @brawer in #650
- Compute and embed the OSM planet file's SHA-256 hash (#646, OSM half) by @brawer in #654
- Add OsmFeatureIndex: spatial index over OSM Feature protos by @brawer in #656
- Build OsmFeatureIndex in import_osm(), still unconsumed by @brawer in #660
- Add OsmCandidate + score_osm_candidate, additive by @brawer in #661
- Log OsmFeatureIndex::create()'s counts, sizes, and phase timing by @brawer in #664
- Add scripts/test-branch-on-hetzner: automate testing branches on Hetzner Cloud VMs by @brawer in #668
- Add scripts/test-branch-on-macos: quick local iteration by @brawer in #670
- cloud_test.py: raise LimitNOFILE for the osm-diffs-run unit by @brawer in #671
- Rename test-container.yml's workflow to "Container Tests" by @brawer in #673
- Log output artifact sizes for import_atp and conflate.write by @brawer in #677
- Cut suggest_edits over to conflated.parquet (PR 5 of #655) by @brawer in #678
- Delete PlaceIndex; conflate() reads ATP via a plain sequential reader by @brawer in #680
- tests: assert on conflated.parquet's actual content by @brawer in #679
- Delete the old Place-based OSM pipeline (PR 6 of #655) by @brawer in #681
- Upload conflated.parquet and pipeline.log to S3; add docs/LOGGING.md by @brawer in #683
- Consolidate external-sort chunk sizes onto EXTERNAL_SORT_CHUNK_BYTES (#657) by @brawer in #685
- Populate Place.fetched from ATP's spider:collection_time by @brawer in #686
- Rewrite conflated.parquet's schema: modified/fetched, members, non-null tags by @brawer in #687
- Move src/atp into src/pipeline/atp by @brawer in #691
- Consolidate the osm_id*10+{type} encode/decode into shared helpers by @brawer in #694
- Move geostats.rs into the geometry module by @brawer in #699
- Move provenance.rs into pipeline by @brawer in #702
- Move memstats/logging/s2_util into pipeline by @brawer in #703
- Clean up #[allow(unused)]: drop stale ones, delete dead code, keep modified() by @brawer in #705
- edits.rs: fix dangling reference to a since-removed Place::to_geojson by @brawer in #710
- Bump version to 0.7.0 by @brawer in #712
Full Changelog: v0.6.10...v0.7.0
v0.6.10
What's Changed
🐞 Bugs
- Fix all clippy warnings by @brawer in #578
- Fix clippy warnings in generated id_tagging_schema.rs by @brawer in #579
- Fix flaky logging test: search for our records instead of assuming exact position/count by @brawer in #593
🔗 Dependencies
- Group Arrow and Parquet crate updates in Dependabot by @brawer in #570
- Build(deps): Bump actions/attest from 4.2.1 to 4.2.2 by @dependabot[bot] in #573
- Build(deps): Bump the codeql group with 3 updates by @dependabot[bot] in #572
- Build(deps): Bump taiki-e/install-action from 2.85.7 to 2.85.10 by @dependabot[bot] in #574
- Group all cargo dependency updates into a single monthly PR by @brawer in #575
- Build(deps): Bump the cargo group with 17 updates by @dependabot[bot] in #577
🚧 Maintenance
- ci: make clippy step gate on warnings and lint tests by @brawer in #580
- ci: cap test job at 20 minutes by @brawer in #581
- ci: merge the two apt-get install steps into one by @brawer in #583
- ci: remove redundant llvm-tools-preview install step by @brawer in #582
- ci: cache the Cargo registry to speed up dependency fetches by @brawer in #584
- ci: add a coverage floor to the test run by @brawer in #586
- Add structured JSON logging to a file in the working directory by @brawer in #585
- Log warnings/errors for skipped geometry, replace remaining print!/eprintln! by @brawer in #587
- Add release-process and supply-chain-security documentation by @brawer in #590
- Move CODE_OF_CONDUCT.md and SECURITY.md into docs/ by @brawer in #591
- Rename docs/*.md to consistent uppercase filenames by @brawer in #592
- docs/SUPPLY_CHAIN_SECURITY.md: move "overkill?" section to the end, trim BOM section by @brawer in #594
- docs/SUPPLY_CHAIN_SECURITY.md: add Minimal containers section, name SLSA Build L3 by @brawer in #595
- Tighten SUPPLY_CHAIN_SECURITY.md prose, add a supply-chain definition by @brawer in #596
- ci: cache target/ build dir via Swatinem/rust-cache by @brawer in #598
- ci: cancel superseded test runs via a concurrency group by @brawer in #599
- docs/README.md: reflect SUPPLY_CHAIN_SECURITY.md's broader scope by @brawer in #600
- Correct SLSA Build Level claim: we're at L2, not L3 by @brawer in #601
- Split release.yml into caller + reusable workflow: reach SLSA Build Level 3 by @brawer in #603
- ci: cache apt packages (protobuf-compiler, tippecanoe) by @brawer in #602
- Bump version to 0.6.10 by @brawer in #605
Full Changelog: v0.6.9...v0.6.10
v0.6.9
What's Changed
🆕 Enhancements
- Add
mod recordswith a spool file implementation by @brawer in #461 - Construct features from OSM nodes by @brawer in #467
- Construct features from OSM ways, part 1 by @brawer in #468
- Generate
is_area()by @brawer in #476 - Use same logic as iD to decide if a closed way is an area by @brawer in #484
- Construct features from OSM ways, part 2 by @brawer in #486
- Construct features from OSM relations by @brawer in #488
- Add PolygonAssembler to construct multipolygons by @brawer in #493
- Add LineStitcher for stitching LineStrings and MultiLineStrings by @brawer in #496
- Add a coordinate budget to PolygonAssembler by @brawer in #497
- Add GeometryBuilder to combine mixed-type geometries by @brawer in #498
- Add GraphTable::nodes(), a whole-graph breadth-first iterator by @brawer in #499
- Add BlobTable to store variable-length byte blobs keyed by u64 by @brawer in #500
- Add BlobTable::create() for building tables from unsorted input by @brawer in #501
- Write table
osm-index.ways-in-relationsby @brawer in #502 - Index leaf relations by @brawer in #503
- Add BlobTable::iter() by @brawer in #504
- Add file header with magic and record count to record spool files by @brawer in #508
- Add GeometryStore, a mutable disk-spooled map for super-relation geometries by @brawer in #513
- Skeleton for assembling super-relations by @brawer in #514
- Add GraphTable::edge_count by @brawer in #520
- Add GraphTable::node_count by @brawer in #523
🐞 Bugs
- Emit rings in counter-clockwise winding order, add more tests by @brawer in #489
- Assume that closed ways with addresses have area geometry by @brawer in #492
- Fix LineStitcher coordinate-budget compaction by @brawer in #495
- Union non-multipolygon relations instead of nesting-based fill (fixes #533) by @brawer in #536
- Promote a stitched closed loop to a ring/hole (fixes #531) by @brawer in #538
- Drop exact-duplicate ring members instead of letting them self-cancel (fixes #532) by @brawer in #539
- Re-stitch after cutting a self-intersection (fixes #537) by @brawer in #542
- Dedupe duplicate output pieces in LineStitcher (fixes #541) by @brawer in #543
- sbom: locate root dependency entry by ref, not array position by @brawer in #551
- sbom: use the real registry-qualified image name, not a hardcoded default by @brawer in #549
- sbom: fix invalid SPDX license id for sqlite by @brawer in #550
- Remove the container-cleanup workflow by @brawer in #558
- Serialize release.yml runs with a concurrency group by @brawer in #560
- release.yml: fail fast if the pushed tag doesn't match Cargo.toml's version by @brawer in #561
- Support --version / -V on the command-line tool by @brawer in #563
- Support --help / -h on the command-line tool by @brawer in #568
🔗 Dependencies
- Build(deps): Bump ossf/scorecard-action from 2.4.3 to 2.4.4 by @dependabot[bot] in #462
- Build(deps): Bump docker/login-action from 4.4.0 to 4.5.2 by @dependabot[bot] in #464
- Build(deps): Bump taiki-e/install-action from 2.84.0 to 2.85.3 by @dependabot[bot] in #463
- Build(deps): Bump coverallsapp/github-action from 2.3.6 to 2.3.8 by @dependabot[bot] in #465
- Build(deps): Bump vendor/id-tagging-schema from
eb377ebto7ba70f4by @dependabot[bot] in #471 - Build(deps): Bump mozilla-actions/sccache-action from 0.0.10 to 0.0.11 by @dependabot[bot] in #472
- Build(deps): Bump docker/login-action from 4.5.2 to 4.6.0 by @dependabot[bot] in #473
- CI: When checking out source code, also fetch git submodules by @brawer in #474
- Build(deps): Bump rustls from 0.23.42 to 0.23.43 by @dependabot[bot] in #475
- Build(deps): Bump actions/attest from 4.2.0 to 4.2.1 by @dependabot[bot] in #481
- Build(deps): Bump the codeql group with 3 updates by @dependabot[bot] in #480
- Build(deps): Bump taiki-e/install-action from 2.85.3 to 2.85.4 by @dependabot[bot] in #482
- Build(deps): Bump indirect Rust dependencies by @brawer in #483
- Build(deps): Bump clap from 4.6.4 to 4.6.5 by @dependabot[bot] in #505
- Build(deps): Bump time from 0.3.54 to 0.3.55 by @dependabot[bot] in #517
- Build(deps): Bump taiki-e/install-action from 2.85.4 to 2.85.7 by @dependabot[bot] in #518
- Build(deps): Bump indirect dependencies by @brawer in #524
- Build(deps): Bump clap from 4.6.5 to 4.6.6 by @dependabot[bot] in #564
🚧 Maintenance
- CI: Only push cryptographically signed SBOMs by @brawer in #460
- Rename RecordsReader to RecordReader, RecordsWriter to RecordWriter by @brawer in #466
- Vendor id-tagging-schema v7.0.1 by @brawer in #469
- CI: Configure Dependabot to track updates to git submodules by @brawer in #470
- Revert "CI: When checking out source code, also fetch git submodules … by @brawer in #477
- Revert "CI: Configure Dependabot to track updates to git submodules (… by @brawer in #478
- Revert "Vendor id-tagging-schema v7.0.1 (#469)" by @brawer in #479
- Remove an unused function from generate_id_tagging_schema.py by @brawer in #485
- Improve spatial indexing of MultiLines and MultiPolygons by @brawer in #490
- Simplify generated
is_area()implementation by @brawer in #491 - Add id-tagging-schema to SBOM by @brawer in #494
- Rename index() to assemble(), for clarity by @brawer in #506
- Refactoring: Clean up OSM feature assembly to clarify code structure by @brawer in #507
- Rename CoordsMap to CoordTable and document its file format by @brawer in #509
- Document StringPool and its file format, add test coverage by @brawer in #510
- Add GeometryTable wrapping BlobTable for WKB-encoded geometries by @brawer in #511
- Roll back CodeQL suggestion by @brawer in #512
- Document file formats and fill test gaps in src/tables by @brawer in #515
- Add file header (magic + count) to U64Set by @brawer in #516
- Docs: Clarify usage of U64Set by @brawer in #519
- Expose relation graph in Prunings by @brawer in #521
- Change format of super_relations table by @brawer in #522
- Build the geometry of recursive super-relations by @brawer in #525
- Add a comment to is_area about special-casing
addr:*by @brawer in #527 - Refactoring: Make geometry a top-level module by @brawer in #528
- Vendor osm-testdata grid/ fixtures and declare them in the...