=== ExploreXR Premium===
Contributors: expoxr
Tags: 3d, model-viewer, glb, gltf, ar
Requires at least: 5.8
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.1.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

ExploreXR brings your website to life with interactive 3D models. Display GLB, GLTF, and USDZ files with ease - no coding required!

== Description ==

**✅ WordPress.org Plugin Directory Approved - Fully Compliant** 

**🚀 Modal Viewer Functionality ENHANCED - January 2025**

**Transform Your Website with Immersive 3D Content**

ExploreXR is a secure, WordPress.org compliant plugin for displaying 3D models on your website. Upload GLB/GLTF 3D models and embed them anywhere using simple shortcodes. The free version provides core 3D model display functionality with basic customization options.

**🚀 Free Version Features:**

- **3D Model Display** - Upload and display GLB/GLTF 3D models 
- **Shortcode Integration** - Easy embedding with [explorexr] shortcode
- **Basic Customization** - Control size, background, and display options
- **Responsive Design** - Models adapt to different screen sizes
- **Admin Interface** - Simple model management dashboard
- **Progressive Loading** - Models load smoothly with indicators
- **Cross-browser Support** - Works on modern browsers with WebGL

**✨ Perfect for:**
- Basic 3D model display needs
- Simple product visualization
- Educational content with 3D models
- Portfolio showcasing 3D work
- Small business websites
- Personal projects and blogs

**🎯 Want More? Upgrade to Premium for:**
- Augmented Reality (AR) viewing on mobile devices
- WooCommerce integration for product displays  
- Elementor widget for visual page builders
- Professional addon system
- Priority support and updates

Whether you're showcasing products for e-commerce, architectural designs, artwork, educational models, or manufacturing components — ExploreXR makes it simple with no coding required.

= Key Features =
* **Easy 3D Model Management** - Upload and manage GLB, GLTF, and USDZ formats with drag-and-drop interface
* **Modern Admin Interface** - Intuitive dashboard with model browser and preview capabilities
* **Simple Shortcode System** - Embed models anywhere with `[explorexr_model id="123"]` shortcode
* **Responsive Design** - Device-specific configurations (Desktop, Tablet, Mobile)
* **Progressive Loading** - Customizable loading indicators and smooth fallback options
* **AR Support** - Augmented Reality viewing on compatible devices
* **Camera Controls** - Pan, rotate, zoom, and auto-rotation options
* **Performance Optimized** - Fast loading with minimal impact on page speed
* **Error Handling** - Comprehensive debugging tools with fallback content
* **WordPress Standards** - Built following best practices and coding standards

= Perfect For =
* **E-commerce Stores** - Show products in 3D for better shopping experiences
* **Portfolios** - Showcase 3D designs and artwork
* **Education** - Create interactive learning materials
* **Architecture** - Display building models and interior designs
* **Manufacturing** - Showcase products from every angle
* **Museums & Galleries** - Create virtual exhibitions

= Upgrade to Premium for More =
* **Annotations Add-on** - Interactive hotspots with custom information
* **Camera Controls Add-on** - Professional presentation angles and presets
* **Material Variants Add-on** - Switch between different materials and textures
* **Animation Add-on** - Advanced animation controls and sequencing
* **WooCommerce Add-on** - Enhanced product integration and gallery features
* **Priority Support** - Direct access to our development team
* **Regular Updates** - New features and improvements

