Repository navigation
What's Changed
- feat(tailscale): serve on any HTTPS port by @JonasHeinickeBio in #75
- feat(chat): conversations survive a restart or redeploy by @JonasHeinickeBio in #76
- feat(optimizer): optional sideways detours (off by default) by @JonasHeinickeBio in #77
- feat(chat): a route from the chat fills the Plan form by @JonasHeinickeBio in #79
- feat(frontend): click any point on the map and choose where it goes by @JonasHeinickeBio in #80
- feat(scoring): score the traffic estimate when the request avoids busy roads by @JonasHeinickeBio in #81
- feat(scoring): surface preferences are scored, from the engine's own surface shares by @JonasHeinickeBio in #82
- feat(chat): new chat, earlier conversations and delete in the web panel by @JonasHeinickeBio in #83
- feat(weather): estimate the wind's effect on the travel time by @JonasHeinickeBio in #84
- feat(pois): sight stops for loops by @JonasHeinickeBio in #85
- feat(health): a service status dot in the page and the sight lookup in /readyz by @JonasHeinickeBio in #86
- feat(export): the forecast in the GPX and GeoJSON files by @JonasHeinickeBio in #87
- feat(frontend): an elevation profile for the route shown by @JonasHeinickeBio in #88
- feat(pois): opening hours checked against the time you pass a sight by @JonasHeinickeBio in #89
- feat(frontend): a link that opens the planner with the form's trip in it by @JonasHeinickeBio in #90
- feat(directions): turn-by-turn cues from BRouter, a directions list and a cue sheet by @JonasHeinickeBio in #91
- feat(map): colour the route by surface or by traffic by @JonasHeinickeBio in #92
- feat(map): colour the route by gradient by @JonasHeinickeBio in #93
- feat(directions): the time you are expected at each step by @JonasHeinickeBio in #94
- feat(map): drag the route to reshape it by @JonasHeinickeBio in #95
- feat(map): drag a place marker to move that place by @JonasHeinickeBio in #96
- feat(self-hosted): an opt-in Overpass for the sight search by @JonasHeinickeBio in #97
- feat(pois): read more of the opening-hours language (measured on real tags) by @JonasHeinickeBio in #98
- feat(scoring): say which surface words were ignored; "unpaved" means every unpaved category by @JonasHeinickeBio in #99
- feat(map): a long press puts the route's drag handle on a touch screen by @JonasHeinickeBio in #100
- feat(map): a preview line while dragging the route handle by @JonasHeinickeBio in #101
- feat(frontend): "Remember my choices", an opt-in memory of the plan form by @JonasHeinickeBio in #102
- feat(self-hosted): --memory presets for the containers' RAM by @JonasHeinickeBio in #103
- feat(plan): trace every step, cancel abandoned plans, stream progress, cache briefly by @JonasHeinickeBio in #104
- feat(cli): tab completion, live progress and --trace for route plan, a Makefile by @JonasHeinickeBio in #107
- docs(scoring): surface-weight calibration repeated with OSM enrichment by @JonasHeinickeBio in #108
- feat(chat): the web form tells the chat what it holds by @JonasHeinickeBio in #109
- feat(chat): a benchmark for how it reads messages, and an opt-in local miss log by @JonasHeinickeBio in #110
- feat(mcp): bike-router mcp serve, four facts-only tools for another agent by @JonasHeinickeBio in #112
- feat(mcp): prepare publishing to PyPI and the official MCP Registry by @JonasHeinickeBio in #113
Full Changelog: v0.2.0...v0.3.0