Version History
A record of every major feature release since SafeNSound launched.
v1.20.0February 18, 2026
Clickwrap Terms & Legal Pages
- Legally compliant clickwrap modal with three independent checkboxes — Terms of Use, Prohibited Conduct, Privacy Notice
- Full-page /terms and /privacy routes with complete legal text
- Acceptance state persisted to localStorage with version tracking and ISO timestamp
v1.19.69February 18, 2026
Hex Grid Stability & GPU Churn Fix
- Fixed hex grid disappearing at zoom 3.5 — reverted padBounds from wrapLng to clamping (prevents west > east inversion at wide zoom)
- Anti-meridian aware filterByBounds and filterCellsByBounds for Alaska/Aleutian coverage
- Added dataComparator to H3HexagonLayer — skips GPU buffer recalc when filtered content is identical
v1.19.67February 18, 2026
12-Bug Deep Static Analysis Sweep
- Clamped route safety scores to 0-100 range (was allowing negative and over-100)
- Fixed isMobile useState lazy init — first fetch was using desktop limit on mobile
- Switched H3 prefetch to Promise.allSettled — one failed tier no longer kills all five
- Fixed CheckMyArea isSearching stuck state on rapid search abort
v1.19.420February 18, 2026
Data Correctness & Map Accuracy Fixes
- Fixed stale closure in fetchApiPoints by passing mapZoom as parameter instead of capturing from render scope
- Added bounds-containment check to incremental H3 filter — prevents sparse grids after map jumps
- Applied classification filter (dcWhere) to nsopw_offenders query for accurate category filtering
- Used nullish coalescing (p.count ?? 1) to prevent inflating zero-count areas in scoring
v1.19.369February 18, 2026
Codebase Deduplication
- Consolidated 6 identical CSV parsing blocks into shared forEachCsvRow helper in h3-scoring
- Reused shared clampLat/wrapLng/filterByBounds from spatial-cache instead of inline duplicates
- Hoisted TIME_OF_DAY_BUTTONS and VALID_TIMES to module-level constants
v1.19.3February 18, 2026
Pareto Render Pipeline
- Ref-based points cache with version counter — breaks the filter→score memo cascade during panning
- Quantized viewport fetch dedup — micro-pans within the same grid cell skip redundant API calls
- Incremental H3 viewport filtering from previous subset instead of full 50k-cell cache
- 100% padding on viewport filter bounds for dramatically better fast-path hit rate
v1.19.2February 18, 2026
H3 Server Cache Optimization
- Baked lat/lng coordinates into H3 cells at aggregation time — computed once, cached forever
- Eliminated per-request cellToLatLng mapping in the h3data API route
- Removed redundant CellWithCoords interface and addCoords function
v1.19.1February 18, 2026
Instant Point Fetch
- Removed debounce from points API fetch — fires immediately at zoom 12+
- Abort controller handles rapid-fire panning without debounce delay
v1.19.0February 18, 2026
Zoom-Gated Additive Cache
- Offender red dots now use a grow-only additive cache at zoom 12+
- Zoom-gated fetch prevents unnecessary point requests at low zoom levels
- Cache cleared only on time-of-day change — preserves accumulated density during panning
v1.18.69February 18, 2026
Chroma Wave Text & Icon
- Rainbow text sweep on filter button label via background-clip:text animated gradient
- Hue-rotate color cycling on filter icon — GPU-composited, zero repaints
- Replaced mix-blend-mode overlay that was coloring the entire button background
v1.18.67February 18, 2026
Chroma Glow Border & Mobile Polish
- Spinning conic-gradient chroma border around the filter button
- Centered mobile disclaimer with scrolling text at half-width
v1.18.369February 18, 2026
GPU & Render Performance
- Eliminated GPU/render performance bottlenecks in tooltip, deck.gl, backdrop-blur, and will-change
- Compact mobile Safe Index and Legend with glass-muted treatment on all map overlays
- Aligned mobile map controls — same-row time-of-day, matched filter buttons
v1.18.00February 18, 2026
Control Bar Redesign & Mobile Hotfix
- Relocated map legend into the floating control bar for a symmetric layout
- Bifurcated mobile and desktop time-of-day controls with dual-render pattern
- Rewrote all floating controls as mobile-first to fix layout breakage on small screens
- Safe Index and Legend now visible on mobile with compact sizing
v1.17.67February 17, 2026
Version Sync Fix
- Footer bar version now derived from changelog — single source of truth
v1.17.0February 17, 2026
Design Token Cleanup
- Renamed color tokens to color-agnostic names (accent instead of amber-gold)
- Consistent token naming across 25 component and style files
v1.16.0February 17, 2026
Zoom-Resilient Layout
- Fluid sidebar and panel widths that adapt to any browser zoom level
- Header navigation collapses to hamburger menu at narrower viewports
- CSS custom properties for consistent layout dimensions across pages
- Portal dropdown overflow guards for small screens
v1.15.0February 17, 2026
Alert Ribbons
- Animated safety alert ribbons on map page
- Performance-optimized rendering with static scanlines
- Proper z-index layering with sidebars and filter drawers
v1.14.0February 17, 2026
Infrastructure Improvements
- H3 hex scoring engine migrated from local files to Supabase
- Preloaded all H3 hex tiers on mount for zero-latency zoom and pan
- Version history page with changelog timeline
- Repo cleanup: removed data CSVs and stale config files
v1.13.0February 16, 2026
Donation Support
- One-click contract address copy in header
- Streamlined crypto donation flow
v1.12.0February 16, 2026
Registry Accuracy Corrections
- Statistical corrections for 12 states with NSOPW data gaps
- Per-capita population normalization for safety rankings
- Census-based population weighting for fair state comparisons
v1.11.0February 15, 2026
Performance Hardening
- Eliminated render cascades and stale data issues
- Improved request lifecycle management
- Map tile failure resilience
v1.10.0February 15, 2026
Poverty Data Integration
- USDA/Census SAIPE 2023 county-level poverty rates (~3,200 counties)
- Continuous risk scale for poverty correlation
- Updated transparency page with poverty methodology
v1.9.0February 15, 2026
College Safety Layer
- IPEDS college and university campus data (~5,500 institutions)
- College security layer with time-of-day modifiers
- Campus presence as positive safety factor in scoring
v1.8.0February 13, 2026
Stability & Polish
- Mobile compatibility improvements across all pages
- Map rendering stability enhancements
v1.7.0February 12, 2026
New York & Minnesota Expansion
- 15,000+ New York offender records (38x increase)
- 1,100+ Minnesota offender records (1.7x increase)
- Improved geocoding for previously unlocatable records
v1.6.0February 12, 2026
Social & Analytics
- Open Graph and Twitter card images for rich link previews
- Web analytics integration
v1.5.0February 12, 2026
Mobile Optimization
- Responsive layout with mobile-first breakpoint system
- Collapsible sidebar sections with expandable data layers
- After-Hours mode for nighttime safety assessment
- Touch-optimized map interaction
- Compact controls for small screens
v1.4.0February 12, 2026
UI Refinements
- Compact map legend
- Expandable footer with detailed disclaimers
- Corrected safety score labels and color scale alignment
v1.3.0February 12, 2026
School & Route Safety
- School safety search with multi-source scoring model
- Route safety analysis with real-time routing
- Time-of-day safety adjustments (daytime, evening, after-hours)
- Filter panel with category controls
v1.2.0February 11, 2026
H3 Hexagonal Grid
- H3 hexagonal spatial indexing for density-aware visualization
- 5-tier resolution system adapting to zoom level
- Improved hex aggregation accuracy
v1.1.0February 11, 2026
Safety Tools
- Check My Area: address search with safety report generation
- Safety rankings by state, county, and ZIP code
- Saved reports with comparison view and inline notes
- Police precinct boundaries for 8 major cities
v1.0.0February 11, 2026
Platform Rebuild
- Complete rebuild on modern full-stack framework
- MapLibre GL + deck.gl rendering engine
- Server-side spatial queries via PostGIS
- Multi-page navigation: Map, About, School Safety, Route Safety, Transparency
v0.4.0February 11, 2026
Nationwide Coverage
- 246,000+ additional offender records across two data batches
- Full coverage across all 50 states and territories
- Removed regional limitations — all areas scored by real data
v0.3.0February 11, 2026
Visual Redesign
- Dark editorial theme with custom typography
- Redesigned sidebar with categorized filter groups
- Security hardening and performance improvements
v0.2.0February 11, 2026
NSOPW Integration
- Nationwide sex offender data via NSOPW registry
- 65,000+ geocoded offender records
- Replaced sample data with real public datasets
v0.1.0February 10, 2026
Foundation
- Interactive hex grid safety map with color-coded scores
- 22-category data layer filter system
- Sex offender registry visualization at street level
- Safety scoring model (base-100 weighted risk deduction)