Releases: pleasantone/gpxsheet
Releases · pleasantone/gpxsheet
v1.1.1
Immutable
release. Only release title and notes can be modified.
v1.1.0
Immutable
release. Only release title and notes can be modified.
1.1.0 (2026-06-12)
Features
- frontend: add footer with project links (#45) (d52934e)
- frontend: add OSM, cue-sheet and speed toggles to the Table tab (c293d1c)
- frontend: clearer job feedback (submitting → processing → ready) (0c717ba)
- frontend: Generate button for Table mode (parity with Sheet) (7d7f247)
- frontend: warm analysis on upload in both modes (acca68c)
- gpx: harvest Garmin BaseCamp route geometry and via stops (f06c76f)
- gpx: harvest Garmin BaseCamp route geometry and via stops (1959804)
- gpx: lift named plain route points to waypoints (1254250)
- service: background-render mode + queue position for HF (#47) (2794735)
- service: per-job performance instrumentation (cde3de5)
- table: add a Road column from OSM segment names (3f0020c)
- table: add a turn-by-turn cue sheet (--cue) (4a50881)
- table: add timing engine (ETA, layover, fuel distance, sun) (9aa03e5)
- table: add waypoint classifier ported from GPXtable (d6972f0)
- table: boundary stops span both days; add Route.day_names (f5a9aa0)
- table: native route table renderer on the analysis graph (f2a70e9)
- table: per-day sections for multi-track routes (4657e51)
- table: variable ETA from OSM speed limits (--speed overrides) (f7d558f)
- table: wire CLI and service to the native route table (3e4fab5)
Bug Fixes
- analysis: label reassurance markers by along-route distance (d75e4ca)
- enrich: make the OSM fuel query best-effort (2f385cd)
- enrich: make the OSM fuel query best-effort (37ea2b4)
- frontend: auto-generate the table when entering the Table tab (336f6d2)
- render: cap decisions only for the preview/strip overviews (cfe946e)
- service: surface gpxsheet INFO logs (perf) under uvicorn (34d0ee1)
Performance
- analysis: fix O(markers·waypoints·points) reassurance blowup (7685812)
- render: bound decision-flooded routes so renders can't hang (a0355d5)
- service: cache the analysis core; one OSM pass per (gpx, osm) (67b5f1b)
Refactoring
- analysis: split cacheable core from per-request derivation (b3a64f3)
- table: drop GPXtable-style knobs; remove ignore_times no-op (ac941cd)
- table: drop the gpxtable runtime dependency (c54957e)
Documentation
- basecamp: use absolute GitHub links so mkdocs --strict passes (8a1144c)
- claude: drop rtk note from Bash gotchas (5c4e36c)
- claude: note Bash gotchas (blocked sleep, rtk, live-OSM sandbox) (83c9218)
- document the route table, slim the README, de-milestone (9aab09b)
- remove stale planning docs and de-duplicate documentation (b774e7d)
- remove stale planning docs and de-duplicate documentation (6c52785)
- route table coverage, README slim-down, de-milestone (46316e8)
- table: add GPXtable improvement suggestions (forward direction) (eb806ca)
- table: document the native route table; add OSM-on tests (ad58d4b)
- table: document variable speed, road column, cue, multi-day (eef3bae)
- table: mark day-names and boundary-stop polish done (71759e1)
- table: mark NEW_TABLE_PLAN complete (860518e)
- table: plan native route table on the analysis graph (249838d)
- todo: add planner GPX support and interactive OSM map items (e23268d)
v1.0.0
Immutable
release. Only release title and notes can be modified.
1.0.0 (2026-06-11)
Features
- add full-stack dev workflow (Redis + MinIO in Docker, Python on host) (b285376)
- add GPXtable route tables alongside map sheets (208b93b)
- add Python 3.14 support and promote it to default (852630c)
- add Python 3.14 support and promote it to default (7263199)
- add React+Vite web UI bundled with FastAPI service (c14c44b)
- deploy: Hugging Face Space deployment (build-from-source) (050c0e2)
- deploy: Hugging Face Space deployment (build-from-source) (c25c8f2)
- deploy: use HF Trusted Publishing (OIDC), drop HF_TOKEN (232eceb)
- frontend: add landing-page guide with example output (ad3662b)
- frontend: brand the SPA header and favicon with the route glyph (7ab207c)
- frontend: brand the SPA header and favicon with the route glyph (49ca719)
- frontend: make the SPA an installable home-screen web app (df38f7f)
- frontend: make the SPA an installable home-screen web app (d79e81a)
- service: fail loudly when the OSM cache dir isn't writable (e3294f2)
- service: fail loudly when the OSM cache dir isn't writable (012ab77)
- service: sign first-party SPA token instead of trusting headers (46e12bd)
- service: sign first-party SPA token instead of trusting headers (0eac92d)
- service: trust first-party same-origin SPA, key for everyone else (0bd6e6f)
- service: trust first-party same-origin SPA, key for everyone else (dcf9f2f)
Bug Fixes
- build frontend before packaging so PyPI wheel includes SPA assets (e7bb572)
- ci: stop the e2e smoke flake by disabling OSM in the smoke run (cb0ef87)
- ci: stop the e2e smoke flake by disabling OSM in the smoke run (bd0aff1)
- deploy: upload only build inputs to the HF Space (3f12815)
- deploy: upload only build inputs to the Space, not the whole repo (4058329)
- deploy: use a valid HF colorFrom value in Space frontmatter (2fe9a1a)
- deploy: valid HF Space colorFrom value (bf6d247)
- enrich: make osmnx cache dir configurable so containers can enrich (6d1dcd9)
- enrich: make osmnx cache dir configurable so containers can enrich (0186eab)
- fire analyze and preview jobs independently instead of Promise.all (5b38c21)
- frontend: add download icon to table-mode download buttons (d2a95b1)
- service: allow configured frame-ancestors so the HF iframe can embed (f320b31)
- service: allow configured frame-ancestors so the HF iframe can embed (e69a927)
- service: deliver first-party token via meta tag, not inline script (bcd960d)
- use 127.0.0.1 in Vite proxy target instead of localhost (e4bd11d)
Refactoring
- frontend: portability, result-url auth, ESLint, and dedup (912c5a3)
Documentation
- document dev modes; bind infra ports to loopback (8ce7659)
- how to enable OSM/Overpass in web sessions (f0afa62)
Chores
- release 1.0.0 (763baad)
v0.3.0
Immutable
release. Only release title and notes can be modified.
0.3.0 (2026-06-11)
⚠ BREAKING CHANGES
- stage3: public-API consistency pass (v0.3.0)
Features
- stage3: public-API consistency pass (v0.3.0) (5649dac)
- waypoint label improvements, defaults cleanup, CLAUDE.md update (#21) (a0317fc)
Bug Fixes
- stage-5: web-service hardening (035678e)
Refactoring
- remove dead off variable from slice_route; fix stale comments (0d21fc3)
- stage-4: dead code & type clarity cleanup (f708c12)
- stage-6: decompose long functions, log broad excepts, promote scoring (94485ce)
- stage1: centralize constants and shared geometry (fb45470)
- stage2: unify pagination engine in paginate.py (03bfec9)
- unify CLI layouts, remove rebase, add portrait progress bar (08b8d72)
Documentation
v0.2.1
Immutable
release. Only release title and notes can be modified.
0.2.1 (2026-06-10)
Features
- analysis: drop off-route waypoints past a cross-track cutoff (9a2b843)
- analysis: drop off-route waypoints past a cross-track cutoff (4cd4a5f)
- render: reproducible fonts + vendored symbol glyphs (504a780)
- render: reproducible fonts + vendored symbol glyphs (740653e)
Refactoring
- profiles: drop unused significance-score constants (93d4c50)
- strip: extract label placement into a pure, tested module (3fd28b2)
- strip: extract label placement into a pure, tested module (4c99327)
Documentation
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)
v0.1.1
0.1.1 (2026-06-09)
Features
- service: security hardening + audit findings (37e8f1e)
Documentation
- drop milestone references from comments, README, and CLAUDE.md (4a76e0e)
- expand CLAUDE.md test-data section with sample GPX breakdown (bc40eab)
- log Phase 2 TODOs (security audit, magic numbers, A4, preview, front end) (f47cdcd)
- move personal/workflow notes out of CLAUDE.md (65b8ef5)
- queue nav-detail TODOs (roads-not-taken, roundabout exits) (d231ec6)
- TODO to make portrait + OSM the default modes (144c6d6)
Build System
- use httpx2 for the Starlette TestClient (45d8e55)