[general]
name=RecoverLand
qgisMinimumVersion=3.40
description=Local GIS data audit and recovery: automatic capture, search and restoration of modifications
about=RecoverLand automatically captures every modification (attribute, geometry, deletion) in a local SQLite journal, then allows you to search, compare and restore previous states of features.
version=4.9.0
changelog=4.9.0 First plugins.qgis.org release. Qt6/QGIS4 fix: closeEvent now uses QgisCompat.MSG_YES/MSG_NO instead of QMessageBox.Yes/.No (was crashing on Qt6 with AttributeError: type object 'QMessageBox' has no attribute 'Yes'). Pre-upload hardening for the QGIS plugin scanner: SQL-fragment whitelist tightened in _cutoff_where (assert_safe_fragment on ds_cond/cutoff_col/op), trace_clause / user_clause now built with str.join() instead of `+` to silence Bandit B608 false positive (the `# nosec B608` line marker did not propagate across multi-line implicit string concatenation), 20 flake8 warnings fixed across 10 files (W503 operators moved to end-of-line in event_stream_repository, integrity, write_queue, search_service, schema_drift, support_policy, restore_service, rewind_dedup, observability, qgs_task_support; E302 in support_policy, E226 in write_queue). Reproducible packaging via scripts/build_release.py (sources from git ls-files + defense-in-depth blacklist with dotfile whitelist, single RecoverLand/ top-level, stable dist/RecoverLand.zip). docs: threading-model diagram decluttered (architecture.html). Same SQLite journal, same rewind engine, same trace lifecycle as 4.8.2. 4.8.2 Geometry diagnostics: provider.reloadData after commit (stale provider cache on GPKG/PG), detailed logs in _buffer_update to expose silent failures (target_fid, attr_ok/fail, wkb_len, geom rejected). 4.8.1 Critical fix: canvas refresh after Rewind/Undo via refreshAllLayers (cache invalidation). 4.8.0 UX hardening: reentrant tracker suppress (fix bug where Rewind captured its own edits), visual feedback on restore cancel, visible auto-undo failure logs, tracking disable confirmation, accurate STRICT cancel message, tracking toggle log. 4.7.0 QA hardening: strict atomic temporal restore, pre-check geom capability before attr write, accurate cancel state, real-layer preflight, write queue explicit reject, journal lock degraded mode, Python 3.14 XMLParser fix. 4.6.0 Perf: async stats and smart bar, BLOB-free search, strict restore chunked by action, lightweight commit capture (NoGeometry). 4.5.0 qgisMinimumVersion lowered from 3.44 to 3.40 LTR. compat.py: cross-version resolvers for Qgis.GeometryType, Qgis.WkbType.NoGeometry, plus qgis_version_info() and is_qt6() helpers. geometry_preview.py: QgsRubberBand uses QgisCompat.GEOM_* (no more raw ints, fixes Qt6 strict TypeError). geometry_utils.py: NoGeometry detection covers Qgis.WkbType and QgsWkbTypes paths. CI matrix uses floating tags (ltr, latest, 4.0-trixie). 15 compat regression tests added. 4.4.0 Fix: dashboard showed 0 on PG/DB layers (timezone drift in date filter). Fix: project switch kept stale journal data. Dashboard now refreshes in real time after each commit. 4.3.1 Datasource alias table for moved layers. Writer lock (PID-based, Windows-safe). Journal audit service. Public API (journal_path, log_path, stats). Rotating log handler. Password scrubbing via QgsDataSourceUri. Dashboard shows full journal span on open. 4.2.0 Security hardening (defusedxml, SQL safety, log sanitization). DB restore: PostgreSQL, MSSQL, Oracle via saved connections. Removed legacy PG code (~930 lines). 4.1.3 Temporal restore, time slider, schema v2, preflight checks, QGIS 3.44-4.x compat. 4.0.0 Local SQLite audit, automatic capture, paginated search, schema drift, retention.
author=GEODECI
email=youcef.geodesien@gmail.com
category=Data Management
tags=audit,recovery,restore,sketching,versioning,local,sqlite,temporal,rollback,health,preview
icon=icon.svg
qgisMaximumVersion=4.99
experimental=False
deprecated=False
homepage=https://github.com/yadda07/recoverland/
tracker=https://github.com/yadda07/recoverland/issues/
repository=https://github.com/yadda07/recoverland/