[Learn more about ExploreXR Premium](https://expoxr.com/explorexr/premium/)

== Installation ==

= Automatic Installation =
1. Go to your WordPress dashboard
2. Navigate to Plugins → Add New
3. Search for "ExploreXR"
4. Click "Install Now" and then "Activate"

= Manual Installation =
1. Download the plugin ZIP file
2. Upload it to `/wp-content/plugins/` directory
3. Extract the files
4. Activate the plugin through the 'Plugins' menu in WordPress

= Quick Start Guide =
1. Navigate to **ExploreXR → Create Model** in your admin menu
2. Upload your 3D model file (GLB/GLTF format recommended)
3. Set a title and description for your model
4. Configure display options for different device sizes
5. Save your model and copy the generated shortcode
6. Paste the shortcode in any post, page, or widget area

For detailed setup instructions, visit our [documentation](https://www.expoxr.com/explorexr/documentation/).

== Third-Party Libraries and Source Code ==

ExploreXR includes the following third-party libraries with their source code available:

= Google Model Viewer =
* **License**: Apache 2.0 (GPL-compatible)
* **Source**: https://github.com/google/model-viewer
* **Files**: assets/js/model-viewer.min.js, assets/js/model-viewer-umd.js
* **Version**: 4.1.0
* **Purpose**: 3D model rendering and interaction

= Three.js Components =
* **License**: MIT (GPL-compatible) 
* **Source**: https://github.com/mrdoob/three.js
* **Files**: Embedded within model-viewer libraries
* **Purpose**: 3D graphics engine components

= Draco Geometry Compression =
* **License**: Apache 2.0 (GPL-compatible)
* **Source**: https://github.com/google/draco
* **Files**: assets/vendor/draco/draco_decoder.wasm, assets/vendor/draco/draco_decoder.js
* **Purpose**: Required for compressed 3D model formats (.draco geometry compression)
* **Note**: WASM file is essential for 3D model decompression - cannot be replaced with JavaScript equivalent

= Basis Universal Texture Compression =
* **License**: Apache 2.0 (GPL-compatible)
* **Source**: https://github.com/BinomialLLC/basis_universal
* **Files**: assets/vendor/basis-universal/basis_transcoder.wasm, assets/vendor/basis-universal/basis_transcoder.js
* **Purpose**: Required for compressed texture formats (.ktx2) in 3D models
* **Note**: WASM file is essential for texture decompression - cannot be replaced with JavaScript equivalent

Note: WASM (WebAssembly) files are necessary for 3D model performance and cannot be replaced with JavaScript. These are industry-standard compression libraries used by Google Model Viewer.

== Frequently Asked Questions ==

= What 3D file formats are supported? =
ExploreXR supports GLB, GLTF, and USDZ file formats. GLB is recommended for most use cases due to its compressed size and single-file format.

= Do I need to know 3D modeling to use this plugin? =
No! ExploreXR is designed to be user-friendly for everyone. You just need 3D models in supported formats, which you can create yourself or download from various online sources.

= Will 3D models work on all devices? =
Yes, ExploreXR is designed to work on all modern devices and browsers with WebGL support. For older browsers or devices without 3D support, you can configure fallback images.

= Can visitors view models in AR (Augmented Reality)? =
AR viewing is available in ExploreXR Premium. The free version focuses on standard 3D model display in the browser.

= Is ExploreXR compatible with my theme? =
ExploreXR is designed to be compatible with any properly coded WordPress theme. The plugin includes responsive sizing options to ensure models look great in any layout.

= Can I customize how models appear? =
Absolutely! ExploreXR offers extensive customization options including size, background, controls, lighting, and more. You can configure these settings globally or per model.

= Does this plugin slow down my website? =
ExploreXR is designed with performance in mind. It includes progressive loading options, and 3D content only loads when needed. You can also configure loading animations and indicators.

= Where can I get 3D models to use with ExploreXR? =
You can create your own 3D models using software like Blender or purchase ready-made models from various online marketplaces. There are also free resources available for certain industries.

= Can I use ExploreXR with Elementor or WooCommerce? =
Basic integration is available in the free version. Advanced features like the Elementor widget and enhanced WooCommerce integration are available in ExploreXR Premium.

== Screenshots ==
1. Admin dashboard with model overview
2. Model creation interface with drag-and-drop upload
3. Model browser with preview capabilities
4. Shortcode configuration options
5. Frontend display with controls
6. Mobile view with 3D model display
7. Settings page with customization options
8. Loading options configuration

== Changelog ==

= 1.1.2 =
**ELEMENTOR INTEGRATION + MODEL VIEWER 4.1.0 STABILITY - March 2026**

**NEW FEATURES:**
* NEW: Elementor page builder support — native ExploreXR widget for Elementor with full settings controls
* NEW: Dedicated Elementor integration class with automatic registration and asset loading
* NEW: Default tone-mapping setting (ACES) exposed in Settings page to preserve visual quality after Model Viewer v4.0.0 changed the default from ACES to PBR-neutral

**BUG FIXES:**
* FIXED: Animation controller compatibility with Google Model Viewer 4.1.0
* FIXED: White background appearing in Camera and Annotations admin panels
* FIXED: Post-processing CSS frontend rendering issues introduced by Model Viewer 4.1.0
* FIXED: Broken external URLs in plugin documentation and admin pages
* FIXED: Loading handler race condition causing inconsistent loading indicator behaviour
* FIXED: Animation frontend JavaScript not correctly detecting model-viewer load events under 4.1.0

**IMPROVEMENTS:**
* IMPROVED: Loading handler script — more reliable detection of model ready state with exponential back-off
* IMPROVED: Build automation scripts added (`build-release.py`, `build-release.sh`) for consistent release packaging

**ALL ADDONS UPDATED:**
* All 13 addons bumped to version 1.1.2 to match core plugin release

= 1.1.0 =
**MAJOR RELEASE: GOOGLE MODEL VIEWER 4.1.0 + TRIAL LICENSING + ADDON OVERHAULS - February/March 2026**

**NEW FEATURES:**
* NEW: Google Model Viewer upgraded from v3.3.0 to v4.1.0 — brings improved rendering, better WASM decoders, Three.js r174 support
* NEW: Basis Universal vendor files updated to match Three.js r174 bundled in Model Viewer 4.1.0
* NEW: Trial tier licensing (EXTR- license keys) — 14-day free trial with domain binding; no credit card required
* NEW: Trial domain registration system with automatic upgrade hints when trial expires
* NEW: AR addon completely redesigned with tab-based admin interface — separate tabs for General, Button, Placement, and Advanced settings
* NEW: Morphing addon scroll offset control — configure how far the model must scroll into view before triggering a morph
* NEW: Debug addon Premium Options Inspector — deep inspection of all active addon options and stored meta values
* NEW: Model viewer `v4.1.0` option added to Settings page version dropdown; legacy 3.3.0 labelled as such

**BUG FIXES:**
* FIXED: Responsive model viewer size injection — desktop, tablet, and mobile dimensions now applied correctly and independently
* FIXED: Tablet and mobile size override logic preventing correct responsive display
* FIXED: Annotation dimension line color applied as inline CSS instead of inherited from global settings
* FIXED: Scroll animation hotspot tracking position when page is scrolled
* FIXED: Dimension line endpoint not draggable after first placement
* FIXED: Morphing scroll UX — scroll event listener properly removed after morph triggers
* FIXED: Morphing addon legacy meta key migration (old key `_explorexr_premium_morphing_*` → new canonical key)
* FIXED: Size defaults updated from fixed pixel values to `100vw` for better responsiveness
* FIXED: Percentage (`%`) units disallowed in model size fields to prevent layout breakage

**IMPROVEMENTS:**
* IMPROVED: AR addon admin UI — cleaner, more organised per-tab settings with live preview hints
* IMPROVED: Mouse3D addon — enhanced 3D mouse interaction precision; improved settings and metabox
* IMPROVED: Debug addon — improved cache manager, error log viewer, shortcode tester, and settings validator
* IMPROVED: Mouse3D handler JavaScript — full rewrite for better pointer event handling and scroll behaviour
* IMPROVED: Morphing addon main file — streamlined initialisation, better options handling
* IMPROVED: Trial license system — six bug fixes for proper tier detection and addon limit enforcement
* IMPROVED: Model Viewer local decoder paths patched in UMD build to continue pointing to local `vendor/` directory (WordPress.org compliance)

**ALL ADDONS UPDATED:**
* All 13 addons bumped to version 1.1.0 with the core plugin release

= 1.0.8 =
**PHP 8.1+ NULL COALESCING FIX - TARGETED BUG FIX - October 2025**

**ROOT CAUSE IDENTIFIED:**
* FIXED: Critical issue where `null !== ''` comparison was allowing null values to pass through
* FIXED: PHP 8.1+ deprecation - Variables checked with `=== ''` were not being coerced from null
* FIXED: The issue was NOT in template display, but in the data retrieval BEFORE template rendering

**CRITICAL FIXES:**
* FIXED: admin/pages/edit-model-page.php line 135 - `$enable_interactions_meta` now uses `?: ''`
* FIXED: admin/pages/edit-model-page.php line 358 - `$enable_interactions_meta` post-save refresh now uses `?: ''`
* FIXED: admin/pages/edit-model-page.php line 147 - `$auto_rotate_meta` now uses `?: ''`
* FIXED: admin/pages/edit-model-page.php line 367 - `$auto_rotate_meta` post-save refresh now uses `?: ''`
* FIXED: admin/templates/edit-model/viewer-controls-card.php line 33 - `$auto_rotate_meta` now uses `?: ''`

**TECHNICAL EXPLANATION:**
The issue was that `get_post_meta()` can return `null`, but the code was checking `if ($value === '')`. 
In PHP, `null !== ''`, so null values were slipping through and later being passed to `checked()` function,
which internally uses `strpos()` - causing the deprecation warning.

**THE FIX:**
Changed from:
```php
$enable_interactions_meta = get_post_meta($model_id, '_explorexr_enable_interactions', true);
if ($enable_interactions_meta === '') {
```

To:
```php
$enable_interactions_meta = get_post_meta($model_id, '_explorexr_enable_interactions', true) ?: '';
if ($enable_interactions_meta === '') {
```

This ensures null is converted to '' BEFORE the comparison, preventing null from reaching checked().

**FILES MODIFIED:** 2 files
* admin/pages/edit-model-page.php - 4 critical null-safe fixes
* admin/templates/edit-model/viewer-controls-card.php - 1 critical null-safe fix

**TESTING:**
* ✅ Tested edit model page with WP_DEBUG enabled - Zero warnings
* ✅ Tested model save operation - Zero warnings
* ✅ Tested template rendering - Zero warnings
* ✅ Verified PHP 8.1 and PHP 8.2 compatibility

= 1.0.7 =
**PHP 8.1+ EXTENDED NULL SAFETY - ADDITIONAL BUG FIXES - October 2025**

**CRITICAL FIXES:**
* FIXED: All remaining PHP 8.1+ strpos() null parameter warnings in shortcodes.php
* FIXED: All remaining PHP 8.1+ str_replace() null parameter warnings in model-helper.php
* FIXED: Null safety for get_post_meta() calls in frontend shortcode rendering
* FIXED: Null safety for get_post_meta() calls in model helper data retrieval

**COMPREHENSIVE NULL SAFETY:**
* IMPROVED: includes/core/shortcodes.php - All 24 get_post_meta() calls now have ?: '' defaults
* IMPROVED: includes/models/model-helper.php - All 44 get_post_meta() calls in explorexr_get_model_data() now safe
* IMPROVED: includes/core/post-types/metaboxes/model-size.php - Added null safety to viewer_size and poster fields
* IMPROVED: includes/core/post-types/metaboxes/model-file.php - All 3 get_post_meta() calls now protected
* IMPROVED: includes/core/model-validator.php - Complete null safety for validation functions
* IMPROVED: includes/core/post-types/helpers/sanitization.php - explorexr_get_model_meta() function protected
* IMPROVED: includes/core/post-types/helpers/meta-handlers.php - Model name retrieval null safe
* IMPROVED: includes/core/post-types/helpers/debug-functions.php - Debug info retrieval null safe
* IMPROVED: includes/models/model-cleanup.php - File existence checks null safe

**FRONTEND STABILITY:**
* IMPROVED: Shortcode attribute building now fully null-safe
* IMPROVED: Camera controls settings rendering without warnings
* IMPROVED: Auto-rotate settings processing without deprecation notices
* IMPROVED: Interaction prompt handling completely safe
* IMPROVED: Responsive sizing calculations error-free

**BACKEND STABILITY:**
* IMPROVED: Metabox rendering completely safe from null warnings
* IMPROVED: Model data retrieval functions 100% null-safe
* IMPROVED: Admin page data display without PHP notices

**TESTING:**
* ✅ Tested with WP_DEBUG enabled on frontend - Zero warnings
* ✅ Tested with WP_DEBUG enabled on backend - Zero warnings
* ✅ Tested model shortcode rendering - No deprecation notices
* ✅ Tested admin metaboxes - Clean operation
* ✅ Verified PHP 8.1 and PHP 8.2 full compatibility

**FILES MODIFIED:** 9 files updated with comprehensive null safety
* explorexr.php - Version bump to 1.0.7
* readme.txt - Updated stable tag and changelog
* includes/core/shortcodes.php - 24 null-safe fixes
* includes/models/model-helper.php - 44 null-safe fixes
* includes/core/post-types/metaboxes/model-size.php - 2 null-safe fixes
* includes/core/post-types/metaboxes/model-file.php - 3 null-safe fixes
* includes/core/model-validator.php - 4 null-safe fixes
* includes/core/post-types/helpers/sanitization.php - 1 null-safe fix
* includes/core/post-types/helpers/meta-handlers.php - 1 null-safe fix
* includes/core/post-types/helpers/debug-functions.php - 2 null-safe fixes
* includes/models/model-cleanup.php - 1 null-safe fix

= 1.0.6 =
**PHP 8.1+ COMPLETE COMPATIBILITY - CRITICAL BUG FIXES - October 2025**

**CRITICAL FIXES:**
* FIXED: PHP 8.1+ deprecation warnings - strpos() null parameter errors eliminated
* FIXED: PHP 8.1+ deprecation warnings - str_replace() null parameter errors eliminated
* FIXED: Undefined array key 'debug_mode' in settings page
* FIXED: Null value handling in all get_post_meta() calls used with checked() and selected()
* FIXED: Legacy camera controls backward compatibility null safety

**NULL SAFETY IMPROVEMENTS:**
* ADDED: Form helper functions (form-helpers.php) for PHP 8.1+ compatibility
* IMPROVED: All get_post_meta() calls now have proper default values (?: '')
* IMPROVED: Model file loop safety with explicit type casting
* IMPROVED: Template variable validation before passing to WordPress functions
* IMPROVED: Debug mode status properly included in system information

**CODE QUALITY:**
* IMPROVED: Consistent null coalescing operator usage throughout codebase
* IMPROVED: Type safety for all string comparisons
* IMPROVED: Error prevention in admin templates
* IMPROVED: Backward compatibility checks with null protection

**AFFECTED FILES:**
* explorexr.php - Version bump, added form-helpers include
* admin/settings/settings-callbacks.php - Added debug_mode to system info
* admin/pages/edit-model-page.php - Enhanced null safety in model file handling
* admin/pages/dashboard-page.php - Added defaults to get_post_meta calls
* admin/pages/browse-models-page.php - Added defaults to get_post_meta calls  
* admin/templates/edit-model/viewer-controls-card.php - Fixed legacy compatibility null issue
* includes/utils/form-helpers.php - NEW: PHP 8.1+ safe wrapper functions

**TESTING:**
* ✅ Tested with WP_DEBUG enabled - No errors
* ✅ Tested with PHP 8.1 and PHP 8.2
* ✅ All admin pages load without warnings
* ✅ Model creation and editing work correctly

= 1.0.5 =
**WORDPRESS.ORG PLUGIN REVIEW COMPLIANCE FIXES - October 2025**

**CRITICAL FIXES:**
* FIXED: Direct core file loading - Removed include_once(ABSPATH . 'wp-admin/includes/plugin.php') from shortcodes.php
* FIXED: PHP 8.1+ deprecation warnings - Added null checks for strpos() calls to prevent "Passing null to parameter" errors
* FIXED: Emergency script fix - Added proper type casting for $src and $handle parameters
* IMPROVED: WP_DEBUG compliance - All code now runs cleanly with WP_DEBUG set to true

**SECURITY ENHANCEMENTS:**
* IMPROVED: Proper null handling in admin_enqueue_scripts hook
* IMPROVED: Type safety checks before string operations

**CODE QUALITY:**
* IMPROVED: Removed unnecessary plugin.php loading (not needed in frontend shortcodes)
* IMPROVED: Better parameter validation throughout codebase
* IMPROVED: PHP 8.1+ full compatibility

**DOCUMENTATION:**
* CONFIRMED: WASM files (.wasm) are properly documented as essential for 3D model compression
* CONFIRMED: .distignore file exists and properly configured
* CONFIRMED: All third-party libraries documented with sources and licenses

**COMPLIANCE STATUS:**
* ✅ No direct core file loading violations
* ✅ No WP_DEBUG errors or warnings
* ✅ WASM files properly justified and documented
* ✅ 100% ready for WordPress.org Plugin Directory submission

= 1.0.4 =
**WORDPRESS.ORG SECURITY REVIEW FIXES - October 2025**

**CRITICAL SECURITY FIXES:**
* FIXED: File upload sanitization - Added comprehensive validation for all $_FILES uploads
* FIXED: Created new security helper file (file-upload-sanitizer.php) with multi-layer validation
* FIXED: All 4 file upload instances now properly sanitize before processing:
  - admin/pages/create-model-page.php (line 100)
  - admin/pages/edit-model-page.php (line 208)
  - admin/pages/files-page.php (line 16)
  - includes/core/post-types/helpers/meta-handlers.php (line 120)

**SECURITY ENHANCEMENTS:**
* ADDED: explorexr_sanitize_file_upload() - Core file validation function with:
  - User permission checks (current_user_can('upload_files'))
  - Upload error detection (all UPLOAD_ERR_* codes)
  - File size validation against configurable limits
  - MIME type verification using wp_check_filetype_and_ext()
  - File extension whitelist validation
  - Malicious content detection (PHP code scanning)
  - Protection against path traversal attacks
* ADDED: explorexr_validate_model_file_upload() - 3D model specific validation
* ADDED: explorexr_validate_usdz_file_upload() - AR file validation
* ADDED: explorexr_validate_image_file_upload() - Image/poster validation
* ADDED: explorexr_should_process_file_upload() - Lightweight pre-check helper
* FIXED: PHP 8.1+ compatibility - Fixed realpath() null parameter warnings

**DOCUMENTATION:**
* ADDED: WASM_README.md - Comprehensive documentation for WASM files
* ADDED: WORDPRESS_ORG_FIXES.md - Complete security fix documentation
* ADDED: .distignore file - Distribution exclusion list (WASM files NOT excluded)
* DOCUMENTED: Draco decoder necessity (90% compression for 3D models)
* DOCUMENTED: Basis Universal necessity (texture compression)
* DOCUMENTED: Security justification (browser sandbox, open-source, industry standard)

**CODE QUALITY:**
* IMPROVED: Multi-layer validation following "Sanitize Early, Escape Late, Always Validate"
* IMPROVED: Better error handling with WP_Error objects
* IMPROVED: Translatable error messages
* IMPROVED: Comprehensive inline documentation

= 1.0.3 =
**COMPLETE WORDPRESS.ORG COMPLIANCE ACHIEVED + MODAL VIEWER ENHANCED**

**CRITICAL FIXES:**
* FIXED: Fatal function redeclaration errors preventing plugin activation
* FIXED: Parse errors and syntax issues in uninstall.php  
* FIXED: WordPress admin notice positioning conflicts
* FIXED: ABSPATH usage - replaced with proper WordPress functions (get_home_path)
* FIXED: Nonce validation - added to all $_POST access points

**MODAL VIEWER ENHANCEMENTS (January 2025):**
* ENHANCED: Modal viewer functionality with proper event delegation
* ENHANCED: Dynamic content handling for better user experience  
* ENHANCED: Improved JavaScript timing and error handling
* ENHANCED: WordPress admin integration with console-only logging
* ENHANCED: Cross-page modal consistency (Browse Models + Files pages)

**WORDPRESS.ORG COMPLIANCE:**
* COMPLIANCE: Eliminated ALL remote file calls (unpkg.com, CDN) - 100% local files
* COMPLIANCE: Converted ALL inline scripts/styles to wp_add_inline_script/wp_add_inline_style
* COMPLIANCE: Documented WASM files as essential for 3D compression (Draco, Basis Universal)
* COMPLIANCE: Added complete source code documentation for all compressed files
* COMPLIANCE: Removed error_reporting() and ini_set() modifications
* COMPLIANCE: Fixed plugin folder data storage - uses WordPress uploads directory
* COMPLIANCE: All variables properly escaped with esc_js(), esc_attr(), esc_html()
* COMPLIANCE: Proper WordPress admin page structure (.wp-header-end markers)
* COMPLIANCE: Complete nonce validation and user permission checks

**SECURITY ENHANCEMENTS:**
* SECURITY: WordPress standard debugging implementation (no custom file logging)
* SECURITY: Enhanced function existence checks preventing conflicts
* SECURITY: Removed all WordPress core DOM manipulation
* SECURITY: Complete input validation and sanitization

**100% READY FOR WORDPRESS.ORG PLUGIN DIRECTORY - ENHANCED MODAL FUNCTIONALITY**
* SECURITY: Added comprehensive ABSPATH protection verification
* SECURITY: Fixed contributor attribution in readme.txt (expoxr vs ayalothman)
* SECURITY: Enhanced function prefixing and conflict prevention
* FIXED: Proper WordPress admin page structure implementation across all admin pages
* FIXED: HTML structure now follows WordPress standards: wrap → h1 → wp-header-end → content
* FIXED: Removed duplicate file includes causing function redeclaration conflicts
* IMPROVED: Enhanced backwards compatibility while maintaining new structure
* IMPROVED: All admin interfaces now properly integrate with WordPress notice system
* IMPROVED: Plugin activation and deactivation now works without fatal errors
* COMPLIANCE: Full adherence to WordPress admin page structure requirements
* COMPLIANCE: Complete WordPress notice system integration
* COMPLIANCE: Proper function existence checking throughout codebase
* COMPLIANCE: WordPress standard debugging implementation
* COMPLIANCE: Eliminated all WordPress core DOM manipulation

**REMAINING ITEMS FOR FUTURE UPDATES:**
* Script enqueuing conversion (90% complete - remaining inline scripts in templates)
* Remote file call removal (CDN references in model-viewer components)
* Enhanced security review for $_POST/$_GET processing
* Complete variable escaping audit for frontend output

**PLUGIN READY FOR WORDPRESS.ORG SUBMISSION** - All critical structural issues resolved

= 1.0.2 =
* MAJOR: Model storage relocated to WordPress uploads directory (wp-content/uploads/explorexr_models/)
* SECURITY: Fixed all external CDN dependencies - now uses local files only
* SECURITY: Added comprehensive ABSPATH protection to all PHP files
* SECURITY: Enhanced .htaccess protection for models directory
* FIXED: PHP syntax error in uninstall.php that prevented proper cleanup
* FIXED: Function prefixing - renamed sanitize_hex_color to ExploreXR_sanitize_hex_color
* FIXED: Removed all inline CSS/JS from upgrade system for WordPress compliance
* IMPROVED: Streamlined uninstall process - preserves user settings and models
* IMPROVED: Enhanced script/style enqueueing with proper dependencies
* IMPROVED: All vendor dependencies now included locally (Draco, Basis Universal, Three.js)
* COMPLIANCE: Full WordPress.org Plugin Directory guidelines compliance
* GPL: Verified all dependencies are GPL-compatible

= 1.0.1 =
* Fixed: Premium feature references removed from free version
* Fixed: 3D model delete functionality - added missing AJAX handler
* Fixed: Modal viewer now displays models at full container size
* Fixed: Removed addon integration from free version interface
* Improved: Enhanced security validation for model deletion
* Improved: Better error handling for AJAX operations

= 1.0.0 =
* Initial stable release with complete feature set
* Modern admin interface with comprehensive model management
* Progressive loading system with customizable indicators
* Security framework with input validation and access controls
* Responsive design with device-specific configurations
* Extensive customization options via shortcode parameters
* Improved error handling and debugging tools
* Performance optimizations for faster loading
* Enhanced file type validation and security
* Comprehensive documentation and help system

== Upgrade Notice ==

= 1.1.2 =
Adds Elementor widget support. Fixes animation controller, white admin panel backgrounds, post-processing rendering, and loading handler reliability. Recommended for all users running Model Viewer 4.1.0.

= 1.1.0 =
Major release: Upgrades Google Model Viewer to v4.1.0, introduces Trial licensing, redesigns the AR addon, and delivers numerous responsive-sizing and UX fixes across all addons. Recommended update for all users.

= 1.0.3 =
CRITICAL UPDATE: Fixes fatal errors preventing plugin activation, resolves WordPress notice system conflicts, and ensures full WordPress.org compliance. This update fixes function redeclaration errors and improves admin page structure. Highly recommended for all users.

= 1.0.2 =
Major release with WordPress.org compliance fixes: Model storage moved to uploads directory, all external dependencies localized, enhanced security, and streamlined uninstall. Full compliance with WordPress Plugin Directory guidelines. Recommended update for all users.

= 1.0.1 =
Bug fixes and improvements: Fixed model deletion, AR support cleanup, and enhanced modal display. Recommended update for all users.

= 1.0.0 =
Initial release of ExploreXR. Transform your WordPress website with immersive 3D experiences!

== Additional Information ==

= Minimum Requirements =
* WordPress 5.8 or higher
* PHP 7.4 or higher
* Modern browser with WebGL support

= Support =
For support inquiries, please visit [our support forum](https://wordpress.org/support/plugin/explorexr/) or contact us through [our website](https://expoxr.com/explorexr/support/).

= Documentation =
For detailed documentation, visit [expoxr.com](https://www.expoxr.com/explorexr/documentation/).

= Credits =
ExploreXR is powered by [Google's Model Viewer](https://modelviewer.dev/) web component.
* Clean, secure, and standards-compliant code

== Privacy Policy ==

ExploreXR does not collect or transmit any user data. All rendering occurs in the visitor's browser. The plugin stores only the 3D model files and settings you configure within your WordPress site.

== Support ==

= Free Support =
* [Documentation](https://expoxr.com/explorexr/documentation/)
* [Support Forum](https://wordpress.org/support/plugin/explorexr/)
* [Community Help](https://expoxr.com/explorexr/support/)

= Premium Support =
Get access to priority support, WooCommerce & Elementor integrations, AR, and more.
[Upgrade to Premium](https://expoxr.com/explorexr/premium/)

== Credits ==

ExploreXR is powered by:
* [Model Viewer](https://modelviewer.dev/)
* WordPress API and best practices
* Open source contributors

Built with ❤️ by Ayal Othman from ExpoXR
