- Newgenerate CHANGELOG.md and a public novedades page#268
- Newruntime sitemap for dynamic pages + IndexNow#263
- Improvementlengthen the default meta descriptions#262
- Improvementrate-limit public EMTUSA-backed endpoints#261
- Improvementrender per-stop OG images at runtime#260
- Improvementrepair broken localized links, schema URLs and OG tags (#244)#247
- Improvementrepair localized links, schema URLs, OG tags and metadata (#244)#251
- Improvementsurface the missing GitHub token at boot and in docs (#246)#248
- Improvementgenerate French routes and serve locale fallbacks as 200#224
- Improvementinclude public/ in the runtime image and harden the static map#222
- Newadd an experimental live network map page#220
- Newimprove trayecto map readability#219
- Newadd a liveness endpoint and use it for health checks#212
- Newautomatic 90-day retention prune#206
- Newstats page with day-of-week heatmap#201
- Newper-stop peak times on /parada/[id]/#199
- Newreactivate popular stops on /paradas/#198
- Newrecord weighted waiting signals from arrivals adapter#197
- Newpopularity module, schema and migration (Phase 2 of #188)#196
- Improvementcorrect llegadas endpoint URL and bound @babel/runtime to 7.x#187
- Improvementvalidate coordinates once via Coordinates value object (#148)#168
- Improvementmodel unresolved trayecto stops explicitly (#150)#167
- Improvementunify the Búho B-prefix rule across isBuho and scheduleType (#147)#166
- Improvementcompare ParadaTrayecto connection lineId with linea.id (#149)#165
- Improvementdrop dead misleading finalId field (#151)#164
- Newadd comprehensive test coverage for utilities, hooks, and API endpoints#115
- Improvementupdate dependencies to resolve 14 audit vulnerabilities#135