Skip to content

0.2.0

Choose a tag to compare

@rpintassilgo rpintassilgo released this 27 Jun 00:50
215ea5d

Added

  • QGIS 4 / Qt6 support. The plugin now loads and runs on QGIS 4 (it previously failed under Qt6). Qt imports go through qgis.PyQt, enums use the PyQt6-scoped form, exec_()exec(), GRASS algorithm IDs are resolved across provider versions (grass: / grass7:), and the metadata declares qgisMinimumVersion=3.16 / qgisMaximumVersion=4.99. (#9)

Fixed

  • Price estimation returned 0 € for pipelines shorter than one booster segment on QGIS 4 / Python 3.12. Python 3.12's compensated sum() broke the final-segment float comparison; the final segment is now detected by index. (#15)
  • Random crashes (SIGSEGV). Background tasks were writing to QgsProject and touching the UI from a worker thread. Tasks now follow a three-phase prepare / work / publish contract: input is read on the main thread, heavy computation runs in the background, and layers are added to the project on the main thread. (#2)
  • False success on failures. Background operations no longer report "completed successfully" when they actually failed — errors now surface via the log and an error dialog. (#7)
  • Plugin lifecycle / ghost UI. Reloading or disabling the plugin no longer leaves a stale toolbar/menu entry or a dangling layersAdded connection. The dialog is now parented to the main window and the toolbar action has a stable object name. (#3)

Changed

  • Centralized the COMET cost model — the formula and its constants now live in a single source of truth, so the routing surface and the CAPEX estimate cannot drift apart. (#4)
  • Reduced duplication (DRY) — shared helpers for raster resampling, layer access, dropdown population, and UI scaffolding. (#5)
  • Separated UI from domain logic — all processing moved into a dialog-free, unit-testable core/ package; the source is reorganized into core / constants / ui / widgets / utils. (#6)
  • Tooling — added Ruff + pre-commit and formatted the codebase (resolved ~499 long-line / E501 issues; line length 120).
  • Internationalization — decided to ship English-only for now; the Qt tr() + .ts path is documented for future translation. (#8)

Compatibility

  • Requires QGIS 3.16+ (works on QGIS 3.16–3.34 and QGIS 4.x).
  • Requires the GRASS provider with a GRASS installation available to QGIS (used by the LCP routing).