- osm-data.mjs: add 'roads' Overpass query to tulsa area — major road
classes (motorway/trunk/primary/secondary/tertiary) as LineString geometry
- MapView.svelte: render POIs that have a bearing as a rotated arrow
divIcon marker pointing in the compass heading; other POIs stay as
circleMarkers. Adds .dir-arrow CSS.
- scripts/test.mjs: adapt street-name search assertions (roads now match
address queries legitimately) and add an expectAll helper
- static/data: tulsa.geojson now includes ~20k road features (11MB)
- .gitea/workflows/ci.yml: on push/PR, runs npm ci, svelte-check, offline
regression tests, and a static (no-Overpass) build, then verifies output
- scripts/test.mjs: offline test suite — validates manifest + GeoJSON
structure and asserts fuzzy-search regressions against committed data
- package.json: add 'test' and 'build:static' scripts
- osm-data.mjs: tag OSM layers layerType='mixed' in the manifest