Changelog - v0.1.0 - 01.19.2026
Date: 01.19.2026
Environment: dev
Version: v0.1.0
Added
- Location proximity gating service (#210): Implemented comprehensive location validation with cache + proximity gating to prevent excessive API calls and ensure users are physically present before allowing place creation or refresh operations
- Proximity validation before place operations (default 200m radius)
- Intelligent caching with configurable TTL (30 days) and distance-based invalidation (default 500m threshold)
- Rate limiting for external API calls (max 10 calls per minute)
- Integration with existing server-side validation from Issue #155
- Comprehensive metrics and logging for monitoring
- 28 passing unit tests in
src/__tests__/locationProximityGate.test.js
- Automatic OSM venue import (#210): When users visit unmapped areas, venues are automatically imported from OpenStreetMap
- Client-side OSM Overpass API integration with 3 fallback endpoints for reliability
- Gold tier venues (bars, cafes, pubs, libraries) and Silver tier venues (gyms, arcades, escape rooms, dance halls) filtered from
venue_types.csv - Venues saved to Firestore with geohash for efficient proximity queries
- 30-day refresh cycle with rate limiting (10 API calls/min)
- Location spoofing utilities for dev testing (
window.spoofLocation())
- Venue caching flow documentation (
docs/engineering/architecture/VENUE_CACHING_FLOW.md): Comprehensive architecture documentation explaining how venue data is cached in Firestore at the area level (geohash-5 ~4.9km), with 7 detailed scenarios covering API cost implications - Firestore composite index for
venuescollection: Addedsource+geohashindex to support OSM venue queries - Automatic cache refresh on deployment (#186): Implemented auto-reload when a new service worker is detected, ensuring users always get the latest version without manually clearing site data
- Version-based cache invalidation system (#186): Added
version.jsongeneration at build time with unique build IDs for reliable version checking - Version check utility (
src/lib/versionCheck.js): Periodically checks for new app versions and auto-reloads when updates are available - Service worker update handler (
src/lib/deviceOptimization.js): Listens for new service worker installations and triggers page reload on activation - Debug utilities for cache management: Added
window.forceVersionCheck()andwindow.clearAllCaches()in dev mode for troubleshooting
Changed
- Enhanced venue cache manager (
src/lib/venueCacheManager.js): AddedisCacheValidForLocation()for location-aware cache validation that considers both time-based and distance-based invalidation - Enhanced places service (
src/lib/placesService.js): Integrated proximity validation and rate limiting before venue creation/updates from Google Places API - Venue refresh guard option (
src/lib/locationProximityGate.js): AddedshouldRefreshVenuesForLocationwithmode: 'stale_and_moved'to avoid unnecessary paid API calls unless both cache is stale and the user moved beyond the distance threshold
Fixed
- Dashboard sticky search bar gap on mobile (#179): Adjusted sticky positioning to eliminate visual gap when scrolling the places list
- Discord commit notification workflow reliability (#202): Refactored
discord-notify.ymlto usetsickert/discord-webhook@v7.0.0action instead of fragile custom bash/curl/jq implementation. Fixes intermittent failures caused by shell injection issues when commit messages contain backticks, quotes, or other special characters. Reduced workflow from 274 lines to 112 lines.