Commit graph

17 commits

Author SHA1 Message Date
5c69604c32
feat: Implement direct station URLs with persistent latest packet display
- Add support for station-specific URLs (e.g., /w5isp) as path parameters
- Always display the most recent packet for tracked stations, regardless of trail/historical duration
- Fetch and store tracked callsign's latest packet on mount
- Update packet filtering to preserve tracked callsign's packet even if outside time threshold
- Keep tracked callsign's latest packet updated with real-time arrivals
- Display tracked callsign's packet immediately when map loads
- Remove obsolete RedirectController in favor of direct LiveView routing

This ensures users viewing a specific station always see its most recent position,
even if it falls outside the selected historical timeframe.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 12:56:05 -05:00
206adb6b7d
back to raster 2025-07-24 12:02:28 -05:00
44ae82eb9b
Improve map tile loading reliability
- Add retry logic with exponential backoff for failed tiles (up to 3 attempts)
- Configure tile layer with optimized settings (keepBuffer, updateInterval)
- Add support for alternative tile providers (OSM DE, CartoDB)
- Update CSP to allow alternative tile providers
- Add error tile placeholder to prevent broken images

This should help with partial tile loading issues by retrying failed requests
and providing fallback options.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 13:22:45 -05:00
234fc2010f
Implement critical performance optimizations and error handling
This commit introduces several major performance improvements and adds
robust error handling for malformed HTTP requests:

Performance Optimizations:
- Add database migration with BRIN indexes for time-series data and partial
  indexes for recent queries, significantly improving query performance
- Create global StreamingPacketsPubSub system for real-time packet distribution
  with geographic bounds filtering using ETS for fast lookups
- Refactor PacketConsumer to use Stream module for memory-efficient processing,
  preventing memory accumulation during batch operations
- Implement dedicated BroadcastTaskSupervisor pool for async broadcast operations,
  preventing GenServer blocking on I/O
- Increase database connection pool from 25 to 45 (production) and 15 to 30 (dev)
  for better concurrency support

Error Handling:
- Add SentryFilter to prevent Bandit.HTTPError from missing Host headers from
  cluttering Sentry (common with bots/scanners)
- Configure custom 400 Bad Request error handling
- Filter out common bot/scanner paths from error reporting

All changes include comprehensive test coverage following TDD practices.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 18:19:49 -05:00
3937dfede7
Configure CSP headers to allow Sentry and CDN scripts
- Added custom content-security-policy to put_secure_browser_headers
- Allowed script sources:
  - https://js.sentry-cdn.com for Sentry SDK
  - https://cdnjs.cloudflare.com for OverlappingMarkerSpiderfier
- Allowed connect sources for Sentry error reporting:
  - https://*.ingest.sentry.io
  - https://*.sentry.io
- Removed custom ContentSecurityPolicy plug in favor of built-in configuration

This properly configures the Content Security Policy to allow all necessary
external resources while maintaining security.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 15:30:36 -05:00
dade93ee5c
Implement Sentry JavaScript integration with proper CSP configuration
- Restored Sentry JavaScript SDK script tag
- Created custom ContentSecurityPolicy plug to allow Sentry domains
- Added proper CSP headers allowing:
  - js.sentry-cdn.com for the SDK
  - *.ingest.sentry.io and *.sentry.io for error reporting
- Initialized Sentry in app.js with:
  - Proper DSN configuration
  - Browser tracing integration
  - 10% transaction sampling rate
  - Filter for non-critical ResizeObserver errors
- Added CSP plug to router pipeline after put_secure_browser_headers

This properly integrates Sentry for JavaScript error tracking while
maintaining security through explicit CSP configuration.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 15:17:35 -05:00
532a81c0b4
integrate /:call to main page 2025-07-13 10:36:58 -05:00
f5e0f33ac2
fix geolocation hopefully 2025-07-10 17:12:49 -05:00
4f0fa59be8
ip lookup on page load 2025-07-10 16:45:21 -05:00
41eaec5c8e
add user auth 2025-07-09 08:53:50 -05:00
0adfffeaf5
fix mix usage for prod 2025-07-08 12:26:22 -05:00
9053f0840a
add more i18n testing and fix error page and dashboard 2025-07-08 12:16:00 -05:00
711d92ebb6
performance improvements 2025-07-08 10:03:52 -05:00
6749f41137
built in error tracking 2025-07-07 11:06:22 -05:00
fc449ed5f9
en español 2025-07-05 15:51:39 -05:00
142900c759
liveview links 2025-07-05 13:33:30 -05:00
ce7c50caa1
refactor to use external parser 2025-06-24 14:22:09 -05:00
Renamed from lib/aprs_web/router.ex (Browse further)