Same-day hotfix for v26.4.0. The OMM resolver rewrite (#1007) in the June release consolidated to CelesTrak + Space-Track only, dropping the AMSAT and SatNOGS fallback feeds v26.3.3 had. When the hosted production server deployed today, its Railway egress IPs were silently dropped at the TCP level by CelesTrak (20-second connection-level timeouts, no HTTP error), and with no alternate sources, zero of 40 satellites resolved. Self-hosted installs were unaffected.
Fix
- New
server/utils/tle-to-omm.js— pure-function TLE → OMM JSON converter (no external deps), verified withsatellite.js - New fetch sources
fetchOmmFromAmsat()(amsat.org/tle/current/nasabare.txt) andfetchOmmFromSatnogsIndividual(noradId)(db.satnogs.org) - New state-machine states
AMSAT_INIT/FETCHandSATNOGS_INDIVIDUAL_INIT/FETCHwith 1-hour backoffs CELESTRAK_INDIVIDUAL_INITnow flows toAMSAT_INIT(instead ofSTART) when its work is done- 4 satellites with
data_source: celestrak_active(orphaned by v26.4.0) now resolve via SatNOGS individual fetches
Coverage
- AMSAT bulk feed → 23 amateur sats (ISS, AO-91, FO-29, etc.)
- SatNOGS individual → remaining 17 (13 weather + 4 active)
Verified on Staging and Prod
- Resolver completes its first cycle in ~90 seconds after server start
- 23 amateur sats fill immediately via AMSAT; weather/active sats trickle in via SatNOGS over the following ~4 minutes
- Self-hosted installs benefit too — the resolver now has three independent upstreams instead of one
Also bundled with this release
- PR #1053 (Laura Batalha / @lbatalha) — iturhfprop GHCR workflow
ctxfix - Container workflow timeout failsafes + context fix
Version
package.json/ lockfile: 26.4.0 → 26.4.1 (Z-bump: backend-only)- WhatsNew: v26.4.0 entry subsumed into v26.4.1 with the hotfix appended as the last feature — users coming from v26.3.3 see one combined June release entry
— K0CJH
Docker image: ghcr.io/accius/openhamclock:26.4.1
docker pull ghcr.io/accius/openhamclock:26.4.1