Skip to content

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 venues collection: Added source + geohash index 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.json generation 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() and window.clearAllCaches() in dev mode for troubleshooting

Changed

  • Enhanced venue cache manager (src/lib/venueCacheManager.js): Added isCacheValidForLocation() 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): Added shouldRefreshVenuesForLocation with mode: '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.yml to use tsickert/discord-webhook@v7.0.0 action 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.

Deprecated

Removed

Security

Built with VitePress