Spaces:
Running
Running
Commit History
-
build: keep .sh at LF in the working copy
`* text=auto` checks shell scripts out as CRLF on Windows, and a CRLF shebang fails on Linux with `bad interpreter: /bin/bash^M` — which is exactly where deploy_cloudrun.sh and measure_cold_start.sh are meant to run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>f7a25c3
-
feat(config): WS4 — map-drawn service area (Leaflet + OSM) (#137)
Unverified signatureOperators can now draw their service area on a map instead of typing ZIPs: - **Draw a polygon** on a Leaflet/OSM map in the Service area sub-screen. The outline is stored as GeoJSON (`service_area_polygon`) and decides **serve / don't-serve** at quote time via point-in-polygon on the geocoded address (`Tenant.serves_location`, gated BEFORE measuring). Pricing stays ZIP-based. - **Generate ZIPs from area** fills the tenant's ZIP list from the shape: `POST /dashboard/service-area/zips` runs point-in-polygon against a committed **U.S. Census ZCTA centroid** asset for the Omaha metro (`data/ne_zip_centroids.json`, 65 ZIPs) — no runtime ZIP-boundary service. - Leaflet 1.9.4 is **vendored** under `web/vendor/` and served by an allow-listed `/vendor/{name}` route (no CDN; no CSP exists to change). New `service_area.py` (shapely point-in-polygon + centroid loader). Back-compat: no polygon → the existing ZIP serve gate; legacy configs load unchanged. Tests: service_area (in/…1cedb6a
-
Initial commit
707cb8d