Commit graph

1490 commits

Author SHA1 Message Date
c711caff4e
Remove AppSignal; fix decrement trigger and stale test assertions
- Delete config/appsignal.exs (was never wired into mix.exs or any
  other config file)
- Migration: fix decrement_packet_sequence trigger to handle the case
  where currval() hasn't been called in the current DB session, matching
  the same exception handling already present in get_packet_count()
- Fix get_historical_packet_count test: invalid non-list bounds are
  silently ignored (no error), so assert is_integer not count == 0
- Add Repo.delete_all(Packet) setup blocks in PacketsOldestTest and
  PacketConsumerTest to clear any committed DB state before tests that
  depend on an empty packets table
2026-05-05 13:20:58 -05:00
327df72859
deps: bump bandit, db_connection, ecto, error_tracker, jason, phoenix, phoenix_live_view, postgrex, swoosh 2026-05-05 12:12:32 -05:00
8c8f7a0ac7
move registry + repo refs to codeberg.org/gmcintire/aprs.me 2026-05-05 12:07:31 -05:00
0cd549652d
k8s: ensure zero-downtime deploys with 1 replica
- maxSurge: 1 (explicit integer, avoid percentage rounding)
- minReadySeconds: 30 (was 10) — new pod must be stable longer before old is killed
- progressDeadlineSeconds: 600 — detect stuck rollouts
- readinessProbe failureThreshold: 3 (was 2) — more tolerance after old pod is gone
- Add PodDisruptionBudget minAvailable: 1 — prevents voluntary disruptions from dropping below 1 pod
2026-04-29 13:55:27 -05:00
a3cb40188b
Dockerfile: align Elixir/OTP/Debian versions with microwaveprop 2026-04-29 12:45:01 -05:00
4b54b88b9f
CI/Dockerfile: mirror microwaveprop pattern (static docker, retry login, amd64 buildx, BUILD_TIMESTAMP arg) 2026-04-29 12:43:39 -05:00
40ad28e97b
CI: build amd64-only via buildx with provenance/sbom off
Forgejo runner with default Docker emits OCI image-index manifests for
multi-arch + attestation builds. argocd-image-updater cannot follow the
index → manifest chain to read the Created timestamp, so it never sees
new tags. Pinning to a single linux/amd64 build with no provenance/sbom
produces a plain Docker v2 manifest that image-updater can read.
2026-04-29 12:37:50 -05:00
09cf9c7d37
remove duplicate github deploy.yml; only forgejo build.yaml runs now
Forgejo Actions executes both .github/workflows/ and .forgejo/workflows/.
deploy.yml was a duplicate of .forgejo/workflows/build.yaml that used
docker/build-push-action@v5, which produces OCI image-index manifests
that argocd-image-updater cannot read. Removing it leaves only the
classic-docker-build workflow.

elixir.yaml, claude.yml, claude-code-review.yml, dependency-updates.yml
are kept (no forgejo equivalents).
2026-04-29 12:35:04 -05:00
50d5309759
README: argocd, not flux 2026-04-29 11:12:50 -05:00
279403bdb9
forgejo CI: drop manifest-bump steps; argocd-image-updater handles it now 2026-04-29 11:05:59 -05:00
FluxCD
d87eeab375 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777477809-208401e [skip ci] 2026-04-29 15:53:08 +00:00
208401e8b7
remove obsolete flux GitRepository/Kustomization manifest 2026-04-29 10:49:37 -05:00
FluxCD
15c44c45bc chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777477694-24d353c [skip ci] 2026-04-29 15:48:21 +00:00
24d353cec4
drop manifest-bump deploy job; argocd-image-updater handles it now 2026-04-29 10:47:54 -05:00
FluxCD
48f7f48abb chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777476137-6a22d2e [skip ci] 2026-04-29 15:22:32 +00:00
6a22d2e457
pin image to last-built tag main-1776451638-5ab2ffc
The previous commit referenced an image tag that was never pushed to the registry,
breaking deploys. Pin to the last working tag until CI produces a new build.
2026-04-29 10:21:54 -05:00
8cea244ea5
Revert "Reapply "ci: deploy via rollout restart instead of git-commit image bumps""
This reverts commit 40ad86b49e.
2026-04-28 15:05:36 -05:00
40ad86b49e
Reapply "ci: deploy via rollout restart instead of git-commit image bumps"
This reverts commit 0625438700.
2026-04-28 15:04:15 -05:00
FluxCD
a949d4e08d chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777404332-0625438 [skip ci] 2026-04-28 19:25:39 +00:00
0625438700
Revert "ci: deploy via rollout restart instead of git-commit image bumps"
This reverts commit f093b1bb4b.
2026-04-28 14:24:53 -05:00
f093b1bb4b
ci: deploy via rollout restart instead of git-commit image bumps
Switch deployment to floating :main tag with imagePullPolicy: Always
and have CI trigger a rollout restart directly via kubectl. Removes
the [skip ci] image-bump commits from main's history.

Requires a KUBECONFIG_DATA secret (base64-encoded kubeconfig with
permission to restart deployment/aprs in the aprs namespace) in
Forgejo Actions.
2026-04-28 14:22:04 -05:00
FluxCD
61fa83b3c4 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777403979-3f2e025 [skip ci] 2026-04-28 19:20:54 +00:00
3f2e0252d5
refactor: dedupe utilities, prefer pattern matching, tighten specs
- consolidate Haversine: CoordinateUtils delegates to GeoUtils;
  InfoLive.haversine/4 reuses it (m -> km)
