# ND Data Importer Plugin Metadata
# This file contains metadata for the QGIS plugin

[general]
name=ND Data Importer
qgisMinimumVersion=3.0
description=Comprehensive QGIS plugin for importing Australian mining drill hole and assay data with advanced filtering, large dataset optimization, and enhanced theme-aware UI
version=1.3.4
author=Needle Digital
email=divyansh@needle-digital.com

about=The ND Data Importer provides seamless access to Australia's comprehensive mining database. Import drill hole collar, survey, and assay data directly into QGIS with state-wise filtering, company search, chemical element analysis, and optimized handling of large datasets (1M+ records). Features include automatic OpenStreetMap base layer integration, chunked processing for performance, real-time progress tracking, and user-friendly tabbed interface. Perfect for geologists, mining engineers, and researchers requiring spatial analysis of Australian mining data.

# Project links
tracker=https://github.com/NeedleDigital/platform-qgis-plugin/issues
repository=https://github.com/NeedleDigital/platform-qgis-plugin
homepage=https://github.com/NeedleDigital/platform-qgis-plugin

# Plugin configuration
hasProcessingProvider=no
category=Database
icon=icon.png
experimental=False
deprecated=False
server=False

# Tags for discoverability - comma separated
tags=mining, drill hole, assay, geochemistry, database, australia, import, data

# Changelog
changelog=
    1.3.4 - Industry-Standard Collar Grouping and Enhanced Layer Metadata
        - BREAKING CHANGE: Collar grouping now uses hole_id + state instead of coordinates
        - Real drill hole IDs preserved from API (no more auto-generated DH0001, DH0002)
        - Hybrid grouping: Primary by (hole_id, state), fallback to coordinates if missing
        - Cross-state disambiguation: Same hole_id in different states kept separate
        - COLLAR LAYER: Added comprehensive fields (company_name, final_depth, datum, hole_type, project_name, avg_value)
        - TRACE LAYER: Added detailed sample fields (sample_id, assay_element, assay_unit, sample_method, company_name, project_name)
        - Added grey dashed lines for gap segments (no assay data) with "No Assay Data" legend entry
        - Visual continuity: Full drill hole extent visible from collar to final depth
        - Enhanced data validation with descriptive error messages for missing fields
        - Coordinate-based grouping with warning logs for records without hole_id
        - Auto-generated IDs (AUTO-0001) only for records missing hole_id
        - Fixed progress dialog staying on top after successful import
        - Fixed map zoom showing incorrect location (random sea) after assay import
        - Improved CRS transformation for accurate zoom extent calculation
        - Better alignment with industry geological data standards
        - Improved data integrity and traceability for drill hole analysis
        - Fixed authentication dialog not appearing when user not logged in

    1.3.3 - Critical Stability and Authentication Reliability Release
        - CRITICAL: Fixed token refresh race conditions preventing authentication lockouts
        - CRITICAL: Fixed logout not clearing refresh state flags (prevents future login failures)
        - CRITICAL: Fixed division by zero errors in trace visualization calculations
        - CRITICAL: Fixed zero-length line crashes in Qt geometry layer (segfault prevention)
        - HIGH: Added comprehensive data validation for trace visualization (missing field detection)
        - HIGH: Implemented retry logic with exponential backoff for failed token refreshes (2s, 4s, 8s)
        - HIGH: Added token validation on plugin startup (corrupts tokens automatically cleared)
        - HIGH: Implemented refresh failure tracking (stops timer after 3 consecutive failures)
        - MEDIUM: Added subscription expiration check in refresh to prevent wasted API calls
        - MEDIUM: Enhanced settings cleanup with error handling for corrupted QSettings
        - Enhanced wake-from-sleep scenario handling with proper token refresh
        - Improved error messages for subscription expiration vs authentication errors
        - Added comprehensive authentication flow logging for debugging
        - Fixed 403 "User access expired" error handling during streaming
        - Fixed trace line overlapping bug (now shows sequential depth segments)
        - Fixed gaps in trace lines between collar and first assay interval
        - Enhanced Qt C++ layer crash prevention with zero-length line detection
        - Production-ready stability improvements for enterprise deployments

    1.3.2 - Authentication and Visualization Enhancements
        - Added email autofill for login (password never stored for security)
        - Improved token persistence with proactive refresh at 30 minutes instead of 59 minutes
        - Enhanced token validation with automatic refresh before API calls
        - Better token lifecycle management on plugin startup
        - Added user-configurable trace visibility scale (default 1:50,000)
        - Custom trace range preset now shows generic names (Range 1, Range 2, etc.)
        - Custom preset pre-filled with Industry Standard values as template
        - Comprehensive logging for authentication debugging
        - Production code cleanup (removed all debug print statements)
        - Enhanced user experience with smarter login focus management

    1.3.0 - Role-Based Access Control and Data Protection Features
        - Implemented comprehensive role-based access control (tier_1, tier_2, admin)
        - Added JWT token decoding to extract user roles from Firebase auth tokens
        - Tier 1 (Free Trial) users limited to 1,000 records per fetch maximum
        - Disabled "Fetch all records" for Free Trial users with informative messaging
        - Added real-time validation for record count input with visual feedback
        - Implemented clickable role badge displaying user tier (Free Trial/Premium/Admin)
        - Role badge shows detailed plan information popup with features and limitations
        - Added latitude and longitude fields to location-only data in Identify Results
        - Fixed tooltip styling for location-only data (white background, dark text)
        - Enhanced hover tooltips to show collar_id as fallback when hole_id is empty
        - Fixed QgsField deprecation warning by migrating to QMetaType.Type
        - Improved "Reset All" button to properly re-enable record count field
        - Fixed text field staying disabled after blocking "Fetch all records" for Free Trial
        - Added proper error handling and user-friendly messages for all role restrictions
        - Enhanced security with foundational logic for future tier-based feature controls

    1.2.0 - Major UI/UX Enhancements and Authentication Improvements
        - Fixed critical dropdown focus issues with proper keyboard input handling
        - Implemented chip display limitations (max 4 + "view all" button)
        - Added searchable hole types dropdown with static data (no API calls)
        - Enhanced multi-selection with persistent popup behavior
        - Improved table display: N/A for null values, resizable columns, hover tooltips
        - Migrated plugin messages from QGIS interface to in-plugin message bar
        - Fixed authentication token persistence across plugin sessions
        - Added automatic token validation on plugin open/focus
        - Implemented direct login dialog flow for better UX
        - Added informational icons with help popups for feature explanations
        - Fixed incorrect logout messages when user was never logged in
        - Enhanced error handling and fallback mechanisms throughout
        - Removed debug print statements and improved code quality

# No external plugin dependencies required
# All dependencies are standard Python/QGIS libraries

