Commit graph

1135 commits

Author SHA1 Message Date
CI
120966ea2a chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1773942267-ac42896 [skip ci] 2026-03-19 17:45:09 +00:00
ac42896271
fix: performance improvements and bug fixes across backend and frontend
Backend:
- Use indexed has_weather boolean for weather queries instead of 6 OR conditions
- Enable gzip compression for static assets
- Re-enable security headers (CSP, X-Frame-Options, X-Content-Type-Options)
- Supervise cleanup task via BroadcastTaskSupervisor instead of Task.start
- Relax IsSupervisor restart limits (5/60s) to survive transient network issues
- Remove dead code: empty cache invalidation block, commented-out logging

Frontend:
- Use callsignIndex for O(1) marker dedup instead of O(n) forEach scan
- Consolidate triple packet loop into single pass in new_packets handler
- Batch trail visualization updates via requestAnimationFrame
- Replace DOM querySelectorAll z-index scan with simple counter
- Only rebuild OMS markers when crossing clustering zoom threshold
- Clean up trail manager on hook destroy
- Remove dead commented-out localStorage code
2026-03-19 12:41:36 -05:00
CI
f5cc0b8c2b chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1773601902-1d229e6 [skip ci] 2026-03-15 19:15:49 +00:00
1d229e647b
chore(deps): update dependencies to latest versions
- credo: 1.7.16 → 1.7.17
- stream_data: 1.2.0 → 1.3.0
- swoosh: 1.22.1 → 1.23.0
- tidewave: 0.5.5 → 0.5.6
2026-03-15 14:11:17 -05:00
6d4fbda863
vendor heroicons 16/solid SVGs to priv 2026-03-15 14:07:56 -05:00
93c8e0a0a4
vendor heroicons 20/solid SVGs to priv 2026-03-15 12:35:39 -05:00
018a9075ab
fix(ios): improve WebSocket stability on iPhone Safari
Increase long-poll fallback timeout to 5s for mobile networks, add
visibility change listener for proper reconnection on app foreground,
and remove backdrop blur that stalls network operations on iOS Safari.
2026-03-11 10:58:16 -05:00
2ee749da9b Merge pull request 'chore(deps): Update dependency phoenix_live_view to ~> 1.1.26' (#34) from renovate/phoenix_live_view-1.x into main
Reviewed-on: #34
2026-03-04 13:30:51 -06:00
Renovate Bot
5ba27564d2 chore(deps): Update dependency phoenix_live_view to ~> 1.1.26 2026-03-04 19:30:16 +00:00
6072eebe5b
vendor heroicons SVGs, remove GitHub dependency
Only the 7 SVGs actually used are vendored into priv/heroicons/.
Also fixes the icon component path resolution (was missing the 24/
size directory) and corrects hero-x-mark/hero-map-pin icon names
that included an erroneous hero- prefix.
2026-03-03 13:34:23 -06:00
CI
cfc58d537b chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772557317-18f3cc4 [skip ci] 2026-03-03 17:05:41 +00:00
18f3cc41b3
chore(deps): update all Hex dependencies to latest versions
Updated dependencies:
- bandit: 1.10.2 → 1.10.3
- ecto_sql: 3.13.4 → 3.13.5
- error_tracker: 0.7.1 → 0.8.0 (minor)
- gettext: 0.26.2 → 1.0.2 (major)
- phoenix: 1.8.3 → 1.8.4
- phoenix_live_view: 1.1.24 → 1.1.25
- sourceror: 1.10.1 → 1.11.0
- spitfire: 0.3.6 → 0.3.7
- styler: 1.10.1 → 1.11.0
- swoosh: 1.22.0 → 1.22.1

All 948 tests passing 
2026-03-03 11:01:35 -06:00
CI
55b934c2e8 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772557158-38da6da [skip ci] 2026-03-03 16:59:26 +00:00
38da6da683 Merge pull request 'chore(config): migrate Renovate config' (#32) from renovate/migrate-config into main
Reviewed-on: #32
2026-03-03 08:58:58 -08:00
Renovate Bot
9c53361776 chore(config): migrate config renovate.json 2026-03-03 16:58:26 +00:00
CI
1a799ac2f2 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772556936-ce4329e [skip ci] 2026-03-03 16:55:44 +00:00
ce4329e598
fix: allow Renovate to run at any time for immediate PR creation 2026-03-03 10:55:17 -06:00
CI
2ff4570d12 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772556605-87450cc [skip ci] 2026-03-03 16:50:14 +00:00
87450cc1b9
fix: correct Renovate configuration issues
- Remove global-only options (platform, repositories, username) from renovate.json
- Fix invalid schedule syntax: 'every day' -> 'before 5am'
- Update workflow to use 'forgejo' platform instead of 'gitea'
- These options are properly set via environment variables in the workflow
2026-03-03 10:48:48 -06:00
7897fe8a1a
perf: optimize slow tests - 40% reduction in top 10 slowest tests
- Skip expensive scheduler utilization sampling in test env (saves 1s per call)
- Reduce Process.sleep times from 100-300ms to 50-100ms
- Reduce refute_receive timeouts from 500ms to 100ms
- GPS drift test: 1371ms → 431ms (68.5% faster)
- BroadcastTaskSupervisor tests removed from slowest 10 (1000ms+ saved each)
- PacketDistributor tests: 33% faster
- StreamingPacketsPubSub tests removed from slowest 10 (400ms+ saved each)

Top 10 slowest tests reduced from 6.8s to 4.1s (40% improvement)
2026-03-03 10:47:40 -06:00
CI
1da68bc336 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772556144-a74a571 [skip ci] 2026-03-03 16:42:32 +00:00
a74a571844
fix: add Process.sleep to async broadcast tests and update Renovate workflow for Forgejo
- Fix PacketConsumerTest timing issues by adding Process.sleep(50) after handle_events
  to wait for async broadcast tasks to complete before assertions
- Update Renovate workflow to use Docker container directly instead of GitHub Action
- Use full GitHub URL for checkout action to work with Forgejo Actions
2026-03-03 10:41:50 -06:00
CI
6e6fa114e2 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772462115-0705c14 [skip ci] 2026-03-02 14:35:23 +00:00
0705c1478e
add docs 2026-03-02 08:34:50 -06:00
CI
3c2ae5e3b6 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772399178-fc3284f [skip ci] 2026-03-01 21:07:49 +00:00
fc3284f079
Merge branch 'feature/callsign-trail-line' 2026-03-01 15:01:14 -06:00
a793f064cd
chore: ignore .worktrees directory for git worktree isolation 2026-03-01 15:01:08 -06:00
a939913114
docs: clarify trail line should connect all points regardless of distance
- Continuous path connection for long-distance travel
- No distance-based filtering or gap detection
- Important for aircraft, vehicles, intermittent coverage scenarios
2026-03-01 15:01:08 -06:00
d23ac8cb38
docs: add design for trail line visualization at low zoom for tracked callsigns
- Show polyline trail instead of heat map when tracking callsign at zoom ≤ 8
- Individual markers remain at zoom > 8
- Trail line connects positions chronologically
- Respects trail duration setting
2026-03-01 15:01:07 -06:00
9a071b6e3a
feat: refresh trail line when trail duration changes
- Regenerate trail line after trail duration update
- Trail line now respects trail duration setting
2026-02-27 13:49:18 -06:00
464ba84202
feat: clear trail line when clearing callsign tracking
- Push clear_trail_line event when user clears tracking
- Ensures trail line is removed immediately
2026-02-27 13:38:20 -06:00
bcbb39f21c
feat: add trail line display to map frontend
- Add trailLine state to MapHook
- Implement show_trail_line event handler with Leaflet polyline
- Implement clear_trail_line event handler
- Clear trail line when switching to heat map or markers
- Style trail line with blue color, 3px weight, 0.8 opacity
2026-02-27 13:25:00 -06:00
2919402aa9
feat: show trail line for tracked callsigns at low zoom
- Modified handle_zoom_threshold_crossing to detect tracked_callsign
- Show trail line instead of heat map when tracking at zoom ≤ 8
- Maintain heat map behavior when not tracking
- Maintain marker behavior at zoom > 8
2026-02-27 13:21:37 -06:00
6add35b11a
feat: add send_trail_line_for_tracked_callsign function
- Filters packets by tracked callsign and time threshold
- Sorts packets chronologically by received_at
- Pushes show_trail_line event with coordinates
- Returns socket unchanged when no packets found
2026-02-27 13:10:34 -06:00
d3ef999ab9
chore: ignore .worktrees directory for git worktree isolation 2026-02-27 12:56:15 -06:00
840285fd7a
docs: clarify trail line should connect all points regardless of distance
- Continuous path connection for long-distance travel
- No distance-based filtering or gap detection
- Important for aircraft, vehicles, intermittent coverage scenarios
2026-02-27 12:55:37 -06:00
a0961f932d
docs: add design for trail line visualization at low zoom for tracked callsigns
- Show polyline trail instead of heat map when tracking callsign at zoom ≤ 8
- Individual markers remain at zoom > 8
- Trail line connects positions chronologically
- Respects trail duration setting
2026-02-27 12:54:32 -06:00
CI
472b392827 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772058607-f4db38f [skip ci] 2026-02-25 22:31:33 +00:00
f4db38f051
update 2026-02-25 16:29:45 -06:00
CI
d643f0a592 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772058556-e51b042 [skip ci] 2026-02-25 22:29:24 +00:00
e51b042cc9 Merge pull request 'docs: remove K3s deployment section from README' (#2) from fix/packet-retention-runtime-config into main
Reviewed-on: #2
2026-02-25 14:28:58 -08:00
0b9e06e76a
docs: remove K3s deployment section from README
Remove outdated K3s-specific deployment instructions and replace with
accurate Flux GitOps deployment information. The app is deployed to a
full Kubernetes cluster (not K3s) using Flux for GitOps automation.
2026-02-25 16:28:29 -06:00
CI
63176780d0 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772058296-3b33a31 [skip ci] 2026-02-25 22:26:24 +00:00
3b33a319f2 Merge pull request 'Fix packet retention config to read env var at runtime' (#1) from fix/packet-retention-runtime-config into main
Reviewed-on: #1
2026-02-25 14:24:38 -08:00
fcff4fa6f0
Fix packet retention config to read env var at runtime
Move packet_retention_days configuration from config.exs (compile-time)
to runtime.exs so it properly reads the PACKET_RETENTION_DAYS environment
variable at runtime instead of baking in the default value during build.

This fixes the issue where the app was using 7 days retention despite
PACKET_RETENTION_DAYS being set to 1 in the deployment, causing disk
to fill up with 54GB of old partition data.
2026-02-25 16:23:22 -06:00
CI
d42acf8e1c chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1772043977-d385d1e [skip ci] 2026-02-25 18:27:49 +00:00
d385d1eb75
Default sidebar to open on desktop via CSS
Make the map and panel CSS default to "sidebar open" on desktop
(>= 1024px) without requiring the slideover-open class. Only the
slideover-closed class now hides the sidebar. This prevents a blank
gap when the map and panel states get out of sync after LiveView
reconnects.
2026-02-25 12:25:50 -06:00
CI
88e2c48f97 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771796036-f5049a6 [skip ci] 2026-02-22 21:35:24 +00:00
f5049a6e2d
updates 2026-02-22 15:33:35 -06:00
CI
c4bf50284b chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771633101-d22fc7c [skip ci] 2026-02-21 00:19:55 +00:00