# CHANGELOG
## 1.0.0 — Initial Public Release

### Added
- Interactive 256×256 DEM window extraction centered on the clicked point.
- Real‑time computation of core terrain metrics:
  - Slope
  - Curvature (profile, plan, total)
  - Local Relief Model (LRM)
  - Hillshade
  - Openness (positive / negative)
  - Sky‑View Factor (SVF)
  - Multi‑Scale Relief Model (MSRM)
- Full set of single‑filter visualization modes:
  - Slope
  - Curvature
  - LRM
  - Hillshade
  - Openness+
  - Openness–
  - SVF
  - MSRM
- Composite mode combining Slope + Curvature + LRM.
- Archaeological presets:
  - Archaeo‑Enhance 1 (LRM + Openness+)
  - Archaeo‑Enhance 2 (SVF + Curvature)
  - Anthropic Edge Detector (Curvature + Slope)
  - Paleochannel Finder (LRM + Openness–)
  - Custom mode
- Scan Mode for continuous preview while moving the cursor.
- Recompute Preview button to refresh the same point after changing filters or parameters.
- Advanced parameter controls:
  - Hillshade azimuth & altitude
  - Openness/SVF radius
  - MSRM small/large scale
  - Optional smoothing for LRM
- Colormap system with 9 scientific palettes:
  - Mono
  - Earth
  - Sand
  - Clay‑Green
  - Shadowed
  - Oxide
  - Relief Shading (USGS‑style)
  - ArchaeoGold
  - Buried Structures
- Dynamic progress bar for all computations.
- PNG and GeoTIFF export, with georeferencing for GeoTIFF.
- Dockable UI panel with collapsible sections.
- Custom MapTool with crosshair cursor.
- Automatic shape matching for all metrics.
- NaN‑safe normalization with percentile clipping.
- Translation system (English/Italian) with automatic locale detection.
- QGIS 4‑compatible raster block extraction and safe array conversion.

### Improved
- Robust handling of invalid raster blocks and coordinate transforms.
- Stable preview rendering with smooth scaling and color‑mapping.
- Optimized LRM, curvature and MSRM computations for small DEM windows.
- More reliable dock initialization and cleanup on plugin unload.
- Enhanced UI responsiveness during heavy computations.

### Fixed
- Prevented preview freezing during metric computation.
- Ensured consistent array shapes across all filters.
- Corrected toolbar icon loading without Qt resource system.
- Resolved issues with MapTool activation and dock visibility.
- Eliminated duplicate entries in QGIS Panels menu.
- Improved error handling for missing or invalid DEM data.

## 1.1.0 — Stability, Code Quality & Refinements

### Improved
- Improved overall plugin stability and reliability.
- Improved plugin cleanup and resource management during unload.
- Improved handling of exceptions during toolbar and dock removal.
- Improved robustness of terrain filter and metric processing.
- Improved Python code quality and consistency across the plugin.
- Standardized whitespace, indentation and blank-line formatting.
- Removed unused QGIS imports and cleaned up module dependencies.
- Improved compatibility with Flake8 code-quality checks.
- Improved readability and maintainability of core filtering and terrain-processing modules.
- Refined MapTool and dock interaction behaviour.

### Fixed
- Fixed bare except statements in plugin cleanup routines.
- Fixed trailing whitespace issues.
- Fixed whitespace before slice delimiters detected by Flake8.
- Fixed missing blank lines between top-level function definitions.
- Fixed excessive blank-line formatting.
- Fixed unused imports in plugin.py.
- Improved error handling during toolbar icon removal.
- Improved error handling during dock widget removal.

### Code Quality
- Addressed reported Flake8 code-quality issues across the plugin.
- Verified file permissions with no security issues detected.
- Verified suspicious-file checks with no issues detected.
- Cleaned up formatting in:
    - core/filters.py
    - core/metrics.py
    - core/terrain_filters.py
    - plugin.py
    - tools/maptool.py

### Compatibility
- Maintained QGIS 4 compatibility.
- No changes to the existing terrain-analysis workflow or archaeological visualization presets.
- Existing filters, presets, export functions and visualization modes remain available.