v0.2.0
Immutable
release. Only release title and notes can be modified.
0.2.0 (2026-06-10)
⚠ BREAKING CHANGES
- api: gpxsheet.generate_pdf and gpxsheet.generate_strip are removed. Use gpxsheet.render(layout=..., format=...) instead (layout defaults to portrait). gpxsheet.validate now returns a ValidationReport, not None.
- service: the web API is reorganized. POST /v1/jobs, the synchronous POST /v1/analyze and POST /v1/preview, and the use_osm/kind request fields are removed. Submit jobs to POST /v1/render, /v1/analyze, or /v1/validate with the GPX and parameters as multipart form fields; poll GET /v1/jobs/{id} and fetch GET /v1/jobs/{id}/result.
- osm: the use_osm parameter (library + CLI --osm/--no-osm + service GenerateParams.use_osm) and the GPXSHEET_ALLOW_OSM service setting are removed; OSM enrichment always runs. The [osm] install extra is removed (osmnx is now a core dependency). The preview --dpi flag is removed.
Features
- api: unify the library API into render/analyze/validate (31ece70)
- display named GPX waypoints on the strip (aa6d305)
- enrich: down-weight straight "Continue onto" residential changes (58f7988)
- enrich: promote nameless high-degree forks to decisions (be22f22)
- enrich: stabilize durable-run detection near MIN_ROAD_RUN_MILES (391b008)
- layout: nudge START/END-coincident markers off the endpoint (e8acca8)
- layout: relax stylized turn accumulation to curb ribbon curl (b1675e8)
- osm: make OSM enrichment intrinsic and a core dependency (a55e834)
- record unpaved & ferry spans and render styled ribbon stretches (36bbac0)
- render: auto-fit decisions per lane (decisions_per_lane=0/None) (8b43eea)
- render: auto-fit decisions per lane (decisions_per_lane=0/None) (c8b9ee9)
- render: default decisions_per_lane to auto-fit (8c954cc)
- render: default decisions_per_lane to auto-fit (c205554)
- render: make landscape honor decisions_per_lane (b0bab60)
- service: redesign web API around typed async job endpoints (8df0149)
- strip: alternate label sides to de-collide dense strips (0bac099)
- strip: make named reassurance (town) labels more prominent (fedf270)
- strip: symbol glyphs and mileage on fuel/food/ferry markers (bc148a3)
Bug Fixes
- enrich: count only outgoing spurs as roundabout exits (903a96d)
- enrich: fall back to drive_service so remote roads still enrich (a6b8398)
- enrich: restrict Continue-onto penalty to unambiguous cul-de-sac suffixes (8ef0c5e)
- enrich: stop nameless-fork promotion flooding twisty roads (239c2aa)
Refactoring
- render: name the renderer colors instead of inline hex (88c4971)
- render: named colors + landscape honors decisions_per_lane (452299f)
Documentation
- add front-end web API integration guide (10c8946)
- pdf: drop stale cue-zone wording from pdf docstrings (0a0eb63)
- publish library + web API documentation to ReadTheDocs (83b5ddd)
- publish library + web API documentation to ReadTheDocs (26262ed)
- todo: mark OSM robustness + #7/#8/#9 validated and fixed (5fef18d)
- todo: note osmnx thin-polygon enrichment fallback (ca10be7)
- todo: note waypoint-projection cutoff + name-prefix revisit (feedd34)
- todo: record shipped polish + remaining ground-truth tuning (0bd620f)