Commit graph

29 commits

Author SHA1 Message Date
9b034cd211
vendor all js 2025-07-21 11:09:14 -05:00
7dc6c616a2
Bundle all vendor JavaScript files locally instead of loading from CDNs
This change eliminates all external CDN dependencies by bundling JavaScript
libraries locally using esbuild. All vendor files are now served from the
application's own assets, improving reliability and privacy.

Changes:
- Created assets/js/vendor.js to bundle all external libraries
- Added vendor bundle configuration to esbuild in config files
- Updated all templates to use local vendor.js instead of CDN scripts
- Created download-vendor-files.sh script to fetch vendor libraries
- Added vendor files to .gitignore (they're downloaded during setup)
- Updated CSS imports to include vendor stylesheets
- Added vendor build step to assets.deploy mix task

Bundled libraries:
- Leaflet 1.9.4 (mapping library)
- Leaflet.heat 0.2.0 (heatmap plugin)
- Leaflet.markercluster 1.5.3 (marker clustering)
- OverlappingMarkerSpiderfier 0.2.6 (overlapping marker handling)
- Chart.js 4.5.0 (charting library)
- chartjs-adapter-date-fns 3.0.0 (date adapter for Chart.js)

All functionality tested and working correctly with local bundles.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 09:52:39 -05:00
0d46b89c68
Use Sentry Loader script to handle CORS errors gracefully
- Replaced direct Sentry SDK script tag with the Sentry Loader
- The loader handles CORS/network failures gracefully without breaking the app
- Moved Sentry configuration to use the onLoad callback
- Maintains the same configuration (100% sampling, BrowserTracing, etc.)

The Sentry Loader is a small inline script that:
1. Captures errors immediately (even before SDK loads)
2. Loads the SDK asynchronously
3. Handles load failures gracefully
4. Replays captured errors once SDK is loaded

This approach avoids CORS errors breaking the page load while still
providing error tracking when the SDK is accessible.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 15:51:21 -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
df436ab55d
Remove frontend Sentry SDK to fix CORS/CSP errors
The frontend Sentry script was causing CORS and Content Security Policy errors.
Since backend error tracking is already configured with Sentry, the frontend
SDK is not essential and has been removed to prevent these errors.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 15:14:36 -05:00
1a84eb594a
Fix Gleam compilation in Docker builds
- Mark gleam_stdlib and gleeunit with compile: false in mix.exs
- Copy pre-compiled Gleam BEAM files in Dockerfile
- Add explicit mix gleam_compile step before asset compilation
- Ensure priv/gleam directory is included in Docker build

This fixes the "Could not compile :gleam_stdlib" error during deployment.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 15:11:08 -05:00
18521ed0c1
add sentry 2025-07-18 15:07:53 -05:00
4b159ba0b7
cleanup 2025-07-18 14:44:52 -05:00
5aae01e66c
add more translations 2025-07-18 11:18:04 -05:00
566198afa7
clean up warnings 2025-07-16 08:55:46 -05:00
fa89712587
main map improvements 2025-07-13 14:58:13 -05:00
aaf92d9045
add heatmap on zoom out 2025-07-10 14:26:01 -05:00
41eaec5c8e
add user auth 2025-07-09 08:53:50 -05:00
5820400052
fix page layout when navigating between pages 2025-07-08 15:30:04 -05:00
7168448a38
fix weather page 2025-07-08 13:21:02 -05:00
7593330d36
fix main map sidedar on page change 2025-07-08 10:31:46 -05:00
32cfb36ee9
show dev mode, more imperial 2025-07-07 12:48:51 -05:00
6749f41137
built in error tracking 2025-07-07 11:06:22 -05:00
2543617f16
add sentry 2025-07-07 09:52:02 -05:00
18e3ef183a
more translation 2025-07-06 08:47:05 -05:00
fde98d6946
add time library 2025-07-05 13:35:33 -05:00
142900c759
liveview links 2025-07-05 13:33:30 -05:00
bb82e46822
theme fix 2025-07-05 13:23:10 -05:00
f1bc428086
deploy fix 2025-07-05 12:51:28 -05:00
ed545467c5
daisyui tweaks 2025-07-05 09:41:08 -05:00
53dc32f8fc
use daisyui components 2025-07-05 09:22:47 -05:00
172da7d393
upgrade more with modern phoenix 2025-07-05 08:04:06 -05:00
0beb278371
add packet batcher 2025-06-24 15:06:09 -05:00
ce7c50caa1
refactor to use external parser 2025-06-24 14:22:09 -05:00