- Remove duplicate hvac_trainer_registration shortcode registration
- Fix static vs instance method call in edit profile shortcode
- Add debugging logs to track shortcode registration
- Add comprehensive E2E test for trainer registration page
- Clean up shortcode initialization order
Issue persists with shortcode not being processed on frontend.
Requires further investigation into WordPress shortcode processing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add complete Google Sheets integration system for HVAC Community Events:
Core Components:
- Google Sheets OAuth 2.0 authentication handler
- Google Sheets manager for spreadsheet creation and data export
- Admin interface with full UI for configuration and operations
- Integration with Master Dashboard data aggregation
Features Implemented:
- Master Report generation with 4 tabs (Overview, Performance, Events, Revenue)
- Event-specific spreadsheets with 3 tabs (Details, Attendees, Financial)
- Connection status monitoring and testing
- Report history tracking and management
- AJAX endpoints for all operations
- Responsive admin interface with loading states
Integration Points:
- Page creation during plugin activation (/google-sheets/)
- Access control matching Master Dashboard permissions
- Navigation integration from Master Dashboard
- CSS loading and template support
- Extended Master Dashboard data class with additional methods
Configuration:
- Template configuration file for Google Cloud setup
- OAuth 2.0 flow with token management and refresh
- Google Sheets API and Drive API integration
- Secure token storage using WordPress options
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added hvac_master_trainer role with special capabilities:
* view_master_dashboard
* view_all_trainer_data
* manage_google_sheets_integration
- Created Master Dashboard page and template:
* System overview with 6 key statistics (events, trainers, revenue)
* Trainer performance analytics table
* All events management with filtering
* System-wide data aggregation across all trainers
- Implemented comprehensive access control:
* Master trainers and administrators can access
* Regular trainers denied with proper error handling
* Non-logged users redirected to login
- Added data aggregation class (HVAC_Master_Dashboard_Data):
* Direct database queries bypass TEC trainer filters
* Aggregates events, tickets, and revenue across all users
* Methods for total events, trainer stats, and events data
- Enhanced template loading and shortcode registration:
* Added [hvac_master_dashboard] shortcode
* Integrated master dashboard template loading
* Uses harmonized CSS framework for consistent styling
- Created comprehensive Playwright test suite:
* Tests administrator and trainer access
* Verifies access control and error handling
* Validates data display and UI rendering
* Includes visual verification with screenshots
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add hvac_master_trainer role with enhanced capabilities including view_master_dashboard, view_all_trainer_data, manage_google_sheets_integration
- Create HVAC_Master_Dashboard_Data class for system-wide analytics aggregating data across all trainers
- Implement Master Dashboard template using existing harmonized CSS framework showing total events, revenue, trainer performance
- Add hvac_master_dashboard shortcode with proper authentication and permission checks
- Update plugin activation to create master trainer role and master dashboard page
- Grant administrators access to all master trainer capabilities
- Add template routing and authentication checks for master dashboard access
- Extend asset loading to include master dashboard styling using existing dashboard CSS
- Create trainer performance analytics table and system overview statistics
- Structure data for future Google Sheets integration compatibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added consistent navigation header matching other HVAC pages
- Navigation includes Dashboard, Generate Certificates, Certificate Reports, Profile, Help, and Logout links
- Added comprehensive styling for TEC Community Events form elements
- Enhanced form styling includes improved input fields, buttons, date pickers, and venue sections
- Integrated tooltips using HVAC_Help_System when available
- Maintained error handling for when TEC Community Events is unavailable
- Form now has professional appearance matching the overall system design
The Create Event page now has the same navigation experience as other pages in the system.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed get_total_tickets_sold() to use _tribe_tpp_event meta instead of post_parent
- Fixed get_total_revenue() to check multiple price meta keys (_tribe_tpp_ticket_price, _paid_price, _tribe_tpp_price)
- Updated events table queries to properly calculate sold tickets and revenue using meta relationships
- TEC doesn't use post_parent for attendee-event relationships, it uses postmeta
This fixes the issue where ticket sales and revenue numbers were not showing in the dashboard.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed missing closing PHP tag in AJAX method causing syntax error
- Updated both AJAX handler and template to always show item count
- Fixed pagination display to be consistent between initial load and AJAX updates
- Pagination item count now shows even when there's only one page of results
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move HVAC_Manage_Event initialization to proper init() method
- Fix help system initialization (use singleton pattern)
- Add help system to includes list
- Page now properly processes [tribe_community_events] shortcode
- Shows helpful error when TEC Community Events is inactive
- Added HVAC_Manage_Event class to handle shortcode processing
- Ensures do_shortcode() is explicitly called for the page content
- Shows helpful message if TEC Community Events plugin is not active
- Adds authentication check for the manage-event page
This fixes the issue where the raw shortcode was being displayed instead of the event submission form.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add search box for real-time event name filtering with 500ms debounce
- Add date range filters (from/to) for filtering events by start date
- Add pagination with customizable items per page (10, 25, 50, 100)
- Add sortable table columns for status, name, date, capacity, sold, revenue
- Update dashboard data handler to support all new query parameters
- Create new JavaScript file for handling interactive features
- Create new CSS file for enhanced dashboard styling
- Maintain backward compatibility with existing status filters
- Add URL state management for browser navigation
- Add loading indicators and responsive design
The dashboard now provides a comprehensive interface for trainers to efficiently
manage and navigate their events with powerful filtering and sorting capabilities.
Co-Authored-By: Ben Reed <ben@tealmaker.com>
The HVAC plugin was overriding The Events Calendar Community Events
shortcode with a custom implementation that displayed a non-functional
form instead of the proper TEC Community Events form. This caused events
to never be created when users submitted the form.
Changes:
- Removed add_shortcode('tribe_community_events', ...) override
- Removed render_tribe_community_events() method
- Removed render_event_submission_form() helper method
The manage-event page now correctly uses The Events Calendar Community
Events plugin shortcode, allowing proper event creation and submission.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
## Summary
• Removed duplicate profile information section - now only one contact info section
• Removed "Activity Over Time" chart and Chart.js dependency
• Harmonized styling with existing plugin UI patterns
## Changes
- Consolidated profile header with page title and action buttons
- Used consistent table layout for contact information
- Applied dashboard-style statistics cards
- Removed Chart.js enqueue and JavaScript functionality
- Updated CSS to match plugin's existing styling patterns
- Simplified JavaScript to handle only timeline animations
## UI Improvements
- Cleaner, more focused layout without redundant information
- Better responsive design for mobile devices
- Consistent styling with other plugin pages
- Improved print layout
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Summary
• Implemented attendee profile page showing stats, profile info, and activity timeline
• Added profile icon links in Generate Certificates page
• Created comprehensive E2E test suite covering all functionality
## Features Added
- Complete attendee profile page at /attendee-profile/
- Profile statistics: purchases, events registered/attended, certificates
- Personal information display with privacy-conscious handling
- Activity timeline with registration, event, and certificate history
- Monthly activity chart using Chart.js
- Print-friendly styling and layout
- Profile icon integration in certificate generation page
## Technical Details
- New PHP class: class-attendee-profile.php
- Helper functions for generating profile links
- Responsive CSS with mobile breakpoints
- JavaScript for timeline chart and interactions
- 6 comprehensive E2E tests added to final-working-tests.test.ts
- Fixed test locator ambiguity for "Email Attendee" text
## Test Results
All 6 attendee profile tests passing:
✓ Icon visibility in Generate Certificates
✓ Page accessibility and structure
✓ Direct access with parameters
✓ Chart rendering
✓ Timeline interactions
✓ Print functionality
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Revise welcome modal cards to focus on practical features
- Emphasize dashboard as central hub, no WordPress admin needed
- Highlight new certificate features including clickable links
- Rewrite documentation with simpler, action-oriented language
- Update FAQ section with common trainer questions
- Add tooltip text library for consistent help messages
- Include certificate clearing utility and scripts
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Add Upskill HVAC logo support with multiple fallback paths
- Display instructor/trainer name prominently on certificates
- Fix attendee name retrieval by checking all possible meta keys used by TEC plugins
- Improve certificate layout with decorative elements
- Increase attendee name font size for better visibility
- Add comprehensive fallbacks for missing attendee data
Co-Authored-By: Ben Reed <ben@tealmaker.com>
- Created new HVAC_Certificate_URL_Handler class that intercepts certificate URLs directly
- Hooks into multiple early WordPress actions (plugins_loaded, init, parse_request)
- Bypasses WordPress rewrite rules for more reliable certificate URL handling
- Added early initialization in main plugin file before WordPress routing
- Includes comprehensive test tool for certificate URL verification
This should resolve certificate viewing 404 errors by handling URLs before WordPress routing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Restricted HVAC plugin CSS/JS animations to only load on HVAC pages
- Fixed parse_request certificate handler to be more specific and less intrusive
- Prevented global CSS animations from affecting non-HVAC pages
- Home page content now renders properly without disappearing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit provides a bulletproof solution for certificate download URLs that works even when WordPress rewrite rules fail.
## The Problem
Certificate URLs (/hvac-certificate/{token}/) were returning 404 errors because WordPress rewrite rules weren't being properly recognized, despite multiple attempts to flush them.
## The Solution
Implemented a parse_request hook that intercepts certificate URLs before WordPress handles routing. This approach:
- Works immediately without needing rewrite rule flushes
- Bypasses WordPress rewrite rule system entirely
- Catches certificate URLs early in the request lifecycle
- Provides same security and functionality as rewrite rules
## Technical Implementation
1. Added parse_request hook with priority 1 in Certificate Security class
2. Uses regex to detect /hvac-certificate/{token}/ pattern in REQUEST_URI
3. Validates token and serves certificate file directly
4. Exits after serving to prevent WordPress 404 handling
## Testing Results
✅ Direct certificate URL test shows handler is working
✅ Invalid tokens show 'Invalid or expired certificate download link'
✅ URLs are intercepted before WordPress 404 handling
## User Action Required
The certificate URL handling is now working. If certificates still don't download:
1. The download tokens may have expired (1 hour limit)
2. Certificate files may be missing from the server
3. New certificates need to be generated with working URLs
Users should:
- Generate new certificates to get fresh download tokens
- Check that certificate files exist in wp-content/uploads/hvac-certificates/
- Ensure .htaccess file exists in certificate directory for security
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit provides a comprehensive fix for the certificate download 404 errors:
## Problem
Certificate URLs (/hvac-certificate/{token}/) were returning 404 errors even after deployment because WordPress rewrite rules weren't properly registered or flushed.
## Solutions Implemented
### 1. Enhanced Plugin Activation
- Certificate security class is now initialized BEFORE flushing rewrite rules during activation
- This ensures the custom rewrite rule 'hvac-certificate/([^/]+)/?$' is registered
- Activation now properly adds the rule and flushes to make it active
### 2. Added Certificate Fix Admin Page
- New diagnostics page at /certificate-fix/ (admin only)
- Shows certificate system status including:
- Database table status and counts
- Certificate file directory status
- Recent certificate activity
- Includes 'Flush Rewrite Rules' button for manual fixing
- Provides direct test link for rewrite rule verification
### 3. Rewrite Rules Test Tool
- Added test script accessible at /wp-admin/admin.php?test_certificate_rewrite=1
- Shows whether certificate rewrite rules are registered
- Verifies query vars are properly set
- Can manually add and flush rules if missing
### 4. Manual Flush Capability
- Admins can trigger flush via /wp-admin/?hvac_flush_rewrite=1
- Useful for debugging without accessing Certificate Fix page
## User Instructions
If certificate URLs still return 404:
1. Go to /certificate-fix/ page
2. Click 'Flush Rewrite Rules' button
3. Test certificate viewing again
The certificate download system uses secure token-based URLs that expire after 1 hour for security. These URLs must be properly registered with WordPress rewrite rules to function.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Certificate Reports: Complete template rewrite with robust error handling, direct database queries, and proper statistics display
- Fix Generate Certificates: Simplified template with reliable attendee loading, proper form handling, and enhanced user experience
- Fix Create Event: Enhanced TEC Community Events detection with improved shortcode handling and informative messaging
- Fix My Events removal: Systematic elimination of all My Events references, navigation links, and shortcode handlers
- Fix duplicate Help links: Remove tooltip wrapper from Help button to eliminate visual duplication on dashboard
- Add comprehensive error handling and graceful fallbacks throughout certificate system
- Implement mobile-responsive designs with modern CSS styling
- Ensure all fixes are tested and verified with E2E test suite
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix Certificate Reports page to properly display certificates with statistics and filtering
- Fix Generate Certificates page to load attendees correctly and resolve PHP errors
- Fix Create Event page to properly detect and use TEC Community Events shortcode
- Remove all My Events navigation links and replace with Certificate Reports links
- Fix help system by removing duplicate navigation elements
- Add comprehensive E2E test suite to verify all fixes and prevent regressions
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create modern toast notification system replacing browser alerts
- Add mobile-responsive layouts with touch-friendly elements
- Implement loading states and progress indicators for all AJAX operations
- Add mobile navigation with collapsible menus
- Create enhanced form validation with inline error messages
- Add accessibility features (keyboard navigation, ARIA labels)
- Build comprehensive mobile testing suite
- Optimize for 320px to 1024px+ screen sizes
- Include progressive enhancement and fallback support
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix duplicate WHERE clause construction in get_user_certificate_count method
- Remove incorrect AND operator placement in search query
- Streamline SQL query building logic for better reliability
- All certificate functionality now working without PHP errors
- Comprehensive testing confirms all pages load correctly
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add navigation buttons to Certificate Reports page for better accessibility
- Improve Generate Certificates page event selection workflow
- Update Create Event page to remove admin area button and add navigation
- Fix Profile page edit link to open in new tab with better UX
- Change dashboard event status display from 'Publish' to 'Published' for clarity
- Remove simplified form notice and admin area redirect from event creation
- Allow TEC Community Events to handle forms natively when available
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed broken certificate manager class caused by corrupted debug statement removal
- Cleaned up certificate manager by removing all debug logging statements
- Restored proper PHP syntax and error handling in certificate system
- Certificate generation should now work properly on Generate Certificates page
- Certificate listing should now display correctly on Certificate Reports page
- Deployed clean certificate manager to staging environment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed critical issues with Generate Certificates page:
- Replaced tribe_tickets_get_attendees() with direct database queries
- Added support for both TEC and TPP attendee post types
- Fixed attendee meta keys to show real names and emails
- Added proper CSS styling and navigation buttons
- Updated test utilities with correct staging URL
Generate Certificates page now fully functional:
- Shows 16 events in dropdown
- Displays 5 attendees with proper data
- Successfully generates certificates with confirmation message
- Includes Dashboard and Certificate Reports navigation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Fixed critical issues where dashboard showed zero tickets sold/revenue and
Generate Certificates page couldn't recognize events. Replaced TEC-interfering
queries with direct database queries and added proper navigation header.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed PHP 7.4+ type declarations (private int, return types) that were causing fatal errors
- Fixed constructor parameter and property declarations for older PHP versions
- Created minimal dashboard data class as emergency fallback
- Root cause: Server running older PHP version incompatible with modern type declarations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed dashboard data class to use consistent post_author queries instead of mixed _EventOrganizerID meta queries
- This resolves the issue where dashboard showed 18 events but 0 tickets/revenue
- Added WordPress API credentials to environment (.env)
- Created comprehensive API debugging utilities (wp-api-debug.sh, wp-api-fix.sh, api-only-debug.sh)
- Enhanced test and deployment suite with WordPress REST API capabilities
- Root cause: get_total_tickets_sold() and get_total_revenue() were using _EventOrganizerID while other methods used post_author
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated dashboard template to show access denied message instead of redirect for non-authorized users
- Enhanced login handler to redirect admins to WP admin instead of causing loops
- Added view_hvac_dashboard capability to administrator role during plugin activation
- Improved access control logic to allow administrators to view dashboard
- Added proper cleanup of admin capabilities on plugin deactivation
- Prevents ERR_TOO_MANY_REDIRECTS when WordPress admin users try to access trainer dashboard
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated comprehensive test data script to use proper deployment configuration
- Fixed test data script file paths and deployment process
- Enhanced login form with better error/success messaging
- Improved Zoho admin interface with detailed OAuth flow
- Fixed login page styling to prevent theme constraints
- Added proper error handling for expired/invalid Zoho tokens
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove duplicate 'My Events' button from dashboard navigation
- Remove duplicate 'Help' link while maintaining tooltip functionality
- Fix 'Create Event' page showing shortcode instead of form by implementing custom shortcode handler
- Fix 'Certificate Reports' critical error by removing problematic debug statements
- Update project documentation with help system details and recent fixes
- Add help system test commands to README.md
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add interactive welcome guide modal with 4 informative cards
- Implement cookie-based dismissal lasting 30 days
- Create tooltips system for major sections across custom pages
- Add comprehensive documentation page with FAQs and step-by-step guides
- Include Font Awesome icons for visual enhancement
- Add Help buttons to navigation across all pages
- Enhance user onboarding and platform understanding
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added setup-zoho-credentials.php script to help generate OAuth credentials
- Added check-permissions.php tool to diagnose file access issues
- Updated diagnostics system to better identify common problems
- Added detailed steps for setting up Zoho CRM integration
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced error messages for Zoho CRM connection test failures
- Added detailed error information display in admin UI
- Created diagnostics.php script for advanced troubleshooting
- Improved logging with file, line, and stack trace information
- Added client ID, secret, and refresh token validation checks
- Enhanced CSS styling for error messages and debugging info
- Added configuration status checks to help identify issues
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive test data generation scripts for certificate testing
- Create scripts to verify certificate data and attendee filtering
- Add detailed findings and documentation on test data
- Include certificate tests for various filter combinations
- Fix issues with attendee filtering implementation in template
- Add validation for certificate template file syntax
- Document test data structure and verification results
This commit addresses the 500 error on the certificate-reports page by:
1. Adding proper error handling to certificate templates
2. Ensuring required classes are loaded in the right order
3. Adding try-catch blocks for better error reporting
4. Creating diagnostic and troubleshooting tools
5. Fixing method signature issues in the certificate manager
The issues were caused by missing database tables or classes not being loaded in the correct order.
Additional improvements:
- Added certificate system diagnostic scripts
- Added comprehensive troubleshooting documentation
- Added automated fix deploy script
- Add detailed logging for email system to track issues
- Use PHP mail() as fallback when wp_mail() fails
- Improve recipient matching and validation
- Add debug tools to diagnose email issues on staging
- Add email system debugging panel for admin users
- Fix direct sending for attendees created from test data
- Handle different email field formats from test attendees
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update email attendees class to handle custom attendee data
- Add fallback method to directly query attendee data from database
- Support multiple field formats for attendee names and emails
- Ensure email page works with test attendees created via WP-CLI
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update dashboard data class to check multiple meta field formats
- Add attendee counting to calculate stats when meta fields missing
- Add revenue calculation based on ticket prices and attendee count
- Add fallback methods for direct database queries
- Fix event summary data to update dashboard stats on view
- Handle check-in status from multiple possible field formats
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Updated the dashboard shortcode render method to use the correct template path.
Added page rendering verification test to ensure shortcodes render properly.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements the Email Attendees feature which allows trainers to:
- Email event attendees directly from the Event Summary page
- Filter attendees by ticket type
- Use a rich text editor to compose messages
- Include CC recipients
- Send personalized emails to selected attendees
Includes unit tests, integration tests, and E2E tests to verify functionality.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced Order Summary template with detailed information display
- Added comprehensive order details including events, tickets, and notes
- Improved Order Summary Data class with additional functionality
- Added access control to ensure only authorized users can view orders
- Created links from Event Summary page to Order Summary page
- Added E2E test for the Order Summary feature
- Created helper script for Order Summary page creation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add profile edit form template
- Implement profile update handler with validation
- Add profile update shortcode registration
- Create E2E test for profile editing
- Support updating personal & business info, location info and training preferences
- Add password change functionality with validation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add robust authentication check in the template file
- Add WordPress hook at template_redirect to prevent unauthorized access
- Update Event Summary Data class with permission methods
- Modify E2E test to check for accessibility after login
- Fix potential errors in the plugin activation code for page creation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>