[general]
name=Velorona
qgisMinimumVersion=4.0
qgisMaximumVersion=4.99
description=Telecom link evidence, inside QGIS. Explore -> Select -> Analyze -> Evidence -> Export.
version=1.1.4
author=AID Edge Inc.
email=sara.khosravi.ds@gmail.com
license=GPL-2.0-or-later
about=Velorona for QGIS -- Telecom link evidence, inside QGIS. 1. Explore -- Load public telecom infrastructure and your own data. 2. Select -- Choose a site, link, or two endpoints. 3. Analyze -- Run path clearance, microwave weather exposure, or satellite geometry. 4. Evidence -- See what is observed, what is calculated, and what is inferred. 5. Export -- Take the evidence with you as a structured CSV/GeoJSON result. Three analysis engines, all reused unmodified: Terrestrial Path Clearance (aei_link_clearance), Microwave Weather Exposure (aei_mw_exposure), Satellite/Earth-Space look angles (skyfield/SGP4). Requires aei-microwave-link-exposure, aei-link-clearance, aei-geo-features, and skyfield to be installed in QGIS's own Python environment.
changelog=1.1.4 - Operational output.
    Results open on a plain-language Summary: a 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 shows every value with its comparison and meaning, the weather sources, what changed, the evidence and its limits. Evidence keeps the full Observed / Model-derived / Calculated / Inferred record.
    Clearance is 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 defined as 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.
    Adds 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.
    Adds an 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.
    Adds Export as Excel (.xlsx) with 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.
    Code-quality: Flake8 E741 naming cleanup in the presentation layer (ambiguous variable name renamed); no functional or engineering calculation changes. The Excel writer no longer ships an XML reader (it is a test helper), so the package contains no XML parsing.
    1.1.3 - Canada 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 in the snapshot changed: 24,859 sites and 16,956 links,
    same ids and order, ISED file of 2026-09-01.
    1.1.2 - Qt6 compatibility fixes for the QGIS plugin repository scan: scoped enum names
    (Qgis.RenderUnit.Pixels, QgsSymbolLayer.Property.*, QgsMapBoxGlStyleConverter.Result.Success) and
    QMetaType.Type field-spec annotations in place of QVariant.Type. No functional changes.
    1.1.1 - Static-analysis fixes for the QGIS plugin repository scan: narrowed two broad
    exception handlers in the satellite source (CelesTrak requests now catch only requests errors;
    element-set parsing catches only ValueError/ZeroDivisionError, so unexpected errors surface in
    the satellite status message instead of being skipped), replaced two lambda assignments with
    named functions, and renamed an ambiguous loop variable. No other functional changes.
    1.1.0 - Missing-dependency guard. If aei-link-clearance, aei-microwave-link-exposure, aei-geo-features
    or skyfield is not installed in QGIS's Python, the plugin now loads and shows a message-bar and log
    entry naming what to install, instead of failing with an import traceback. Adds requirements.txt
    listing the required packages (aei-link-clearance is now published on PyPI).
    1.0.0 - First production release. The ISED Fixed Service and SatNOGS ground-station
    snapshots are bundled with the plugin, so Explore no longer depends on files outside the plugin
    directory. Qt6/PyQt6 hardening: the Results Dock and both analysis parameter dialogs used
    PyQt5-only idioms that raised AttributeError on first use under QGIS 4, and a checker
    (tools/check_qt6_enums.py) now guards that whole class of defect. Viewport performance: the live
    tower/cellular queries are debounced, skipped entirely while their layers are hidden,
    deduplicated per viewport, and served from a bounded session cache with negative caching, so
    returning to an already-visited extent costs no network. The initial extent is derived from the
    terrestrial home layers instead of the global space layers. Plugin unload is idempotent and
    cleans its own analysis overlays while leaving loaded public data in place.
    0.2.0 - Experimental local development plugin.
tracker=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugin/issues
repository=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugin
homepage=https://github.com/AIDEdgeInc-Lab/velorona-qgis-plugin
experimental=False
category=Vector
hasProcessingProvider=no