- AprsSymbol: collapse 3 sprite-info builders onto build_sprite_info/2
  and add a sprite_info @type
- DataBuilder: 3 weather unit converters share convert_unit/4 with
  explicit clauses for "N/A", numeric, and binary inputs
- mobile_channel: do_callsign_match/2 uses pattern-match clauses for
  wildcard handling instead of nested if
- info_live: replace nested case in position_changed? with multi-clause
  coords_changed?/1; format_timestamp_for_display pipelines into a
  guarded build_timestamp_display/1
- api_docs_live: collapse chained single-key assigns into keyword-list
  assign/2 calls
- add strict @spec coverage on all touched helpers; tighten new specs to
  match dialyzer success typing (no contract_supertype warnings)
2026-04-28 14:18:58 -05:00
FluxCD
64f464e782 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777312679-e590956 [skip ci] 2026-04-27 18:02:09 +00:00
e590956732
flux refactor 2026-04-27 12:56:59 -05:00
FluxCD
a3ead3f941 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777301232-f005a1a [skip ci] 2026-04-27 14:49:56 +00:00
f005a1a119
fix: prevent incoming packets from closing user-opened map popup
Add a client-side userOpenedPopupMarkerId lock that's set instantly when
a user manually opens a popup (via click, OMS spiderfy click, or long-press)
and cleared when the popup closes. All programmatic openPopup paths
(highlight_packet, addMarker openPopup flag) now respect the lock.

Closes the network round-trip race where new packets arriving between
the user's click and the server's marker_clicked ack could steal the popup.
2026-04-27 09:46:45 -05:00
FluxCD
5e277ddb9d chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777075248-ec0a64c [skip ci] 2026-04-25 00:01:15 +00:00
ec0a64cf5f
faster tests 2026-04-24 19:00:24 -05:00
FluxCD
fa0eb7704b chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777053882-a377847 [skip ci] 2026-04-24 18:05:48 +00:00
a377847122
chore: remove unused deps, replace resend with custom Swoosh adapter, fix test isolation
Remove faker, floki, igniter, ecto_psql_extras (zero usages), exvcr
(zero usages), and resend. Replace resend with Aprsme.Swoosh.ResendAdapter
using the already-present req dependency. Frees 23 packages total from
the lockfile including hackney, certifi, and the tesla dependency chain.

Fix two pre-existing test isolation bugs:
- signal_handler_test called the real ShutdownHandler.shutdown() via SIGTERM
  simulation without restoring state, causing page_controller_test to see
  shutting_down: true and return 503
- page_controller_test setup now resets ShutdownHandler state defensively
2026-04-24 13:04:18 -05:00
FluxCD
5524f7be68 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777042745-a4fed06 [skip ci] 2026-04-24 14:59:10 +00:00
a4fed063f7
test: normalize_ssid integer coercion + keyset cursor pagination 2026-04-24 09:58:40 -05:00
FluxCD
8af9300469 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777042654-145ff5f [skip ci] 2026-04-24 14:57:39 +00:00
145ff5fecd
test: MapLive historical_loading_timeout matching generation + show_error handler 2026-04-24 09:57:11 -05:00
FluxCD
ef630f2712 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777042413-a1f88c4 [skip ci] 2026-04-24 14:53:38 +00:00
a1f88c41bd
test: expand coverage for StatusLive cluster render + MobileChannel type conversions 2026-04-24 09:53:10 -05:00
FluxCD
97cbe8cf6f chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777042295-4a4e25c [skip ci] 2026-04-24 14:51:41 +00:00
4a4e25c08f
test: cover InfoLive.Show path decode branches + position fallback 2026-04-24 09:51:07 -05:00
FluxCD
0994b4d2f8 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777042104-2a69499 [skip ci] 2026-04-24 14:48:29 +00:00
2a69499488
test: expand Is coverage — terminate w/ socket, backpressure idempotency, status fallback 2026-04-24 09:47:59 -05:00
FluxCD
4096dbf82d chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777041532-84a61bd [skip ci] 2026-04-24 14:38:58 +00:00
84a61bd95c
test: expand coverage on cluster, shutdown, signal, packets helpers 2026-04-24 09:38:27 -05:00
FluxCD
340707ebf9 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777039907-3c5447e [skip ci] 2026-04-24 14:11:55 +00:00
3c5447e0b6
test: Packets MicE struct + ParseError position extraction 2026-04-24 09:11:11 -05:00
FluxCD
2352a7ef9e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777039685-4875904 [skip ci] 2026-04-24 14:09:17 +00:00
4875904303
test: InfoLive.Show weather link + no-packet branches 2026-04-24 09:07:29 -05:00
FluxCD
f421cf7b13 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777039440-e3a6a82 [skip ci] 2026-04-24 14:04:08 +00:00
e3a6a8268d
test: MapLive tracked-callsign filtering + trail duration cleanup 2026-04-24 09:03:31 -05:00
FluxCD
247c77a177 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1777039336-cde015d [skip ci] 2026-04-24 14:02:23 +00:00