Skip to content

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 20:59
· 496 commits to main since this release
6e639a1

What's Changed

๐Ÿš€ Features

  • Modernize to a strict-TypeScript ESM package built with Vite by @dirkwa in #34
  • Cover the track API routes with end-to-end tests by @dirkwa in #36
  • Publish to npm from the release tag by @dirkwa in #39
  • Require a release-notes label on every pull request by @dirkwa in #42
  • refactor: extract a TrackStore interface by @dirkwa in #43
  • feat(sqlite): add an opt-in node:sqlite position store by @dirkwa in #44
  • feat(config): choose the track source with one setting by @dirkwa in #45
  • feat: split tracks into segments across gaps in recording by @dirkwa in #47
  • feat(api): serve the recording time of each track point by @dirkwa in #50
  • feat(api): say which track belongs to the own vessel by @dirkwa in #51
  • feat: warn when positions arrive from several sources by @dirkwa in #52
  • feat(api): serve per-point times on the all-vessels listing by @dirkwa in #53
  • test: add an end-to-end suite against a real server and QuestDB by @dirkwa in #54
  • ci: add a CodeRabbit configuration by @dirkwa in #57
  • feat: discard positions implying an impossible speed by @dirkwa in #65
  • feat: pause recording while the vessel is not under way by @dirkwa in #66
  • feat: answer queries from a history provider and the store together by @dirkwa in #73
  • feat!: read bbox in GeoJSON coordinate order by @dirkwa in #74
  • feat: serve the v2 Track API from the plugin's store by @dirkwa in #76
  • feat: give the plugin an app store icon and display name by @dirkwa in #78
  • feat!: record to SQLite always, keep the own vessel indefinitely by @dirkwa in #86
  • feat: name tracks the way a plotter does by @dirkwa in #88
  • feat: simplify track geometry by shape, not just by time by @dirkwa in #89
  • feat: add a webapp for browsing recorded tracks by @dirkwa in #90
  • feat: read and write tracks as GPX by @dirkwa in #91
  • refactor: parse GPX with a real XML parser by @dirkwa in #92
  • feat: export a track as GPX from the webapp by @dirkwa in #93
  • feat: remember vessel names so tracks stay named after a restart by @dirkwa in #107

๐Ÿ› Fixes

  • Serve /self/track and honour the time-window query parameters by @dirkwa in #37
  • Make bootstrapFromHistory actually restore a track by @dirkwa in #38
  • fix(sqlite): honour resolution when storing positions by @dirkwa in #46
  • test(e2e): exercise the History API, not a provider's storage by @dirkwa in #56
  • fix: match bbox on any position and honour maxPoints by @dirkwa in #79
  • fix: reconcile with the History API through the Track API provider by @dirkwa in #83
  • fix: do not 404 a vessel known only to a history provider by @dirkwa in #97
  • fix: serve the webapp as static files and show its icon by @dirkwa in #101
  • fix: make GPX export work from the webapp, and ship the icon where it is looked for by @dirkwa in #103
  • fix: reject malformed bbox and radius with 400 instead of 404 or 200 by @dirkwa in #109
  • fix: reject an unknown query parameter instead of ignoring it by @dirkwa in #110

๐Ÿ“– Documentation

  • Correct the bbox coordinate order and document the time parameters by @dirkwa in #40
  • docs: correct why several position sources reach the plugin by @dirkwa in #55
  • docs: describe what the three storage modes actually do by @dirkwa in #75
  • docs: say what v1 and v2 are each for by @dirkwa in #84

๐Ÿ“ฆ Dependencies

  • chore(deps): bump actions/stale from 10 to 11 by @dependabot[bot] in #35
  • chore(deps-dev): bump vitest from 3.2.7 to 4.1.10 by @dependabot[bot] in #61
  • chore(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #59
  • chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #58
  • chore(deps): bump the minor-and-patch group with 2 updates by @dependabot[bot] in #60
  • chore(deps-dev): bump vite from 7.3.6 to 8.2.2 by @dependabot[bot] in #63
  • chore(deps-dev): bump vite-plugin-dts from 4.5.4 to 5.0.3 by @dependabot[bot] in #62
  • chore(deps): bump the minor-and-patch group with 4 updates by @dependabot[bot] in #67
  • build: type-check against the same Node the server does by @dirkwa in #70
  • chore(deps): bump the minor-and-patch group with 3 updates by @dependabot[bot] in #71
  • chore(deps): bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #99
  • chore(deps-dev): bump vitest from 4.1.11 to 5.0.0 by @dependabot[bot] in #95
  • chore(deps): bump the minor-and-patch group with 3 updates by @dependabot[bot] in #113

Other

  • Bootstrap self-vessel track from History API on startup by @Peter-Petrik in #13
  • fix: resolve self alias to selfContext in track handler by @dirkwa in #19
  • chore(pkg): expose build and test scripts from the root package by @dirkwa in #20
  • ci: add plugin-ci workflow, dependabot and gitattributes by @dirkwa in #21
  • ci: generate release notes from tags by @dirkwa in #22
  • docs: add AGENTS.md for contributors and AI assistants by @dirkwa in #23
  • fix: guard against null navigation.position values by @KEGustafsson in #16
  • chore: add stale workflow for awaiting-response issues by @msallin in #15
  • perf: gate JSON.stringify behind debug.enabled by @msallin in #14
  • Group the generated release notes by category by @dirkwa in #41

New Contributors

Full Changelog: v2.0.2...v3.0.0