# This file contains metadata for your plugin.

# This file should be included when you package your plugin.# Mandatory items:

[general]
name=geodb.io
qgisMinimumVersion=3.0
qgisMaximumVersion=4.99
description=Connects to spatial data from geodb.io via api
version=2.9.0
author=geodb.io
email=admin@geodb.io

about=This plugin allows you connect to spatial data hosted at geodb.io including land holding, drill collars, point samples, field notes, and more.

tracker=https://github.com/joswhite1/geodb-qgis-plugin/issues
repository=https://github.com/joswhite1/geodb-qgis-plugin
# End of mandatory metadata

# Recommended items:

# License identifier (SPDX format)
license=GPL-2.0-or-later

hasProcessingProvider=no
changelog=
    2.9.0 - Claims GeoPackage server integration
        - Merge Push to Server into single Push & Upload button on Step 7
        - Auto-upload claims GeoPackage to server after pushing claims/stakes
        - Link uploaded GeoPackage (ProjectFile) to ClaimPackage on server
        - Save layer styles into GeoPackage before upload
        - Add server GeoPackage dropdown on Step 1 (pull claims GeoPackages from server)
        - Download and load server GeoPackages with metadata and claim_package_id restoration
        - Keep Browse Local and Create New options as fallback
        - Extract shared GeoPackage utilities (style save, download) to utils/gpkg_utils.py
    2.8.3 - Professional filing maps with surveyor's bearings and annotations
        - Add surveyor's bearing notation (N 45°00' W) replacing cardinal directions on all filing maps
        - Add dimension annotations on claim polygon edges (1,500' and 600' labels)
        - Add reference tie line from survey monument to Corner No. 1 with bearing and distance
        - Add corner labels (C1-C4 with LM designation) on filing maps
        - Add reference point marker (red triangle) at survey monument location
        - Differentiate Filing Map from Field Map with metes & bounds text, monument info, and tie text
        - Fix AZ state filing map: add all annotation layers, proper surveyor's notation
        - Fix NV state filing map: add UTM coordinate grid, fix rotated reference label
        - Convert all scale bars from meters to feet (US mining claim standard)
        - Keep user on Step 7 after Finish so Generate Maps button remains accessible
        - Fix map extent to include reference point on filing maps (tie line visibility)
    2.8.2 - UI improvements, map generation, and security cleanup
        - Reorganize Basemaps widget into unified sections (Basemaps, PLSS Grid, Public Lands, MRDS)
        - Consolidate PLSS/Federal Lands streaming controls into Public Lands section
        - Add Federal Lands streaming with color legend (BLM yellow, Forest Service green)
        - Add verbose logging to Federal Lands streaming worker for diagnostics
        - Fix Federal Lands layer geometry type (Polygon to MultiPolygon) for mixed responses
        - Add Generate Maps button to Step 7 (claims print layouts for field and filing use)
        - Add ClaimsMapGenerator processor for print-ready QGIS layouts
        - Centralize all urlopen calls into safe_urlopen() wrapper with scheme validation
        - Eliminates Bandit S310 findings from all call sites (5 files cleaned up)
    2.7.1 - Fix CRS transform crashes and claims wizard Next button
        - Fix QgsCsException crash when BLM/PLSS streaming layers transform extent with wide-extent basemaps
        - Add extent_to_wgs84() utility that clamps to CRS valid bounds before transforming
        - Apply safe transform to all 4 bounding box transform sites (BLM, PLSS, basemaps PLSS/MRDS)
        - Fix Step 6 (Finalize) Next button permanently disabled after processing and doc generation
        - Remove redundant tos_accepted/access_info validation from Step 6 (already validated in Step 1)
        - Persist tos_accepted in GeoPackage metadata for proper resume across sessions
        - Add conflict check before pushing planned samples (warns before overwriting existing records)
    2.7.0 - Claims workflow layer group consistency and auto-resume
        - Unify all claims layer group management under shared utility (get_or_create_claims_group)
        - All wizard steps now use the same "Claims Workflow [XX Lode Claims]" group
        - Add Claim Name Prefix field to Step 1 (used for GeoPackage filename and group naming)
        - Auto-suggest GeoPackage filename from prefix (e.g. GE_claims.gpkg)
        - Auto-resume wizard to next incomplete step when reopening a previous project
        - Resume dialog shows completed steps and offers to continue or start from Step 1
        - Step indicators still allow jumping to any completed step
        - Remove duplicate _add_layer_to_claims_group implementations across files
    2.6.2 - Streamline claims wizard finish flow
        - Remove redundant Download Documents button from Step 7
        - Finish button now opens Claim Packages page in browser and returns to Sync Data tab
    2.6.1 - Fix claims wizard step indicator and waypoint layer tracking
        - Fix off-by-one in step indicator (completed steps showed green on wrong step)
        - Fix step indicators not updating to gray when going back invalidates downstream steps
        - Fix step circle showing checkmark instead of number when navigating back to current step
        - Fix connector line coloring between steps
        - Add confirmation dialog when Back button or step click would invalidate completed steps
        - Fix Step 7 waypoints layer fallback picking wrong claim block in multi-block projects
        - Fix Step 6 monument adjustment updating wrong waypoints layer in multi-block projects
    2.6.0 - Code audit, pay-per-claim wizard, and refactoring
        - Add pay-per-claim 3-step wizard (Setup, Layout, Order) with Stripe checkout
        - Dynamic wizard step rebuild based on user access level (enterprise vs pay-per-claim)
        - Fix broken submit_order call in claims_order_widget (migrated to create_checkout_session)
        - Fix Project.company AttributeError in UserContext.to_dict() serialization
        - Fix null_geom_count double-counting geometry parse failures in layer_processor
        - Rename PermissionError to APIPermissionError to avoid shadowing Python built-in
        - Extract shared utilities: geometry.py, crs_utils.py, format_helpers.py
        - Centralize claims endpoint URL building in config.get_claims_url()
        - Fix SQLite connection resource leaks in claims_storage_manager (contextlib.closing)
        - Fix QNetworkReply memory leak in API client timeout path
        - Remove ~15 unused methods and 2 dead modules (api_response.py, photo_cache.py)
        - Replace print() calls with proper logger throughout codebase
        - Add claims_pushed state tracking with double-push warning in Step 7
        - Add layer cleanup on wizard reset and step re-entry
    2.5.0 - Claims Wizard & UI Improvements
        - Fix claims layer ownership tracking to prevent cross-group layer collisions
        - Use session-based layer IDs instead of name matching in Step 5/Step 6
        - Fix combo box signal blocking during refresh to prevent state corruption
        - Add project name suffix to Claims Workflow layer group name
        - Use server-provided sequence_number for location monument naming
        - Style QComboBox dropdown menus across all claims and assay dialogs
        - Add URL scheme validation for BLM and PLSS streaming requests
    2.4.3 - Qt6 Method Compatibility
        - Replace deprecated .exec_() with .exec() across all dialogs and event loops
        - Ensures forward compatibility with Qt6 / QGIS 4.0+
    2.4.2 - Cross-Version Compatibility (QGIS 3.36 / 3.38+ / 4.0)
        - Fix QgsField TypeError across all QGIS versions (3.36, 3.38+, 4.0) with runtime probe
        - Fix Qt enum compatibility for QGIS 4.0 (Qt.DashLine, Qt.Checked, QFrame.HLine, etc.)
        - Fix streaming layer crashes on project switch (wrapped C++ object deleted)
        - Fix PLSS grid streaming checkbox staying disabled after session restore
        - Add URL scheme validation for BLM and PLSS streaming requests (security hardening)
        - Centralized Qt5/Qt6 enum compatibility layer in utils/compat.py
    2.4.1 - Compatibility & Streaming Fixes
        - Add Qt5/Qt6 compatibility layer for QgsField types
        - Improve login error messaging
        - Add BLM claims manager and PLSS streaming manager
        - Basemaps widget and config updates
    2.3.1 - Toolbar Icon Fix
        - Fix missing toolbar icon (Qt resources module was not imported)
    2.3.0 - Claims & Stakes Sync Fix
        - Fix ClaimStakes not linking to ClaimPackage during push
        - Add claim_package field to ClaimStake schema for proper package scoping
        - Stakes now correctly appear under their ClaimPackage on the web dashboard
    2.2.2 - Code Quality & Bug Fixes
        - Fix division by zero when pulling model with no records
        - Remove unused imports and variables across codebase
        - Fix PEP 8 style issues (whitespace, line breaks, f-strings)
        - Pass Bandit security scan and Flake8 quality checks cleanly
    2.2.1 - Project Files & GeoPackage Sync
        - New "Project Files" tab with sub-tabs for Map Capture, Upload Files, and GeoPackage Sync
        - Upload georeferenced raster layers from QGIS to geodb.io server
        - GeoPackage sync: push/pull GeoPackage files with embedded styles
        - Improved world file generation with native CRS bounds support
        - Fix HiDPI/Retina display handling for map captures
        - Pre-select active layer in field work dialog
        - Security fixes: SQL injection prevention, URL scheme validation, safe XML parsing
        - Removed deprecated supportsQt6 metadata flag
        - Bug fixes and stability improvements
    2.1.1 - QGIS 4.0 Compatibility & Security Hardening
        - QGIS 4.0 / Qt6 compatibility (supports QGIS 3.0 through 4.99)
        - Security hardening of API client (request retry logic, removed debug exposure)
        - Bi-directional deletion sync with server
        - Deletion conflict detection (local changes vs server deletes)
        - Orphan cleanup for child records
        - Map canvas capture and georeferenced upload
        - GeoPackage storage option for persistent local data
        - Bug fixes and stability improvements
    2.1.0 - Major feature release
        - BC mineral claims workflow with 7-step wizard
        - Two-factor authentication (2FA) support
        - Photo viewer for drill photos and field notes
        - Staff order management interface
        - Basemaps widget for quick layer access
        - Structure model with geological symbology
        - GPX export for GPS devices
        - Fixed heap corruption crashes (QgsBlockingNetworkRequest)
        - Improved cross-platform compatibility
    2.0.0 - Major architectural rebuild
        - Modular design with separation of concerns
        - Improved error handling and logging
        - Progress feedback for long operations
        - Incremental data synchronization
        - Type-safe code with full type hints
        - Comprehensive documentation
    0.1 - Initial release

# Tags are comma separated with spaces allowed
tags=python,database,api,geospatial,data sync

homepage=https://geodb.io
category=Database
icon=icon.png
# experimental flag
experimental=False

# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False

# Since QGIS 3.8, a comma separated list of plugins to be installed
# (or upgraded) can be specified.
# Check the documentation for more information.
# plugin_dependencies=

# If the plugin can run on QGIS Server.
server=False
