Version: [4182] ND Data Importer 1.3.4

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

yes

needle11

2025-11-09T21:24:28.721324+00:00

3.0.0

3.99.0

None

no

Version management

Plugin details

QGIS sustaining members

Flagship membership


Flagship membership


Flagship membership


Large membership


Large membership


Large membership


Large membership


Large membership


Large membership


Large membership


Large membership