Commit graph

1116 commits

Author SHA1 Message Date
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
d22fc7c661
Fix dialyzer type errors in coordinate validation
- Remove redundant nil check for callsign (spec guarantees String.t())
- Simplify coordinate validation by removing faulty infinity checks
- Remove unreachable catch-all clause in has_weather_packets?

Floats cannot equal atoms :infinity or :neg_infinity in Elixir.
Range checks already ensure finite values, making explicit infinity
checks unnecessary. Reduces dialyzer errors from 40 to 34.
2026-02-20 18:17:59 -06:00
CI
c34c233119 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771632418-b45993a [skip ci] 2026-02-21 00:08:34 +00:00
b45993a8be
Fix APRS object display and comment encoding issues
- Strip Mic-E telemetry from comments before database storage
- Show sender callsign on map labels instead of object names for clarity
- Object names still used for grouping to maintain trail organization
- Add comprehensive tests for new encoding utilities

Fixes display issues where weather balloon "X3234025" was shown
instead of station "WA0YMH", and Mic-E telemetry bytes like "!w>`!"
were appearing in comments.
2026-02-20 18:06:32 -06:00
CI
a92f63237f chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771631787-0061c4b [skip ci] 2026-02-20 23:58:03 +00:00
0061c4b169
Apply TailwindCSS Plus design patterns across site
Dark navbar header with radio icon, refined slideover control panel
with branded header and section cards, polished cards/tables/badges
on info, packets, and about pages using ring borders and shadow-xs.
2026-02-20 17:56:06 -06:00
CI
ab356afe43 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771631314-cf97bf2 [skip ci] 2026-02-20 23:50:09 +00:00
cf97bf236a
Add client IP to request log metadata
Set Logger metadata from conn.remote_ip in the RemoteIp plug so
request logs include the client address.
2026-02-20 17:48:15 -06:00
CI
03e2cf3403 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771628981-4481888 [skip ci] 2026-02-20 23:11:16 +00:00
4481888976
Fix settings page showing validation errors on initial load
The email and callsign changesets add "did not change" errors when
created with empty attrs (on mount). Guard all field error displays
on changeset.action being set so errors only appear after user
interaction.
2026-02-20 17:09:18 -06:00
CI
e2966e0a21 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771618361-f803c46 [skip ci] 2026-02-20 20:14:14 +00:00
f803c46b92
Fix KeyError on :data when rendering raw broadcast packets in callsign view
Raw APRS broadcast payloads don't have a :data key (only %Packet{}
structs do). Use Map.get/3 instead of dot-access to handle both cases.
2026-02-20 14:12:21 -06:00
CI
4f5483de19 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771617231-e917a6b [skip ci] 2026-02-20 19:54:00 +00:00
e917a6b718
Add test coverage for conversion, geometry, PHG, and encoding modules
Cover to_float, to_decimal, normalize_data_type, weather_fields,
sanitize_packet_strings, to_float_safe, has_weather_data, create_point,
extract_coordinates, lat/lon helpers, PHG extraction, and altitude
extraction with 79 new tests across 4 test files.
2026-02-20 13:53:26 -06:00
CI
918af2069a chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771616615-bcb0080 [skip ci] 2026-02-20 19:45:12 +00:00
bcb00801ee
Remove noisy leader election log
The "Not elected as leader" info log was being emitted every 5 seconds
by non-leader nodes, filling up logs unnecessarily in clustered deployments.
2026-02-20 13:43:13 -06:00
CI
50a54ef0aa chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771616369-50544c8 [skip ci] 2026-02-20 19:41:09 +00:00
50544c8354
Remove dead PostGIS code, deduplicate utilities, and simplify module hierarchy
- Delete ~170 lines of commented-out PostGIS spatial query functions
- Consolidate coordinate validation into CoordinateUtils
- Replace private normalize_data_type with EncodingUtils delegation
- Inline to_float/to_decimal wrappers at call sites
- Fix has_weather_data? missing wind_gust field
- Remove BoundsManager passthrough delegation module
- Simplify MapLive.PacketUtils by removing pure-passthrough delegations
2026-02-20 13:39:07 -06:00
CI
bb494bce65 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771615067-673eb55 [skip ci] 2026-02-20 19:19:24 +00:00
673eb55e97
Add test coverage for comment cleaning edge cases
Cover weather data with spaces/dots for missing values, negative
temperatures, negative altitudes, combined PHG+altitude+RNG
stripping, nil comments, comments that become empty after cleaning,
and false-match protection for comments starting with P or h. Also
fix strip_weather_data to require at least one weather field after
the preamble to avoid false-matching course/speed in non-weather
comments.
2026-02-20 13:17:27 -06:00