Repository navigation
Releases
Velorona 1.1.11
1.1.11 — 2026-11-01 (compared with 1.1.10)
Why it matters: ECCC radar no longer shows an "Observed" 0.0 mm/h for a place it cannot see (Phoenix did); heights can come from a raster you hold (offline, no rate limit), a weather analysis now leaves a record on your computer that "What changed" compares against, and rain-fade wording no longer claims a prediction.
Added
- Elevation source choice in the terrain dialog: online (Open-Meteo, as before) or any single-band raster layer of the project. Elevation is typed Reference data (DEM) in the Evidence view, exports, Excel data dictionary and the dock (online or local), never Observed. A raster that does not cover the whole path, has nodata cells on it, or has no coordinate system makes the analysis NO DATA with the reason; nothing is substituted and 0 m is never used.
- Local history (this computer only, nothing is uploaded): weather values and the three numbers derived from them are kept in
<QGIS profile>/velorona/history.sqlitefor 24 h (1 h to 7 d), at most 5 MB / 20,000 values. A History window (timeline with "N hours ago", observed and model-derived apart, CSV export, retention, clear this link / clear all) and a "What changed" block in the weather result. The rules, wording, retention/size pruning, validation and CSV are the sharedaei-history-contractpackage (also used by Velorona Map), an optional dependency: without it history is off with an instruction and nothing else changes. The names of your own sites and links are stored in the same local file next to their codes. - Caching of elevation values and bounded backoff on HTTP 429 now come from the library (aei-link-clearance 0.3). The plugin's own terrain fallback for the 0.2.x library is removed;
provider_retrystays for the weather fetch. - Guide links and message IDs shared with Velorona Map (
core/messages.json, refreshed withtools/sync_messages.py): a "?" button and a Guide button openhttps://map.velorona.ai/guide#<ID>; the Summary shows the ID of a NO DATA reason. Nothing is sent from the plugin. - Menu: Get updates opens
https://map.velorona.ai/joinin the browser. The plugin sends and counts nothing. - Data credits: "Elevation/Weather data by Open-Meteo.com" (CC BY 4.0, with links) and the Copernicus DEM GLO-90 licence notice (ESA licence Art. 6(b) and 6(c)) under the results panel, in the CSV preambles, the Excel Summary and the README; terrain from your own raster credits neither.
tools/gate.sh: local release gate and pre-push hook (replaces GitHub Actions while they are unavailable).
Fixed
- ECCC radar only inside Canada (message
I-WEATHER-RADAR-NOT-COVERED). ECCC's radar mosaic includes US radars and answers 0 mm/h "Undetected" where no radar can see, so a link in Phoenix showed an Observed radar 0.0. The outline is the Map's own (core/eccc_coverage.json, from Natural Earth, cut back about 1 km from the US border;tools/sync_eccc_coverage.py). Outside it the radar service is not asked, nothing is shown or stored, and the result and exports say "Not covered: ECCC radar is used only inside Canada, so no radar value is shown or stored for this location." The station (within 50 km) and the model value are unchanged. Tests run 85 places through both the plugin and the Map's function: 0 disagreements.
Changed
- Terrain and weather analyses, and the weather of a selected Fixed Service link, run in a background task (QGIS task manager) instead of freezing the interface during the network request. Selecting a link shows its record at once with "Loading weather"; the panel updates when the weather arrives (only if that link is still selected). One request runs at a time and the newest selection wins.
- "Predicted rain fade" is now "Estimated rain fade", derived from the current rain rate; status definitions say so. Library field names are unchanged.
- Every model weather row (exports and the weather panel) states source, kind, time and unit. Open-Meteo's time is the site's local time and is labelled so, never as UTC.
- Evidence, summary, workbook, layer text and the dock name the elevation source actually used instead of always the 90 m surface model.
Requirements
aei-link-clearance>=0.3.0,<0.4(was>=0.2.0,<0.3);aei-history-contract>=0.2.0,<0.3(optional);aei-microwave-link-exposure>=0.2.0,<0.3unchanged.
Tests
- New:
test_elevation_seam.py,test_history_store.py,test_history_changes.py,test_history_capture.py,test_history_view.py,test_freshness.py,test_no_predicted_wording.py, real-QGISqgis_local_dem_e2e.py,qgis_history_e2e.pyandqgis_link_weather_e2e.py.
Velorona for QGIS 1.1.9
Velorona for QGIS 1.1.9
Before you install: required Python packages (QGIS does not install them for you)
Velorona needs these Python packages in the Python that QGIS itself uses (not your system Python):
| Package | Required version |
|---|---|
aei-link-clearance |
>=0.2.0,<0.3 |
aei-microwave-link-exposure |
>=0.2.0,<0.3 |
aei-geo-features |
any |
skyfield |
any |
QGIS does not auto-install Python packages for plugins (plugin_dependencies in metadata.txt only names other QGIS plugins). Install them, then restart QGIS.
From inside QGIS (recommended; Plugins > Python Console):
from pip._internal.cli.main import main; main(['install', '-U', 'aei-link-clearance>=0.2.0,<0.3', 'aei-microwave-link-exposure>=0.2.0,<0.3', 'aei-geo-features', 'skyfield'])
macOS, command line (documented in the README; adjust the app name to your install):
/Applications/QGIS-final-4_2_2.app/Contents/MacOS/python3.12 -m pip install skyfield 'aei-microwave-link-exposure>=0.2.0,<0.3' 'aei-link-clearance>=0.2.0,<0.3' aei-geo-features
Verification status, stated plainly: both commands were verified on macOS with QGIS 4.2.2 only. The README documents no Windows- or Linux-specific shell command; on those systems use the Python Console method (it relies on the pip that ships with QGIS's Python, which is not verified there) or install with the pip of the Python your QGIS runs. Windows and Linux are untested.
What you see if they are missing or old
- Missing: Velorona loads a stub and shows a red message-bar notice "Velorona could not start: required Python packages are missing ..." with the install commands above.
- Outdated (for example
aei-link-clearance0.1.x oraei-microwave-link-exposure0.1.x): a persistent warning when QGIS starts, naming each package, its installed and required version, why it matters, and the console command to fix it. Velorona still loads; the first terrain analysis is refused (older clearance releases get the earth-curvature sign wrong) and older microwave releases understate rain loss, most at 6-10 GHz.
Requires QGIS 4.0 to 4.99.
What is new
- Light map readable in the field. Roads, rail, buildings and waterways are distinguishable on the light basemap; street names appear at neighbourhood scale in both themes; city and town names no longer disappear when zoomed in.
- Clearer layers. Short names with the country (
Fixed Service sites (CAN),... (USA),Satellites (CelesTrak)); the groupSpaceis nowSatellite / Orbital Data(older projects are renamed, not duplicated); optional USGS aerial imagery and topographic layers for the United States only, off by default. These are aerial photography and a map, not the satellite layer: the Satellites layer shows calculated satellite positions, not imagery. - Records and Evidence. Headers are no longer clipped by the sort arrow; columns fit the panel at 1024 to 1920 px windows; a selected row is readable on the light theme; Evidence labels line up; a NO DATA panel for a link names the link.
- Every data source says what it is. Ontario towers and ISED cellular sites state live, cached (with the time), empty or unavailable, never keep the previous view's records after a failed request, and report the service's 1,000-record limit. Satellites state fresh, stale (with the retrieval time) or unavailable. The bundled Canada and SatNOGS snapshots state their dates.
- No invented locations. Records with missing or out-of-range coordinates are not drawn. 206 SatNOGS stations that the source reports at 0,0 (no recorded location) are no longer drawn in the Gulf of Guinea.
- Selecting a satellite shows a regional view instead of a 1 km box; clearing a map selection clears the highlighted Records row.
No change to terrain clearance, weather exposure, statuses, exports or the Canada/USA record data.
Data sources and behaviour when one is down
Canada Fixed Service (ISED, bundled snapshot dated 2026-09-01) and SatNOGS ground stations (bundled snapshot of 2026-09-08) are static. Ontario towers and ISED cellular are live services. Weather is Open-Meteo (model values, labelled as such) with the nearest ECCC station. USA links come from a data pack you set up (FCC ULS). Satellites come from CelesTrak, cached for 2 hours; if CelesTrak is unreachable the layer shows its last cached elements labelled stale, or stays empty and says so. Nothing is ever substituted.
Verified, and known limits
- Real QGIS 4.2.2 application (offscreen display) and the 4.0 and 4.2 CI runtimes: unit, end-to-end, UI, USA, workflow and parity suites pass; the exact ZIP installs into a fresh profile (36/36 smoke).
- Real data checked on 2026-10-14: the ISED snapshot against the raw ISED file, the SatNOGS snapshot against the live API, live ISED cellular, live weather for a real link, the USA pack, and live CelesTrak: 599 records retrieved, parsed and propagated, all positions valid, render and selection checks 10/10 (workflow run 38661544311).
- CelesTrak is intermittently unreachable (timeouts and HTTP 500 were seen the same day); that is handled as described above.
- Not verified: Windows and Linux; a real user's desktop session; Open-Meteo free-tier limits (HTTP 429) were not hit.
- Known and planned for 1.1.10: after a live layer refresh a previous selection can remain while the details panel shows the earlier record (a stale, not a wrong, record; see PR #27).
The attached ZIP is the exact artifact built and validated by the Release validation workflow on tag v1.1.9 (run 38663481857: unit, offline QGIS 4.0 and 4.2 suites, security and Qt6 checks, and a clean install and full workflow in a fresh profile on real QGIS 4.0 and 4.2). SHA-256 in SHA256SUMS: d255c5f68c98c98e2f5e97446c1942d7172a845f94a2199b96bd4646bd880164.
Provenance: an earlier locally built package (SHA-256 630863132e2d71fb1b310a0188e66445de8b6975f159b37f0a0b6ebcdf235cfe, from commit 05f9a3a) was validated first and the live CelesTrak check ran on e85c28e, a test-only child of 05f9a3a. This release carries a documentation-only change (the changelog); every packaged code file is byte-identical to that first package, and the attached ZIP's contents are byte-identical, file by file, to a local rebuild from the release commit.
Full details: CHANGELOG.md, docs/ORBIT_DATA.md.
Velorona for QGIS 1.1.8
Velorona for QGIS 1.1.8
The Satellites layer now uses a validated, cached orbit feed: element sets are cached for 2 hours, a failed request is not repeated until a back-off passes, satellites with catalog numbers above 99999 are supported (from their OMM record), each satellite shows when its element set was retrieved and whether it is fresh or stale, and the load runs in the background so the map stays responsive. No change to terrain clearance, weather exposure, statuses, exports or Canada/USA data.
Checked against the live CelesTrak source (599 unique records) and in a real QGIS 4.0.3 runtime (28/28 checks) on this code; the source is intermittently unreachable, in which case the layer stays empty, says so and backs off. Known, unchanged: two QGIS 4.0 layer-group-order checks in the live end-to-end suite fail the same way on 1.1.7; a provider connection error can be shown as raw text.
Requires QGIS 4.0 to 4.99 and the Python packages listed in the README (aei-link-clearance>=0.2.0,<0.3, aei-microwave-link-exposure>=0.2.0,<0.3, aei-geo-features, skyfield).
The attached ZIP is the exact artifact built and validated by the Release validation workflow on tag v1.1.8 (run 38611265141: clean install and full workflow in real QGIS 4.0 and 4.2). SHA-256 in SHA256SUMS: 8db1bff4a91c50e0fa64be4bb9c19bf9bbf1dbc37eebfbf3d5db3d96acab4b34.
Full details: CHANGELOG.md, docs/ORBIT_DATA.md.
Velorona for QGIS 1.1.7
Velorona for QGIS 1.1.7
Calmer USA map and a tidier Records tab and Evidence view. Appearance only: no calculation, status, data, export or Canada behaviour changes. Also carries 1.1.6 (guided USA data setup), which was never published separately.
- USA cluster discs and link lines fade with map scale.
- Link titles lead with the authorization number when the record has one.
- Records: Columns show/hide (display only), readable Operator label, narrow-window layout, accessible names.
- NO DATA reason stated once; "What changed" grouped by baseline; Evidence endpoint text fixed.
Full details: CHANGELOG.
Package: velorona-1.1.7.zip · sha256 fcc56ab0899cb05c86561264c93250eebd93153cbfb0f18a88ee19dae3a6c7c2
Built from merge commit e5e94b1. Verified: package verifier PASS, clean-profile install smoke 36/36; unit 324 passed (2 skipped need external data), QGIS e2e 483/483 · 55/55 · 62/62, Map/QGIS parity 96 fixtures with 0 problems.
Requires QGIS 4.x and the libraries in requirements.txt. Not yet inspected over a real web basemap in desktop QGIS.
Velorona for QGIS 1.1.5
Velorona for QGIS 1.1.5
Before you install: QGIS does not install Python packages for plugins. In QGIS: Plugins > Python Console, run
from pip._internal.cli.main import main; main(['install', '-U', 'aei-link-clearance>=0.2.0,<0.3', 'aei-microwave-link-exposure>=0.2.0,<0.3', 'aei-geo-features', 'skyfield']) and restart QGIS. Then Plugins > Manage and Install Plugins > Install from ZIP.
Highlights: corrected earth curvature; NO DATA instead of guesses; five-level status (CLEAR/WATCH/AT RISK/CRITICAL/NO DATA); one evidence vocabulary; USA (FCC ULS) links loaded per map view from a data pack that is not bundled; terrain from one selected link with the record's frequency typed Observed; Canadian record antenna heights (ISED column 29); rain attenuation now evaluates ITU-R P.838-3 (aei-microwave-link-exposure 0.2.0) - weather results change, re-run saved analyses. Results are not validated beyond what the repository documents (see parity/handoff/ and README).
Verified on the release commit: 300 unit tests; parity with Velorona Map 96 fixtures / 2,026 comparisons / 0 non-MATCH; live QGIS end-to-end 483/483; clean-profile install 36/36.
Asset SHA-256: 3ab8220cfe33a32f40d02bacf211e3855782a810d401411ec45d3aeca0e329c3
What changed compared with 1.1.4: https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugin/blob/main/CHANGELOG.md (compare: v1.1.4...v1.1.5). Installation steps for the required Python packages: README.
Velorona QGIS Plugin v1.1.4
Velorona for QGIS 1.1.4: operational output
- Summary view: results open on a plain-language status (CLEAR, WATCH, AT RISK, CRITICAL or NO DATA) with a one-line reason, then the key numbers, each next to what it is compared against.
- Details view: every value with its comparison and meaning, the weather sources, what changed, the evidence and its limits.
- Evidence view: keeps the full Observed / Model-derived / Calculated / Inferred record.
- Clearance: stated as metres available versus metres required, with the margin. Negative clearance is explained as terrain above the line of sight. The critical point is the point with the lowest Fresnel-zone clearance fraction, which is not necessarily the point with the fewest metres of clearance.
- Weather provenance: every Open-Meteo value is labelled Model-derived (a weather-model value at the site coordinates, not a station measurement). The nearest ECCC station, its distance and observation time, and why it was selected are shown separately.
- Rain handling: rain and showers count as rain. Snow is no longer treated as rain, and if the source does not split precipitation by type the value is labelled total precipitation. This changes the rain rate only for hours with snow or showers.
- Weather history: hourly model weather history per site; each change is stated against an explicit baseline (for example vs 1 hour ago). The history is model data, not station observations.
- Ask box: rule-based questions answered only from the current result, with the supporting evidence cited. Anything it cannot match is declined rather than guessed.
- Excel export (.xlsx): eight sheets: SUMMARY, LINK ANALYSIS, WEATHER, WEATHER HISTORY, ELEVATION-TERRAIN, EVIDENCE, RAW DATA, DATA DICTIONARY. RAW DATA holds the un-rounded values with unit, source and calculation id.
The terrain-clearance and microwave weather-exposure calculations and the aei libraries are unchanged, apart from the rain and snow handling above. Bundled data is unchanged: the same Canada Fixed Service snapshot as 1.1.3 (ISED file of 2026-09-01).
Requires QGIS 4.x and the aei-link-clearance, aei-microwave-link-exposure, aei-geo-features and skyfield packages in QGIS's Python (see the README).
Install: download velorona-1.1.4.zip, then in QGIS: Plugins → Manage and Install Plugins → Install from ZIP.
Velorona QGIS Plugin v1.1.3
Velorona for QGIS 1.1.3 (data correction)
The bundled Canada Fixed Service snapshot had one site (Regina, SK, ised-fixed-50.41056,-104.61722) whose station role was stored as the literal text "TX" with quote characters; it is now TX. Nothing else changed: 24,859 sites and 16,956 links, same ids and order, ISED file of 2026-09-01. No code change.
Install: download velorona-1.1.3.zip and use QGIS > Plugins > Install from ZIP. Canada data only; US data is not in the plugin yet. Previous published version: 1.1.2.
Velorona QGIS Plugin v1.1.1
Fixes the QGIS plugin repository static-analysis findings (Bandit B112 x2, Flake8 E731 x2, E741). No other functional changes.
Velorona QGIS Plugin v1.1.0
Adds a missing-dependency guard: if aei-link-clearance, aei-microwave-link-exposure, aei-geo-features or skyfield isn't installed in QGIS's Python, the plugin now loads and shows a clear message instead of crashing with a traceback.
Velorona QGIS Plugin 1.0.1
Metadata-only release: corrects metadata.txt for plugins.qgis.org
submission readiness. No plugin functionality, analysis engines,
selection behavior, layer colours, clustering, export, or CRS handling
changed from 1.0.0.
Changed since 1.0.0
repository=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugintracker=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugin/issueshomepage=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugincategory=Vector(wasPlugins, an invalid category value)license=GPL-2.0-or-later(already present since 1.0.0)
Requirements
- QGIS 4.0–4.99 (validated against QGIS 4.2.2 / Qt 6.11.1 / Python 3.12)
- Python packages, installed into QGIS's own Python environment (not
your system Python):aei-microwave-link-exposure,aei-link-clearance,
aei-geo-features,skyfield
Install
- Install the four packages above into QGIS's own Python interpreter, e.g.
on macOS:/Applications/QGIS-final-4_2_2.app/Contents/MacOS/python3.12 -m pip install \ skyfield aei-microwave-link-exposure aei-link-clearance aei-geo-features - In QGIS: Plugins → Manage and Install Plugins → Install from ZIP,
and selectvelorona-1.0.1.zipfrom this release.
License
GPL-2.0-or-later (see LICENSE).
The 1.0.0 release remains published and unchanged.