Project validation: find the problems before the client does.
Validate project runs fourteen checks over the whole design and lists what it finds in a dockable panel — filter by severity, layer or rule, click any issue to jump straight to it on the map, and export the run as a report.
New
- Fourteen validation rules — topology and connectivity, referential integrity, feature identity, required attributes, value domains, length coherence, CRS consistency and geometry health. Rule ids (
A1,D3, …) are stable and untranslated everywhere, so you can filter on them and quote them in a ticket. - A results panel that tells you what it looked at. Errors sort to the top; filters only offer values actually present; a clean run reports its scope ("no issues — 14 rules over 15 layers") rather than a bare "OK". A rule that crashes is named instead of passing silently, and a run where every rule failed is never reported as a clean project.
- Audit-ready reports — export a run as self-contained HTML (handover and audit files; no internet needed, prints cleanly), JSON (machine-readable, stable keys,
format_version) or CSV (spreadsheets and issue trackers). - Recalculate lengths… — rewrites stored lengths that disagree with the drawn geometry. It shows exactly what will change before writing anything, skips layers with unsaved edits, and never touches your slack values.
Fixes
- True ground metres, everywhere. Lengths are now measured on the project ellipsoid. Routes and cables previously stored the length in map units, which in Web Mercator is inflated by 1/cos(latitude) — about 41 % at Serbian latitudes, 55 % in the Netherlands, 86 % in Finland. Pipes were already correct, so a trench and the duct inside it could disagree by that margin in the same project, and a bill of materials over-ordered cable to match. New features are measured correctly; run Recalculate lengths… to repair existing ones.
- The fiber break tool accepted a click near any line, so a break could be recorded against a route or a duct and stored as if it were on a cable. It now targets cable layers only, and B1/B2 report the bad references already sitting in your projects.
- Placing an extension or a fiber break no longer creates an empty "Poles" layer as a side effect.
- Shipped layer styles named "MS Shell Dlg 2", a Windows-only font, so every Linux and macOS user got substituted label fonts and a warning per layer on load. They now use the portable "Sans Serif".
- Opening a QGIS 4 project in QGIS 3 no longer re-runs the schema migration. QGIS 4 stores project properties in a form QGIS 3 cannot read, so the schema marker now falls back to the copy in the GeoPackage. Validation also reports a project left with no CRS, which is what that same QGIS limitation does to a downgraded project.
- The About dialog showed the wrong version, and Validate project shared the health check's toolbar icon.
Documentation
- User guide — running a validation, reading the panel, exporting a report, and repairing stored lengths.
- Rule reference — every rule: what it checks, why it matters in the field, and what to do about a finding.
- Demo project — a small, deliberately imperfect design where twelve of the fourteen rules fire, each from exactly one planted fault, alongside the report it produces.
tests/test_sample_report.pyfails the build if the committed report no longer matches a fresh run, so the published sample cannot go stale.
Translations
The plugin is now translatable — English source catalogue and tooling in place. docs/TRANSLATING.md assumes no programming, Git or terminal experience. Partial translations are welcome and ship as-is; anything you leave stays in English. Claim a language →
Quality
- Clean plugins.qgis.org Security & Quality scan: Bandit (all severities), secrets detection, flake8, file permissions and suspicious files — 0 findings across all five — and the Qt6 compatibility check passes.
- pytest green on QGIS 3 / Qt5 and QGIS 4 / Qt6 in CI.
- Manually verified end to end on QGIS 3.40 (Qt5) and QGIS 4.2 (Qt6) across four projects — from-scratch, cross-version, a migrated pre-1.0 project, and the demo — in both a projected national grid and Web Mercator, with drawn geometry checked against the QGIS measure tool. Nine defects were found that way and fixed, each with a regression test.
- Validation of a 25,500-feature project completes in about two seconds.
Targets QGIS 3.22 LTR → QGIS 4 / Qt6.
The validation engine and its reporting were developed with support from the NLnet NGI0 Commons Fund. The length-measurement fix, the stray-layer fix, the i18n groundwork and the support links were not funded by it.
If FiberQ saves you time, you can help fund its development: GitHub Sponsors · other ways to give.