[1.0.2] - 2026-05-01
Fixed
- Long-path signal/SNR calculation - For HF paths longer than 7000 km, the engine was mixing in an unimplemented
_evaluate_long_modelstub that returned an emptyPrediction(). The smooth-interpolation branch in_combine_short_and_longthen pulledpower_dbwtoward 0 dBW and back-derived a nonsensically smalltotal_loss_db, producing constant-0.7 dBWsignal levels and SNRs of +150 dB or worse for any region beyond 7000 km, with reliability pinned at 100%. Paths beyond 10000 km returned all-zero predictions outright. Until a real long-path model exists, the short-path result is used at all distances. (#137) - TX power propagation to user-added antennas -
params.tx_powerwas stamped ontocurrent_antennaonce before the per-frequency loop, wherecurrent_antennastill pointed at the isotropic default.select_antenna()then swapped in the user antenna whosetx_power_dbwcame from its constructor, leaving a 100 W radio configuration treated as 10 W (a 10 dB undercount). The assignment now happens inside the loop after antenna selection. (#137) - Dashboard buttons unresponsive - A duplicate
const nowdeclaration insideinitializeDashboard()(and again inside itssetIntervalcallback) caused aSyntaxErrorthat prevented the entire<script>block from parsing, leavingtriggerRefreshandshowSettingsundefined when theironclickhandlers fired. Renamed the duplicate locals tocurrentHourInt/tickHour. (#134, #135) - Gray-line terminator rendering -
drawGrayLine()swept a 2° lat/lon grid for points where|solar altitude| < 6°, then bucketed them into 5°-wide latitude bands and emitted one rectangle per (band, longitude segment), rendering the twilight zone as a visible staircase of 10°-tall blocks. Replaced with a closed-form analytic solve at every longitude, drawn as a single smooth polygon. (#136)
Added
- Regression tests for
PredictionEngine- Asserts long-distance predictions produce physically plausible signal levels and thatparams.tx_powerreaches user-added antennas. (#137)
Changed
- Dashboard packaged as installable subpackage - Moved from
Dashboard/tosrc/dvoacap/dashboard/, addeddvoacap-dashboardconsole-script entry point, and shipped HTML/JS/CSS with the package sopip install dvoacap[dashboard]followed bydvoacap-dashboardis sufficient. Backward-compatiblepython Dashboard/server.pyshim retained. (#133)
What's Changed
- Claude/fix pypi publishing 019fhuvqpxhzdmkjtyjxcubv by @skyelaird in #132
- Make the dashboard pip-installable by @skyelaird in #133
- Fix duplicate 'now' declarations breaking dashboard JS by @skyelaird in #134
- Fix duplicate 'now' declaration in served.html so dashboard buttons work by @skyelaird in #135
- Draw gray-line terminator as a smooth analytic band by @skyelaird in #136
- Fix nonsense signal/SNR for HF paths longer than 7000 km by @skyelaird in #137
- Release v1.0.2 by @skyelaird in #138
Full Changelog: 1.0.1...1.0.2