Skip to content

Releases: pleasantone/gpxsheet

v1.1.1

12 Jun 15:21
Immutable release. Only release title and notes can be modified.
74e804f

Choose a tag to compare

1.1.1 (2026-06-12)

Bug Fixes

  • service: key first-party identity off the token, not client IP (9ba37eb)
  • service: key first-party identity off the token, not client IP (8376ef3)

v1.1.0

12 Jun 14:26
Immutable release. Only release title and notes can be modified.
d5830b4

Choose a tag to compare

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

11 Jun 23:31
Immutable release. Only release title and notes can be modified.
21c646c

Choose a tag to compare

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

v0.3.0

11 Jun 09:06
Immutable release. Only release title and notes can be modified.
e462247

Choose a tag to compare

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

  • add show_branches to web-api parameter table (6e1b509)
  • note remote/web sandbox setup in CLAUDE.md (ee6a2fe)
  • trim CLAUDE.md to load-bearing non-obvious facts (0f77895)

v0.2.1

10 Jun 21:37
Immutable release. Only release title and notes can be modified.
c7e60ad

Choose a tag to compare

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

  • move PRODUCT.md to docs (add876c)
  • product: record rendering-backend analysis (matplotlib vs SVG) (1665c5a)
  • sync TODO.md and PRODUCT.md with as-built state (e62a1dc)
  • sync TODO.md and PRODUCT.md with as-built state (c1c8802)

v0.2.0

10 Jun 14:56
Immutable release. Only release title and notes can be modified.
4645f7e

Choose a tag to compare

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

09 Jun 03:47
56d44dd

Choose a tag to compare

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)