{"name": "Sec Interp", "package_name": "sec_interp", "version": "3.6.0", "experimental": false, "qgis_min": "3.0.0", "qgis_max": "4.99.0", "downloads": 346, "uploaded_by": "geociencio", "upload_datetime": "2026-05-17T19:30:09.219028", "changelog": "3.6.0 (2026-05-12)\n* Next-Gen Stability & QGIS 4 Ready:\n- Compatibility: 100% compatibility with QGIS 4.x and Qt6 by resolving unhashable QgsTask issues.\n- Architecture: Eradicated legacy UI threading segmentation faults using robust asynchronous task anchoring and QTimer.\n- Rendering: Fixed race conditions during rapid preview regeneration through strict state locks and gracefully handled C++ object lifecycles.\n- DevOps: Modernized qgis-manage deployment tool with cross-version profile support and auto-discovery.\n- Quality: Maintained Cyclomatic Complexity <= 10 and 100% test pass rate across 620 tests in Docker.\n3.5.0 (2026-04-28)\n* Operational Excellence & Autonomy:\n- Gen 6 Agentic Autonomy: Implemented self-pruning memory management and semantic skill injection for optimized development.\n- Quality Gate: Enforced project-wide CC <= 10 with automated pre-push audits.\n- Documentation: Achieved 100% Google-style docstring coverage for the entire API.\n- Architecture: Optimized spatial indexing in critical UI paths and verified thread-safe core processing.\n3.4.0 (2026-03-29)\n* Integration & Translation Completeness:\n- i18n: Achieved 100% translation coverage across all 13 supported languages.\n- i18n: Rewrote translation injection tool (apply_full.py) with ElementTree for robust XML parsing.\n- Testing: Added comprehensive Integration Tests for Vector Drivers (GPKG, SHP, DXF) and core parsing.\n- Core: Improved placeholder protection during automatic translation generation.\n3.3.0 (2026-03-14)\n* Extreme Stability & QGIS 4.x Readiness:\n- Stability: Resolved memory leaks and orphaned signal connections in SignalManager/main_dialog.\n- UI: Implemented cleanup_finalized in measurement tools to ensure canvas hygiene.\n- Core: Migrated to DTOs (DrillholeProjection) and increased Return Type Hint coverage to 44.5%.\n- Rendering: Switched to Rule-Based Renderer for 3D exporters (100% reliable styling).\n- Quality: Achieved 91% GUI test coverage and 100% API-agnostic compliance (qgis.PyQt).\n3.2.0 (2026-03-02)\n* QGIS 4.x Readiness & Structural Refinement:\n- Compatibility: 100% compliance with API-agnostic principles (qgis.PyQt). Verified QgsTask background processing.\n- UI: Refactored PreviewLayerFactory to use shared geometry/exaggeration helpers (extracted _apply_exaggeration, _to_qgs_points).\n- GUI: Standardized DialogSettingsPersistence to reduce boilerplate in session management.\n- Testing: Re-enabled legacy skipped tests (4 tests) by updating geometry mocks to native API.\n- Testing: Added integration suite for 3D vertical projections in Cartesian systems.\n3.1.0 (2026-02-19)\n* Global i18n Expansion & Architecture Pipeline:\n- i18n & GUI: Mass automatic translation of missing strings in all 14 Supported languages. Added translatable validation messages.\n- Export: Added debug logging and i18n support to exporters. Added 'Reset to defaults' button for export options.\n- Core: Modularized ProjectValidator using Pipeline pattern. Decomposed StateManager.\n- Core: Eliminated circular imports in validation. Stabilized QCoreApplication imports for tests.\n3.0.1 (2026-02-17)\n* Quality & Stability Release:\n- Signals: Eliminated 22 signal leaks, achieving zero-leak status.\n- Quality: Achieved 70.0/100 maintainability score with project-wide formatting.\n- i18n: Expanded support to 14 languages (added Polish, Dutch, and Finnish).\n- Maintenance: Optimized plugin size by 80% via .qgisignore.\n3.0.0 (2026-02-14)\n* Major Evolution - Global Reach & Core Stability:\n- i18n: Achieved 100% core coverage for 8 languages (ES, FR, PT_BR, DE, RU, ZH_CN, ID, IT).\n- Automation: Integrated full i18n maintenance workflow into Makefile (`make transup`).\n- Architecture: Decomposed `DrillholeService` into specialized processors (`Collar`, `Survey`, `Interval`) using the Facade Pattern (ADR-0008).\n- Architecture: Implemented `AccessControlService` for secure management of restricted 3D features.\n- Domain Layer: Transitioned from monolithic `types.py` to a modular `core.domain` package (Entities, DTOs, Enums).\n- Performance: Enhanced asynchronous background tasks with safer UI decoupling.\n- Infrastructure: Automated translation engine (`apply_full.py`) with version-controlled master data.\n- Quality: Overhauled test infrastructure with robust QGIS API mocks (160+ mock methods).\n2.9.0 (2026-02-01)\n* Quality Sprint - Architecture Consolidation:\n- Core: Decoupled DrillholeService into specialized processors (SRP).\n- Core: Modularized 'core.types' and unified data flow across services.\n- Core: Replacing .clone() with robust constructors and centralized context setup.\n- Quality: 100% test success with improved environment stabilization.\n2.8.0 (2026-01-25)\n* Debt Reduction & UI Improvements:\n- Core: Full Core-QGIS Architectural Decoupling using WKT/DTO pattern.\n- Core: Improved thread-safety for background tasks.\n- UI: Added legend visibility toggle with project/global persistence.\n- Infrastructure: Enhanced geometric mocks (azimuth support).\n- Documentation: Fixed API docs Sphinx build.\n\n2.7.0 (2026-01-18)\n* Operational Excellence & Documentation:\n- Infrastructure: Dockerized QA environment (100% tests passing).\n- Documentation: Automated Sphinx docs & Clean HTML.\n- Architecture: 3-Level Robust Validation & Dialog Managers.\n- Features: Enhanced 3D Export (PolygonZ) & Sidebar UI.\n- i18n: Full English/Spanish support.\n\n2.6.0 (2026-01-09)\n* Infrastructure & DevOps:\n- CI/CD: Fully dockerized pipeline using official QGIS image.\n- Optimization: CC <= 5 in 3D Exporter.\n* Stability & Quality:\n- Resolved mock pollution in GUI tests.\n- Project-wide code formatting (black).\n- Added performance benchmarks.\n* Internationalization:\n- Translated Measure tool and default namings.\n* GUI & Validation:\n- Unified validation logic and UI completion checks.\n\n2.5.0 (2026-01-03)\n* Major Features:\n- 3D Interpretation Export: Export 2D interpretations as real 3D Shapefiles (PolygonZ).\n- Settings Page: New sidebar page to manage plugin configurations.\n* Improvements & Stability:\n- Overhauled Data Persistence: Robust restoration with multi-scope support and layer name fallback.\n- Proactive Auto-save: Parameters are remembered immediately on Preview or dialog Accept.\n- Quality Assurance: Project-wide Ruff activation and legacy validation fix.\n- Forced Disk Sync: Immediate configuration writing for increased reliability.\n- Fixed Geology Preview Rendering error.\n\n2.4.0 (2025-12-31)\n* Major Features:\n- Internationalization System: 5 languages (ES, FR, DE, RU, PT_BR) with auto-locale detection.\n- Interpretation Tool: Interactive feature digitizing on profile with smart snapping and auto-styling.\n* Architecture & Refactoring:\n- Complete Core Refactoring (Phases 1-6): DI, Exceptions, CacheManager, Async, Validation.\n- GUI Decomposition: Split main dialog into specialized managers.\n* Infrastructure:\n- Migrated to 'uv' for dependency management (uv.lock).\n- Centralized configuration in pyproject.toml.\n- Pre-commit hooks and Strict Linting (100% QGIS Compliance).\n* Critical Fixes:\n- Stability improvements in Preview rendering and I18n loading.\n\n2.3.0 (2025-12-25)\n* Enhanced Multi-Point Measurement Tool:\n- Support for polyline tracing with unlimited measurement points\n- Dedicated \"Finalize\" button for explicit measurement completion\n- Comprehensive metrics: Total 3D distance, Horizontal distance, Elevation change, Average slope\n- Persistent visual feedback with green vertex markers and measurement lines\n- Auto-reset on new measurement for improved workflow\n* Structural Improvement Plan - Major Architectural Refactoring:\n- Phase 1 - Architectural Decoupling:\n* Extracted DialogToolManager for map tool encapsulation\n* Centralized preview logic in PreviewManager\n* Eliminated PyQt dependencies from core/validation (enum-based FieldType)\n- Phase 2 - Complexity Reduction:\n* Modularized geometry.py into extraction/processing/filtering sub-packages\n* Refactored DrillholeService with extracted private methods\n* Implemented adaptive LOD (Level of Detail) for topography\n- Phase 3 - Performance Optimization:\n* Robust cache with hash-based invalidation in PreviewManager\n* Spatial indexing (QgsSpatialIndex) for drillhole filtering\n* Improved rendering performance (84ms for 6km sections)\n- Phase 4 - Documentation:\n* Created ARCHITECTURE.md (unified technical documentation)\n* Created DEVELOPMENT_GUIDE.md (developer onboarding)\n* Improved docstring coverage to 75.9%\n* Code Quality Improvements:\n- Quality score increased from 71.1 to 74.4 (+4.6%)\n- Fixed all critical lint errors (imports, typing, complexity)\n- Removed deprecated typing imports (Dict/List \u2192 dict/list)\n- Improved error handling with logger.exception\n* Critical Bug Fixes:\n- Fixed ModuleNotFoundError for geometry_utils sub-package\n- Resolved NameError for Optional in profile_service.py\n- Fixed AttributeError in measure_tool (DialogToolManager access)\n- Corrected TypeError in create_buffer_geometry signature\n- Fixed UnboundLocalError in PreviewManager cache handling\n- Added CRS transformation support in spatial filtering\n- Implemented field validation for drillhole processing\n- Fixed geology disappearing on subsequent preview clicks (cache persistence)\n- Fixed drillholes not rendering (missing return statement in _generate_drillholes)\n- Added diagnostic logging for drillhole trace generation\n\n2.2.0 (2025-12-22)\n* Major Refactoring & Architecture:\n- Moved main SecInterp class to plugin root (sec_interp_plugin.py).\n- Modularized validation into core/validation/ package.\n- Fragmented SecInterpDialog into specialized managers.\n* Documentation & Optimization:\n- Translated 100% of documentation (ARCHITECTURE.md) to English.\n- Optimized Help System (removed source code views/redundant raw sources).\n- Slimmed ZIP package by 70% uncompressed through advanced exclusions.\n* Features & UX:\n- Restored visual workflow images to User Guide.\n- Fixed toolbar icon loading and Axis/Grid alignment.\n\n2.1.0 (2025-12-17)\n* Major Feature: Snap-Enabled Measurement Tool\n- Iterative vertex snapping using QgsPointLocator (Avoids project pollution)\n- Performance optimized with locator caching\n* AI Workflow & Reliability:\n- Unicode normalization (NFD) for robust keyword matching (accents support)\n- Direct integration of AI_CONTEXT and Project Brain in prompts\n* Fixes:\n- Resolved QgsSnappingConfig AttributeError (QgsTolerance.Pixels)\n- Eliminated scratch layer warnings\n\n2.0 (2025-12-14)\n* Major Feature: Drillhole Data Handling\n- 3D Projection of drillhole traces onto 2D profile sections\n- Auto-calculation of total depths and handling of vertical holes without survey\n- Visualization of geological intervals along drillhole traces\n* Drillhole Data Export:\n- Export drillhole traces to Shapefile (drillhole_traces.shp)\n- Export interval data with attributes to Shapefile (drillhole_intervals.shp)\n* Major UI Refactoring & Enhancements:\n- New specialized Drillhole Input Page\n- Enhanced Preview System with dedicated persistent rendering for all data types\n- Fixed critical rendering bugs (zoom persistence, async updates)\n* Architecture:\n- Implemented DrillholeService for encapsulated logic\n- Refactored ProfileController to orchestrate multiple data services\n- Unified export logic with extensible Exporter pattern\n\n1.1 (2025-12-12)\n* Performance & Optimization:\n- Implemented asynchronous parallel processing for geological generation\n- Integrated Performance Monitor (RAM & Execution Time tracking)\n- Added non-blocking UI during heavy calculations\n* Preview System Enhancements:\n- Implemented Adaptive Level of Detail (LOD) for high-performance rendering\n- Added Dynamic Zoom-based LOD (details increase as you zoom in)\n- Added Measurement Tool (Distance and Slope/Gradient)\n- Improved CRS handling and fixed blank rendering issues\n* Architecture & Fixes:\n- Refactored services to use Command Pattern for parallel execution\n- Fixed structure projection consistency\n- Resolved \"No valid layers to render\" warnings\n- Fixed Dip Scale Factor application\n\n\n1.0 (2025-12-08)\n* Refactoring & Architecture:\n- Split monolithic modules (algorithms.py, main_dialog.py) into focused components\n- Modularized exporters ecosystem\n- Implemented spatial indexing and native QGIS algorithms for performance\n* Quality Assurance:\n- Added comprehensive type hinting across modules\n- Enhanced test infrastructure with pytest and QGIS support\n- Implemented security fixes (path traversal protection)\n* Major UI Refactoring - Plugin Manager Style:\n- Redesigned main dialog with sidebar navigation (QListWidget + QStackedWidget)\n- Replaced absolute positioning with responsive layouts (QVBoxLayout, QHBoxLayout, QSplitter)\n- Integrated native QGIS theme icons for sidebar items\n- Improved preview/results area proportions with better vertical space management\n- Fixed legend rendering and resizing issues\n* Code Quality Improvements:\n- Extracted LegendWidget to separate module (gui/legend_widget.py)\n- Refactored preview_profile_handler with helper methods and early returns\n- Refactored export_preview with dedicated methods per format (PNG, JPG, SVG, PDF)\n- Applied SOLID principles throughout main dialog class\n* Documentation:\n- Added COMMIT_GUIDELINES.md for standardized commit messages\n- Added RELEASE_PROCESS.md with version release workflow\n- Added drilllogs_research.md with future integration requirements\n\n0.3 (2025-12-03)\n* Major Refactoring - Modular Project Structure:\n- Reorganized codebase into core/, gui/, resources/ packages\n- Improved code maintainability and scalability\n- Better separation of concerns (business logic, UI, resources)\n* Quality Improvements:\n- Achieved Pylint score 10/10\n- Specific exception handling throughout codebase\n- Comprehensive code documentation\n- Configured .pylintrc for consistent code quality\n* Testing & CI/CD:\n- Added pytest infrastructure with QGIS support\n- Created initial unit tests (3 tests passing)\n- Configured GitHub Actions for automated testing\n- Test configuration in tests/conftest.py\n* Build System:\n- Updated Makefile for new structure\n- Refactored deploy.sh for modular deployment\n- Organized build scripts in scripts/ directory\n* Documentation:\n- Added REFACTORING_PR.md with detailed changes\n- Improved project documentation structure\n- Added implementation plans for future features\n\n0.2 (2025-11-30)\n* Major UI Overhaul - Native QGIS Widget Integration:\n- Replaced standard Qt ComboBoxes with QgsMapLayerComboBox for automatic layer population\n- Integrated QgsRasterBandComboBox for intelligent raster band selection\n- Added QgsFileWidget for native file/directory browsing with QGIS integration\n- Eliminated manual layer population code - widgets auto-sync with QGIS project\n- Improved user experience with native QGIS look and feel\n* UI Enhancements:\n- Collapsible results panel (QgsCollapsibleGroupBox) for better space management\n- Read-only results field to prevent accidental edits\n- Fixed Qt enum syntax for better cross-version compatibility\n* New Features:\n- Flexible parsers for geological structural measurements (dip/strike formats)\n- Comprehensive logging system integrated with QGIS Message Panel\n- Enhanced validation logic for QgsMapLayer objects\n* Code Quality:\n- Removed 200+ lines of manual widget population code\n- Cleaner architecture leveraging QGIS native capabilities\n\n0.1 (Initial Release)\n- DEM topographic profile extraction\n- Geological outcrop data extraction\n- Structural point data extraction\n- Interactive preview visualization", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/sec_interp/version/3.6.0/download/"}