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