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