ChangeLogs

  • StageIt 5 ChangeLog

    StageIt - Changelog

    All notable changes to StageIt will be documented in this file.

    v5.6.3 2026-03-05

    Logging, Diagnostics & System Check Fixes

    📦 New Features

    • Debug Logging: New toggleable debug log for detailed diagnostic output during staging removal — writes to a separate stageit-debug.log file, controlled via a new “Debug Logging” setting in the Deployment tab
    • Debug Log Viewer: Log Viewer page now has “Operations Log” and “Debug Log” tabs with clear, download, and view support for both log files
    • Operations Log Level: New setting to control operations log verbosity — “All Operations” (default), “Warnings and Errors Only”, or “Off”

    🐛 Bug Fixes

    • Operations Log Completion Spam: Fixed “StageIt completed without any warnings or errors” being logged on every AJAX chunk instead of once at the end — completion messages now only appear when operations actually finish
    • Log Filter False Positives: Fixed “Warnings and Errors Only” log level matching ERROR anywhere in log messages (e.g., filenames like error.php) instead of only matching message prefixes — now uses preg_match for prefix-only matching
    • Staging Removal Crash: Fixed count(): Argument #1 must be of type Countable|array, false given error when removing staging environment. vbDb::_showTables() can return false on failure, and count(false) is a fatal error in PHP 8. Added is_array() guard in both stgAjaxRemove and stgAjaxRemoveOptimized
    • System Check: File Permissions Always Failing: Fixed $prechecks['files'] threshold set to 99 instead of 1, causing the file permission check to always report an error regardless of actual permissions
    • System Check: AJAX Check Always Failing: The file permissions bug cascaded into the AJAX connectivity check, making it always return an error since _prechecks() returns the last error found
    • PHP Config Error Now Shows Missing Extensions: When PHP extensions are missing, the error popup now lists which specific extensions are missing (e.g., “Missing extensions: mbstring, zip”) instead of a generic message
    • Improved PHP Config Error Message: Updated error text to direct licensed users to contact support at [email protected] with the specific extension information

    v5.6.2 2026-02-28

    Optimized Staging Removal & Database Cloning Fixes

    📦 New Features

    • Optimized Staging Removal: New stgAjaxRemoveOptimized class uses native OS commands (rd/rm -rf) for 10-100x faster staging area removal, with automatic fallback to PHP methods
    • Configurable Optimization: Enable/disable optimized removal and native commands via component configuration, with configurable chunk size (10-200 files)
    • Enhanced Progress Tracking: Real-time progress with detailed file counts, performance monitoring (files/sec, ETA), and method detection (Native vs PHP) in UI

    🐛 Bug Fixes

    • Staging Removal Fallback Crash: Fixed Call to undefined method stgAjaxRemove::removeFiles() error when the optimized removal class falls back to the original class mid-operation — added removeFiles() and removeDirectories() fallback methods to stgAjaxRemove
    • Critical: Chunked Clone Position Tracking: Fixed infinite loop during database deployment caused by saving the starting position ($pos) instead of the current table index ($n) when a large table required multiple chunks
    • Checkpoint Poisoning: Clear checkpoint data when a chunked table clone fails, preventing stale offsets from being applied to unrelated tables
    • Missing Target Table Safety: Added safety check in _cloneTableChunked — if target table doesn't exist at a non-zero offset, reset and recreate from scratch
    • Foreign Key Checks: Fixed enableKeyChecks() which was setting foreign_key_checks = 0 instead of = 1
    • Deterministic Chunked Cloning: Added ORDER BY on primary key to chunked INSERT...SELECT queries, preventing duplicate key errors
    • Improved Error Logging: Database errors now log the actual MySQL error message for better diagnostics

    v5.6.1 2026-02-05

    Log Viewer Memory Fix

    🐛 Bug Fixes

    • Out-of-Memory Fix: Log viewer now reads only the last 2 MB of large log files instead of loading the entire file into memory
    • Truncation Warning: Displays a translated warning when the log is too large to show in full, with guidance to use the Download button

    v5.6.0 2026-02-05

    Global Language Expansion - 15 Languages

    🌐 Multi-Language Expansion

    Added 13 additional languages for full global coverage, bringing total supported languages to 15:

    • German (de-DE) - Full translation
    • Spanish (es-ES) - Full translation
    • French (fr-FR) - Full translation
    • Italian (it-IT) - Full translation
    • Portuguese Brazilian (pt-BR) - Full translation
    • Russian (ru-RU) - Full translation
    • Polish (pl-PL) - Full translation
    • Japanese (ja-JP) - Full translation
    • Chinese Simplified (zh-CN) - Full translation
    • Turkish (tr-TR) - Full translation
    • Greek (el-GR) - Full translation
    • Czech (cs-CZ) - Full translation
    • Swedish (sv-SE) - Full translation

    🔌 Plugin Internationalization

    • Plugin XML Fully Internationalized: Converted all hardcoded English labels and descriptions to language keys
    • 35+ Translation Keys: Complete plugin settings UI now translatable including:
      • Basic settings (banner visibility, user group permissions)
      • Style settings (solid color, animated gradient options)
      • Color settings for live and staging environments
      • Gradient animation configuration
    • Full Plugin Language Files: Created comprehensive translation files for all 15 languages

    📦 Manifest Updates

    • Component manifest updated to include all 15 language references
    • Package manifest updated with all 15 package installation translations
    • Plugin manifest converted to use language keys for all field labels/descriptions

    v5.5.0 2026-02-03

    Full Internationalization (i18n) Support

    🌐 Multi-Language Support

    • Complete i18n Implementation: All user-facing strings now use Joomla's Text::_() language system
    • Dutch Translation: Full Dutch (nl-NL) translation included with ~150 translated strings
    • Future-Ready: Language file structure supports easy addition of new languages
    • Organized Language Keys: Strings organized by section (Welcome, Deploy, Sync, Backups, Config tabs, etc.)

    📁 Language Files Added

    • component/language/en-GB/en-GB.com_stageit.ini - Comprehensive English with all strings
    • component/language/nl-NL/nl-NL.com_stageit.ini - Full Dutch translation
    • component/language/nl-NL/nl-NL.com_stageit.sys.ini - Dutch system file
    • language/nl-NL/nl-NL.plg_system_stageit.ini - Dutch plugin strings
    • language/en-GB/en-GB.pkg_stageit.sys.ini - Package installation message (English)
    • language/nl-NL/nl-NL.pkg_stageit.sys.ini - Package installation message (Dutch)

    🔧 Template Updates

    • Welcome Page: All welcome messages, feature lists, and button labels internationalized
    • Backups Page: Table headers, status messages, and process descriptions translated
    • Log Viewer: File info labels, buttons, and empty state messages translated
    • Configuration Tabs: All tab labels, field labels, descriptions, and option values internationalized
      • Deployment tab: Speed options, acceleration, backup settings, chunk configuration
      • Environment tab: Banner options, visibility settings, style options, color labels
      • Data Tables tab: Exclusion warnings, use cases, table groups, confirmation text
      • Files/Folders tab: Sync descriptions and warning messages

    📦 Manifest Updates

    • Component manifest updated to include both en-GB and nl-NL language file references
    • Package manifest updated with translatable installation message

    v5.4.2 2026-02-03

    Backups Page Dark Mode & UI Consistency

    🎨 Dark Mode Fixes

    • Backups Page Dark Mode: Fixed unreadable white-on-white text in dark mode for backup tables
    • CSS Variables: Updated all hardcoded colors to use Bootstrap 5 CSS variables throughout
    • Legacy Gradient Removal: Removed obsolete browser-specific gradient prefixes for cleaner CSS
    • Typography Modernization: Updated to rem units and font inheritance for better scaling

    🔧 Improvements

    • Icon Fonts: Replaced missing image-based icons with Joomla icon fonts (icon-trash, icon-refresh)
    • Asset Versioning: Added cache-busting version parameter to CSS and JS files
    • Row Hover States: Added hover states to backup tables for better UX
    • .notdone Class: Added styling for incomplete action indicators

    v5.4.1 2026-02-02

    Joomla 5 Table Groups & UI Update

    🔧 Improvements

    • Updated Core Table Groups: Modernized the hardcoded Joomla core table list for Joomla 5 compatibility
    • New Table Groups Added: Added 5 new groups for Joomla 4/5 features:
      • Joomla Workflows (workflows, workflow_associations, workflow_stages, workflow_transitions)
      • Joomla Custom Fields (fields, fields_categories, fields_groups, fields_values)
      • Joomla Privacy and Logging (action_logs, action_log_config, privacy_consents, privacy_requests)
      • Joomla Scheduler (scheduler_tasks)
      • Joomla Guided Tours (guidedtours, guidedtour_steps)
    • Removed Obsolete Tables: Removed references to tables no longer in Joomla 5 (weblinks, core_log_searches, sections, legacy banner names)
    • Smart Search Update: Updated finder table references to match Joomla 5 schema (single finder_links_terms instead of 0-f split)
    • New Core Tables: Added mail_templates, tuf_metadata, user_mfa, webauthn_credentials, template_overrides, history, schemaorg

    🎨 UI Enhancements

    • Table Exclusion UI Redesign: Improved Data Tables tab with native checkboxes and Atum dark/light mode compatibility
    • Group Selection Badges: Visual indicators showing count of selected tables in collapsed groups (e.g., "3 selected")
    • Clear All Button: Quick reset button to uncheck all table exclusions
    • Exclusion Confirmation: Confirmation checkbox with support disclaimer when excluding tables
    • Consistent Styling: Fixed row heights and minimum widths for uniform appearance

    v5.4.0 2026-01-01

    Log Viewer & Large Table Support Release

    🔍 Log Viewer

    • Dedicated Log View: New admin view at View Log menu item to view, download, and clear the StageIt log file
    • Dark-Themed Display: Log content displayed in a styled monospace code block with dark background
    • Log Management: Clear log and download log buttons for easy log file management
    • Log File Info: Shows log file path, size, and last modified date
    • Centralized Log Location: Moved log file to /administrator/logs/stageit-log.txt for better organization

    📊 Detailed Operation Logging

    • Sync Operations: Full logging of sync process including folder mapping, file backups, and database syncing
    • File-Level Visibility: Each file backup and sync operation is now logged individually
    • Table Sync Logging: Database table sync operations logged with row counts and progress
    • Skipped Items: Logs when tables are skipped (unchanged) or when structure-only sync is performed

    🔄 Large Table Chunked Cloning

    • Chunked Database Operations: Large tables (10,000+ rows) are now cloned in configurable chunks to prevent timeouts
    • Configurable Thresholds: CHUNK_THRESHOLD (default 10,000 rows) and CHUNK_SIZE (default 5,000 rows) constants
    • Progress Tracking: Chunked operations report progress percentage during sync
    • Table Info Methods: New _getTableRowCount() and _getTableInfo() methods for table size detection

    💾 Checkpoint System for Resume Capability

    • Operation Checkpoints: Long-running operations save checkpoints to allow resume after timeout or crash
    • Automatic Resume: If a sync operation was interrupted, it automatically resumes from the last checkpoint
    • 1-Hour Expiry: Checkpoints expire after 1 hour to prevent stale resume attempts
    • Checkpoint Logging: All checkpoint save/load operations are logged for transparency

    🛠️ Technical Improvements

    • Controller Actions: New clearLog() and downloadLog() controller methods
    • View Registration: Log view properly registered in controller display switch
    • Menu Integration: "VIEW LOG" added to admin submenu

    v5.3.3 2025-11-19

    Frontend Banner & Visibility Controls Release

    🚀 New Features

    • Frontend Banner Support: Added option to display the StageIt banner on the frontend site
    • User Group Visibility Controls: Select specific user groups that can see the banner (backend and frontend separately)
    • Joomla 5 User Group Selection: Uses native usergrouplist field type for multi-select user group checkboxes

    🔧 Component Integration

    • Environment Tab Updates: Added frontend banner toggle and user group visibility settings to component configuration
    • Unified Settings: Plugin settings now fully manageable from StageIt component's Environment tab
    • Immediate Effect: Settings saved from component now take effect immediately without requiring plugin page visit

    📦 Build System Fixes

    • Package Structure Fix: Fixed build script to create proper admin/ folder structure in component ZIP
    • Build Script Modernization: Batch file now calls PowerShell script for reliable package creation
    • XML Encoding Fix: Resolved character encoding issues in plugin manifest

    🐛 Bug Fixes

    • Fresh Parameter Loading: Plugin now reads parameters directly from database to ensure latest settings are used
    • Form Compatibility: Fixed parameter loading to preserve Joomla's form system compatibility
    • Dark Mode Styling: User group checkboxes now properly styled for dark mode using CSS variables

    v5.3.2 2025-11-18

    Banner Scroll Behavior Enhancement Release

    🎨 Banner UX Improvements

    • Non-Sticky Top Banner: Banner now scrolls naturally with page content instead of staying fixed at top
    • Dual Banner System: Top banner scrolls away, bottom banner appears when top is out of view
    • IntersectionObserver: Uses modern browser API for efficient scroll detection
    • Smooth Transitions: Clean appearance/disappearance of bottom banner
    • Respects Settings: "Banner Reappears at Bottom" setting now properly controls whether bottom banner appears

    🔧 Technical Changes

    • CSS Restructure: Changed from single fixed banner to dual banner approach (top relative, bottom fixed)
    • Inline JavaScript: Banner scroll behavior now embedded in plugin for frontend compatibility
    • Body Padding: Removed top padding, added bottom padding only when bottom banner visible
    • Updated Selectors: All CSS selectors updated for new dual banner IDs

    v5.3.1 2025-11-17

    Enhanced Error Handling & Logging Release

    🔍 Error Display Improvements

    • Full Stack Traces: Errors now display complete stack traces in Joomla's message container at the top of the page instead of truncated popups
    • Formatted Error Display: Monospace font with preserved line breaks for better error readability
    • Comprehensive Error Information: Shows full error context with file paths and line numbers in the message area
    • Better HTML Error Parsing: Improved extraction of meaningful errors from Joomla's HTML error pages
    • No More Popups: Replaced JavaScript alert() popups with Bootstrap alert messages in the system message container

    📝 Logging System Enhancements

    • Multi-Location Logging: Errors now written to multiple fallback locations for reliability
    • Persistent Error Logs: All errors logged to administrator/logs/com_stageit.log.php
    • Fallback Logging: Additional fallback to root directory if admin logs folder unavailable
    • Stack Trace Logging: Complete stack traces saved to log files for debugging
    • Timestamped Entries: Each log entry includes precise timestamp for issue tracking

    🛡️ Exception Handling

    • Try-Catch Wrappers: All AJAX controller methods now wrapped in exception handlers
    • Graceful Error Recovery: Errors caught and displayed cleanly instead of generic 500 pages
    • Debug Information: Console logging for detailed debugging when errors occur
    • Network Error Detection: Distinguishes between network errors, 404s, and server errors

    🐛 Critical Bug Fixes

    • Fixed Typo in Stack Trace Generation: Corrected $function['function'] to $frame['function'] on line 99 that was preventing error logging
    • Removed Invalid JSON Checks: Eliminated problematic json.length < 1 check that was causing unnecessary alert() popups
    • Error Callback Improvements: Enhanced AJAX error handler to extract meaningful messages from HTML responses
    • Replaced alert() with Joomla Messages: All error notifications now use Joomla's standard Bootstrap alert system in the #system-message-container

    v5.3.0 2025-11-11

    Package Integrity & Build Process Enhancement Release

    🎨 Plugin UI Enhancements

    • Button Icon Improvements: Replaced Font Awesome dependency with Unicode emoji icons (🔄, 🏠)
    • Self-Contained Design: Plugin now completely independent with no external dependencies
    • Consistent Appearance: Buttons display identically across all browsers and platforms
    • CSS Cleanup: Removed all Font Awesome CSS and font file references

    📦 Build Process Improvements

    • Automated Package Builder: New build-package.bat script with intelligent MSBUILD detection
    • Binary Corruption Prevention: Ensures proper binary file handling during ZIP creation
    • Timestamped Packages: Automatic package naming with version and timestamp
    • Build Verification: Post-build validation to confirm package integrity

    🔧 Package Structure Cleanup

    • Removed Development Files: Excluded .git, .claude, and other non-essential development files
    • Optimized Package Size: Removed unnecessary fonts and external dependencies
    • Clean Distribution: Only production files included in release packages

    v5.2.0 2025-10-25

    Ultra-Simple Plugin Architecture & Complete Installation Fixes Release

    🚀 Major Plugin Redesign

    • Ultra-Simple Architecture: Completely rewrote plugin from 245 lines to 139 lines with modular structure
    • Smart Staging Detection: Intelligent detection with conditional switch button only when staging directory exists
    • Clean Fallback Display: Shows simple "LIVE SITE" text when no staging available (no unnecessary buttons)
    • Enhanced Button Logic: "Switch to Live" always available on staging, "Switch to Staging" only when staging exists

    🎨 Full Style Settings Integration

    • Complete Color Support: All plugin style settings now functional (gradient/solid, text colors, button colors)
    • Animated Gradients: Restored gradient animations with customizable duration from plugin settings
    • Visibility Controls: Proper permission checking (All users/Managers/Super Users) working correctly
    • Forced Mode Support: Manual staging/live override option fully integrated

    🎨 Button Styling Enhancements

    • StageIt Button Targeting: Fixed button readability with proper #0b5ed7 color for StageIt-specific buttons only
    • Hover States: Added consistent #59a645 hover color for both light and dark modes on StageIt buttons
    • Sync Button Fix: Ensured "Sync with Live" button is fully visible and readable in all themes
    • Scoped CSS: Applied styling only to StageIt component buttons, preserving Joomla core UI elements

    🐛 Complete Installation Error Resolution

    • "File does not exist com_stageit": Added missing entry point file to site files section
    • "Source folder not found": Removed obsolete media folder references from component manifest
    • Entry Point Declaration: Properly declared com_stageit file in manifest <files> section
    • Clean Package Structure: Eliminated all manifest inconsistencies and validation warnings
    • Zero Installation Errors: Achieved completely clean installation process for professional deployment

    📦 CSS Architecture Modernization

    • Proper Joomla 5 Structure: Moved CSS from deprecated media/ folder to component resources/css/
    • Legacy File Cleanup: Removed duplicate and obsolete CSS files from old media structure
    • Build Script Enhancement: Updated package builder to handle proper file structure and cleanup
    • Installation Script: Enhanced with cleanupOldFiles() method for seamless upgrades from older versions

    📦 Package Quality Improvements

    • XML Validation: Added automatic XML validation to build process to prevent installation errors
    • Clean Plugin Packaging: Fixed plugin ZIP creation to include only essential files (no backup/dev files)
    • Standalone Testing: Created standalone plugin packages for independent testing before full integration
    • Professional Structure: Maintained all existing functionality while dramatically simplifying codebase

    🔧 Development Tools Enhanced

    • Build Script Validation: Enhanced build process with XML syntax checking and file filtering
    • Testing Workflow: Improved development workflow with standalone plugin testing capability
    • Error Prevention: Proactive validation prevents "Can't find Joomla XML setup file" errors
    • Comprehensive Documentation: Updated JOOMLA5-CHECKLIST.md with all lessons learned from real-world deployment

    v5.1.4 2025-10-25

    Joomla 5 Modernization & Installation Fixes Release

    🔧 Installation & Packaging Fixes

    • Package Structure: Fixed component manifest naming (stageit.xmlcom_stageit.xml) and proper folder hierarchy
    • ZIP Compatibility: Implemented forward slash paths in ZIP files to prevent installation errors
    • Schema Updates: Updated manifests from version 3.0 to 5.0 for full Joomla 5 compatibility
    • Media Path Fix: Corrected media folder references in component manifest (mediaadmin/media)
    • Component Entry Point: Added required com_stageit.php site file for proper component structure
    • jQuery UI Repair: Replaced corrupted jQuery UI library with clean version from CDN
    • Warning-Free Installation: Eliminated all installation warnings for professional client deployment

    🎯 System Dashboard Compatibility

    • Smart Page Filtering: Plugin now uses whitelist approach to prevent interference with system pages
    • Dashboard Protection: Completely excludes system dashboard, check-in, and configuration pages from banner injection
    • AJAX Safety: Blocks all AJAX/API requests to prevent system check interference
    • Global Check-in Fix: Resolved issues with Joomla's global check-in functionality

    📋 Modern System Requirements

    • PHP 8.1+ Support: Updated minimum PHP requirement from 5.3.10 to 8.1.0 (Joomla 5 standard)
    • Memory Optimization: Increased memory requirement from 128MB to 256MB for modern operations
    • Timeout Updates: Extended execution timeout from 30s to 60s for reliable deployments
    • Extension Validation: Replaced obsolete safe_mode checks with essential PHP extension validation
    • Memory Detection: Improved memory limit detection including unlimited memory support

    🔧 Development Tools

    • Pre-build Validation: Added comprehensive package validation script (validate-package.ps1)
    • Component Templates: Created Joomla 5 component template generator (create-template.ps1)
    • Best Practices Guide: Added comprehensive development checklist (JOOMLA5-CHECKLIST.md)
    • Build Integration: Enhanced build script with automatic validation and forward-slash ZIP creation

    🔧 Joomla 5 Compatibility Enhancements

    • Database Layer: Fixed deprecated Quote()quote() and query()execute() methods for full J5 compatibility
    • View Classes: Removed legacy jimport statements and JViewLegacy compatibility layers
    • Class Naming: Updated to PSR standards (StageItViewdefaultStageItViewDefault)
    • Asset Management: Implemented modern Web Asset Manager for improved performance
    • Error Handling: Added structured exception handling and modern Joomla logging system
    • Log Path Fix: Corrected staging log path to use stageit/administrator/logs instead of administrator/stageit/logs

    🔧 Code Quality Improvements

    • Modern PHP: Updated error handling with proper Exception classes
    • Logging System: Replaced custom vbLog with native Joomla\CMS\Log\Log
    • Input Handling: Modernized using Factory::getApplication()->input
    • Copyright: Updated copyright notices to 2025

    🎨 CSS Optimization

    • File Size Reduction: Removed ~293 lines of unused CSS (20% reduction)
    • Legacy Cleanup: Removed obsolete Joomla 2.5/3 styles and unused components
    • Performance: Eliminated unused search, pagination, gallery, and Sales Pro CSS
    • Maintainability: Cleaner stylesheet with only essential styles retained

    🔧 Developer Experience

    • Future-Ready: Fully compatible with Joomla 5.x architecture
    • Standards Compliant: Follows modern Joomla coding standards
    • Error Recovery: Enhanced debugging and error reporting capabilities

    v5.1.3 2025-10-24

    🐛 Bug Fixes

    • Admin URL Correction: STAGING at /stageit/administrator, LIVE at /administrator.
    • System Dashboard Fix: Fixed red-X issue by guarding for HTML-only responses in onBeforeCompileHead/onAfterRender.
    • Safe Injection: Removed unsafe injection fallback for non-HTML (no-<body>) responses.
    • Switch Button Targets: Updated staging → /administrator/, live → /stageit/administrator/.

    🔧 Improvements

    • XML Standardization: Unified all XML manifests with consistent version numbering, creation dates, and copyright notices
    • Initial Git Repository: Established version control with GitHub integration for professional development workflow

    v5.1.2 2025-10-23

    🔧 Improvements

    • Update Sites hardening: Only the package declares the update server (URL unchanged: https://www.php-web-design.com/updates/check.php?ext=stageit5). Component/plugin manifests no longer register update sites.
    • Self-healing installer: Package postflight collapses duplicate update-site rows, removes legacy stageitpro, and ensures only the package is mapped to the update site.
    • Cosmetic: Update server named "StageIt Update Server", enabled by default.

    v5.1.1 2025-10-22

    🔧 Improvements

    • Update Sites cleanup: Package now installs with a single update server (package-level) and removes stageitpro legacy endpoint. Component/plugin manifests no longer register update sites. Postflight script de-duplicates mappings so only the package is linked to ext=stageit5.

    v5.1.0 2025-10-22

    Consolidated release since 5.0.2. Highlights:

    🔧 System Plugin

    • Joomla 5 / PHP 8-safe rewrite using a proper CMSPlugin class and SubscriberInterface.
    • Safe string concatenation; removed typed property conflicts.
    • Strict /stageit detection by root name or URL path; logs detection reason to /administrator/logs/stageit.log.php (root-name-stageit, url-path-stageit, default-live).
    • Automatic Live ↔ Staging switch buttons with safety checks.

    🎨 Style & Theming

    • New Style tab with:
      • Style Mode (default gradient).
      • Gradient Cycle default 5s (min 5, max 120).
      • Live (solid) #59a645; Live gradient #59a645 → #356732; Live text #ffffff.
      • Staging (solid) #f79034; Staging gradient #f79034 → #c05627; Staging text #ffffff.
      • Button Link Color (default #ffffff) applied to "Go to Live / Staging" links.
    • Dark-mode hardened for Atum/Bootstrap tokens, with fallbacks to handle caching/overrides.

    🎨 Admin UI

    • Converted legacy .button markup to Bootstrap .btn variants; tables use .table.table-striped.align-middle.
    • Removed prior admin helpers (seconds suffix, input-width caps, preview swatch).

    📦 Packaging & Installer

    • Installer uses inner plugin package and now reflects the correct defaults and runtime logic on fresh installs.
    • Unified manifests (schema 4.0) and metadata; consolidated changelog.

    🐛 Reliability

    • Fixes for parse errors (method placement, $autoloadLanguage), CSS cache-busting (?v= on stylesheet), and consistent asset loading.

    v5.0.12 2025-10-19

    🎨 UI Improvements

    • Bootstrap Markup: Replaced custom classes with Bootstrap counterparts in admin templates.
      • .buttonbtn variants (remove → btn-outline-danger; login/rebuild → btn-primary; otherwise → btn-secondary).
      • Tables with .stg_table/.grouptable now include table table-striped align-middle.
      • Inputs/Textareas now use form-control; select uses form-select.
    • Theme: Continues to use token-based CSS so Atum Dark/Light toggles automatically.

    v5.0.11 2025-10-19

    🎨 Theme & Styling

    • Bootstrap 5 Tokens: Switched to Joomla 5 / Bootstrap 5 tokens in media/com_stageit/css/admin.css (variables-only, theme-aware).
    • Scoped Styles: Removed body-class injection; StageIt styles are scoped to #stageit and derive from Atum tokens, so Dark/Light toggles automatically.
    • Dark Mode: Preserved requested dark background #171c24 for #stageit in dark mode only.
    • WebAsset Loading: Loaded CSS via WebAsset on admin option=com_stageit; manifests bumped to 5.0.11.

    v5.0.10 2025-10-19

    🐛 Bug Fixes

    • PHP Parse Error Fix: Rewrote the system plugin with a safe NOWDOC-based inline JS for adding the com_stageit body class (eliminates the PHP parse error around catch).
    • Theme Loading: Continues loading media/com_stageit/css/admin.css via WebAsset (onBeforeCompileHead).

    v5.0.9 2025-10-19

    🎨 Theme & Styling

    • Static CSS Asset: Move Dark/Light CSS to a static asset media/com_stageit/css/admin.css and load via WebAsset on admin StageIt pages.
    • Body Class Fix: Ensure <body> has the com_stageit class so selectors body.admin.com_stageit always match.
    • Manifest Update: Manifest now installs the media/com_stageit/css/admin.css file.

    v5.0.8 2025-10-19

    🎨 Dark Mode

    • Dark Background: Set #stageit background to #171c24 in dark mode (per request). Implemented as an inline CSS override so it takes precedence over earlier rules.

    v5.0.7 2025-10-19

    🐛 Bug Fixes

    • Fatal Error Fix: Removed the bool type from $autoloadLanguage in the system plugin to avoid inheritance conflict with CMSPlugin (which declares it untyped). This resolves the install-time fatal error.

    v5.0.6 2025-10-19

    🎨 Theme & Styling

    • Dark/Light Mode: Adopted the proven selectors & values; CSS is injected inline at onBeforeCompileHead so no media/ file is required.
    • Body Class: Ensures <body> has the com_stageit class on admin StageIt pages so body.admin.com_stageit selectors always match.
    • Schema Update: All manifests set to schema 4.0; version bumped to 5.0.6.

    v5.0.1 (historic)

    🐛 Bug Fixes

    • Parse Error Fix: Resolved parse error by converting the system plugin to a proper Joomla 5 class and defining getSubscribedEvents() inside the class.

    🔧 Improvements

    • Language Autoload: Enabled $autoloadLanguage = true and moved manifests to schema 4.0.

    v5.0.0

    Initial Joomla 5 Release

    🚀 New Features

    • Joomla 5 Native: Joomla 5 native baseline (no legacy plugin required).
    • Dark/Light Mode: Full Dark/Light mode compatibility in the admin (scoped to body.admin.com_stageit).
    • Backups View: Implemented dark-mode "odd row" styling while preserving header look.

    📦 Packaging

    • Initial Structure: Initial J5 manifests and structure; media assets under media/com_stageit with correct references.
  • StageIt 6 ChangeLog

    StageIt - Changelog

    All notable changes to StageIt will be documented in this file.

    v6.2.9 2026-03-05

    Logging, Diagnostics & System Check Fixes

    📦 New Features

    • Debug Logging: New toggleable debug log for detailed diagnostic output during staging removal — writes to a separate stageit-debug.log file, controlled via a new “Debug Logging” setting in the Deployment tab
    • Debug Log Viewer: Log Viewer page now has “Operations Log” and “Debug Log” tabs with clear, download, and view support for both log files
    • Operations Log Level: New setting to control operations log verbosity — “All Operations” (default), “Warnings and Errors Only”, or “Off”

    🐛 Bug Fixes

    • Operations Log Completion Spam: Fixed “StageIt completed without any warnings or errors” being logged on every AJAX chunk instead of once at the end — completion messages now only appear when operations actually finish
    • Log Filter False Positives: Fixed “Warnings and Errors Only” log level matching ERROR anywhere in log messages (e.g., filenames like error.php) instead of only matching message prefixes — now uses preg_match for prefix-only matching
    • Staging Removal Crash: Fixed count(): Argument #1 must be of type Countable|array, false given error when removing staging environment. vbDb::_showTables() can return false on failure, and count(false) is a fatal error in PHP 8. Added is_array() guard in both stgAjaxRemove and stgAjaxRemoveOptimized
    • System Check: File Permissions Always Failing: Fixed $prechecks['files'] threshold set to 99 instead of 1, causing the file permission check to always report an error regardless of actual permissions
    • System Check: AJAX Check Always Failing: The file permissions bug cascaded into the AJAX connectivity check, making it always return an error since _prechecks() returns the last error found
    • PHP Config Error Now Shows Missing Extensions: When PHP extensions are missing, the error popup now lists which specific extensions are missing (e.g., “Missing extensions: mbstring, zip”) instead of a generic message
    • Improved PHP Config Error Message: Updated error text to direct licensed users to contact support at [email protected] with the specific extension information
    • Fatal Parse Error in vbLog: Fixed missing closing brace in _error() method that caused unexpected token "private" fatal error on every page load

    v6.2.8 2026-02-28

    Optimized Staging Removal & Database Cloning Fixes

    📦 New Features

    • Optimized Staging Removal: New stgAjaxRemoveOptimized class uses native OS commands (rd/rm -rf) for 10-100x faster staging area removal, with automatic fallback to PHP methods
    • Configurable Optimization: Enable/disable optimized removal and native commands via component configuration, with configurable chunk size (10-200 files)
    • Enhanced Progress Tracking: Real-time progress with detailed file counts, performance monitoring (files/sec, ETA), and method detection (Native vs PHP) in UI

    🐛 Bug Fixes

    • Staging Removal Fallback Crash: Fixed Call to undefined method stgAjaxRemove::removeFiles() error when the optimized removal class falls back to the original class mid-operation — added removeFiles() and removeDirectories() fallback methods to stgAjaxRemove
    • Critical: Chunked Clone Position Tracking: Fixed infinite loop during database deployment caused by saving the starting position ($pos) instead of the current table index ($n) when a large table required multiple chunks
    • Checkpoint Poisoning: Clear checkpoint data when a chunked table clone fails, preventing stale offsets from being applied to unrelated tables
    • Missing Target Table Safety: Added safety check in _cloneTableChunked — if target table doesn't exist at a non-zero offset, reset and recreate from scratch
    • Deterministic Chunked Cloning: Added ORDER BY on primary key to chunked INSERT...SELECT queries, preventing duplicate key errors
    • Improved Error Logging: Database errors now log the actual MySQL error message for better diagnostics

    🐛 Version 6.2.7 (2026-02-05)

    Log Viewer Memory Fix

    🐛 Bug Fixes

    • Out-of-Memory Fix: Log viewer now reads only the last 2 MB of large log files instead of loading the entire file into memory
    • Truncation Warning: Displays a translated warning when the log is too large to show in full, with guidance to use the Download button

    🌐 Version 6.2.6 (2026-02-05)

    Comprehensive Multi-Lingual Support & Foreign Key Fix

    🌐 Multi-Lingual Support

    • Complete Component Internationalization: All template strings now use Text::_() for full translation support
    • Plugin Multi-Lingual: System plugin now fully translated with 48 language keys per language
    • Translated Installation Welcome: Post-installation message with "Go to Control Panel" link now displayed in user's language
    • 15 Languages Supported:
      • English (en-GB) - Base language
      • Dutch (nl-NL)
      • German (de-DE)
      • Spanish (es-ES)
      • French (fr-FR)
      • Italian (it-IT)
      • Portuguese Brazilian (pt-BR)
      • Russian (ru-RU)
      • Polish (pl-PL)
      • Japanese (ja-JP)
      • Chinese Simplified (zh-CN)
      • Turkish (tr-TR)
      • Greek (el-GR)
      • Czech (cs-CZ)
      • Swedish (sv-SE)
    • Language File Structure: Each language includes both main (.ini) and system (.sys.ini) translation files

    🐛 Bug Fixes

    • Foreign Key Constraint Error: Fixed "Cannot delete or update a parent row: a foreign key constraint fails" error when removing staging environment
    • Table Drop Order: Now disables foreign key checks before dropping staging tables, then re-enables afterward

    🔧 Technical Improvements

    • vbDb Key Check Methods: Made _disableKeyChecks() and _enableKeyChecks() public for use in staging removal
    • Enable Key Checks Bug: Fixed bug where enableKeyChecks() was setting foreign_key_checks = 0 instead of 1

    🧹 Version 6.2.5 (2026-02-03)

    CSS Cleanup & Duplicate Rule Removal

    🧹 CSS Consolidation

    • Duplicate Rule Removal: Removed duplicate #stageit, #stageit h1, and #stageit p, #stageit li rules that were overriding dark mode styling
    • Consolidated Typography: Single authoritative rules for h1, h4, li elements with proper CSS variable support
    • Removed "NEW CHANGES" Section: Cleaned up temporary CSS section that duplicated existing rules

    🔧 Styling Improvements

    • Font Inheritance: Updated typography to use font-family: inherit for consistency with Atum template
    • Rem Units: Scalable typography using rem units (1.5rem for h1, 1rem for h4, 0.875rem for li)
    • Color Variables: Ensured all text elements use var(--bs-body-color) and var(--bs-secondary-color) for dark mode

    📦 Cache Busting

    • Asset Version Updated: CSS/JS version parameter updated to 6.2.5 for browser cache refresh

    🎨 Version 6.2.4 (2026-02-03)

    Comprehensive Dark Mode Support

    🎨 Dark Mode Fixes

    • Main Container: Updated #stageit, #stg_main, #stg_header to use CSS variables for backgrounds
    • Sidebar Navigation: Updated submenu styling with CSS variables for dark mode compatibility
    • Tab Panels: jQuery UI tabs now use CSS variables for backgrounds and borders
    • Form Fields: All input, select, textarea elements use CSS variables for colors and borders
    • Environment Tab: Config page plugin settings now dark mode compatible
    • Process Steps: Action progress steps and progress bar updated for dark mode
    • Popups: Popup dialogs and overlay styling fixed for dark mode

    🔧 UI Improvements

    • Buttons: Updated button styling with proper border-radius and CSS variable colors
    • Progress Bar: Simplified progress bar styling using Bootstrap success color
    • Not Done Indicator: Added CSS-only circle indicator for pending steps (no image required)
    • Form Focus States: Modern focus ring using Bootstrap primary color

    📦 Removed Legacy Code

    • Removed obsolete IE6-9 gradient filters
    • Simplified form input styling by removing complex gradients
    • Cleaned up vendor prefixes for modern browser support

    🐛 Version 6.2.3 (2026-02-03)

    Data Tables Save Validation Fix

    🐛 Bug Fix

    • Table Exclusion Confirmation Required: Fixed missing save validation that allowed saving excluded tables without checking the confirmation checkbox
    • Alert on Save: Users now see an alert message if they try to save while tables are excluded but the confirmation box is unchecked
    • Auto-Navigate to Confirmation: On validation failure, automatically switches to Data Tables tab and scrolls to confirmation checkbox

    🎨 Version 6.2.2 (2026-02-03)

    Backups Page Dark Mode & UI Consistency

    🎨 Dark Mode Fixes

    • Backups Table Styling: Fixed unreadable white-on-white text in dark mode for backup tables
    • CSS Variables: Updated all table styling to use Bootstrap 5 CSS variables (--bs-body-bg, --bs-body-color, --bs-border-color, --bs-tertiary-bg)
    • Row Hover States: Added hover effect on table rows using --bs-secondary-bg
    • Both Themes Supported: Explicit light mode and dark mode selectors for Atum compatibility

    🔧 Icon System Update

    • Joomla Icon Fonts: Replaced missing image-based icons with Joomla's built-in icon fonts
    • Delete Icon: Now uses icon-trash class (red #dc3545)
    • Restore Icon: Now uses icon-refresh class (green #198754)
    • Dark Mode Compatible: Icon colors work in both light and dark themes

    🎨 Typography Modernization

    • CSS Variables for Colors: All text now uses var(--bs-body-color) for automatic dark/light mode support
    • Rem Units: Replaced hardcoded pixel fonts with scalable rem units (0.875rem for body text, 1.25rem for h2, 1.5rem for h1)
    • Font Inheritance: Typography now inherits from Atum template (font-family: inherit)

    📦 Cache Busting

    • Asset Versioning: Added version parameter to CSS and JS includes (?v=6.2.2)
    • Prevents Stale Cache: Browser fetches fresh assets after updates

    🔧 Version 6.2.1 (2026-02-02)

    Joomla 6 Table Groups & UI Update

    🔧 Improvements

    • Updated Core Table Groups: Modernized the hardcoded Joomla core table list for Joomla 5/6 compatibility
    • New Table Groups Added: Added 5 new groups for Joomla 5/6 features:
      • Joomla Workflows (workflows, workflow_associations, workflow_stages, workflow_transitions)
      • Joomla Custom Fields (fields, fields_categories, fields_groups, fields_values)
      • Joomla Privacy and Logging (action_logs, action_log_config, privacy_consents, privacy_requests)
      • Joomla Scheduler (scheduler_tasks)
      • Joomla Guided Tours (guidedtours, guidedtour_steps)
    • Removed Obsolete Tables: Removed references to tables no longer in Joomla 5/6 (weblinks, core_log_searches, sections, legacy banner names)
    • Smart Search Update: Updated finder table references to match Joomla 5/6 schema (single finder_links_terms instead of 0-f split)
    • New Core Tables: Added mail_templates, tuf_metadata, user_mfa, webauthn_credentials, template_overrides, history, schemaorg

    🎨 UI Enhancements

    • Table Exclusion UI Redesign: Improved Data Tables tab with native checkboxes and Atum dark/light mode compatibility
    • Group Selection Badges: Visual indicators showing count of selected tables in collapsed groups (e.g., “3 selected”)
    • Clear All Button: Quick reset button to uncheck all table exclusions
    • Exclusion Confirmation: Confirmation checkbox with support disclaimer when excluding tables
    • Consistent Styling: Fixed row heights and minimum widths for uniform appearance

    🔍 Version 6.2.0 (2026-01-01)

    Log Viewer & Large Table Support Release

    🔍 Log Viewer

    • Dedicated Log View: New admin view at View Log menu item to view, download, and clear the StageIt log file
    • Dark-Themed Display: Log content displayed in a styled monospace code block with dark background
    • Log Management: Clear log and download log buttons for easy log file management
    • Log File Info: Shows log file path, size, and last modified date
    • Centralized Log Location: Moved log file to /administrator/logs/stageit-log.txt for better organization

    📊 Detailed Operation Logging

    • Sync Operations: Full logging of sync process including folder mapping, file backups, and database syncing
    • File-Level Visibility: Each file backup and sync operation is now logged individually
    • Table Sync Logging: Database table sync operations logged with row counts and progress
    • Skipped Items: Logs when tables are skipped (unchanged) or when structure-only sync is performed

    🔄 Large Table Chunked Cloning

    • Chunked Database Operations: Large tables (10,000+ rows) are now cloned in configurable chunks to prevent timeouts
    • Configurable Thresholds: CHUNK_THRESHOLD (default 10,000 rows) and CHUNK_SIZE (default 5,000 rows) constants
    • Progress Tracking: Chunked operations report progress percentage during sync
    • Table Info Methods: New _getTableRowCount() and _getTableInfo() methods for table size detection

    💾 Checkpoint System for Resume Capability

    • Operation Checkpoints: Long-running operations save checkpoints to allow resume after timeout or crash
    • Automatic Resume: If a sync operation was interrupted, it automatically resumes from the last checkpoint
    • 1-Hour Expiry: Checkpoints expire after 1 hour to prevent stale resume attempts
    • Checkpoint Logging: All checkpoint save/load operations are logged for transparency

    🛠️ Technical Improvements

    • Controller Actions: New clearLog() and downloadLog() controller methods
    • View Registration: Log view properly registered in controller display switch
    • Menu Integration: "VIEW LOG" added to admin submenu

    🚀 Version 6.1.0 (2025-11-19)

    🔧 StageIt-5 Merge & Staging DB Helpers

    🚀 New & Improved

    • Staging Database Helpers: Added controller endpoints to test DB connections and create staging DB/users with clear fallback guidance.
    • Plugin Settings Persistence: Component now saves plugin params directly and clears plugin/system caches so banner settings take effect immediately.
    • Error Logging Reliability: Extended vbJson to write full stack traces to multiple log locations (prefers administrator/logs/com_stageit.log.php with fallbacks).
    • Component UI for Plugin Settings: Environment tab renders plugin banner options (backend/frontend visibility, colors, gradients, reappear toggle) with live user group lists and modern styling.
    • AJAX Error UX: StageIt JS now surfaces errors via Joomla messages, truncates oversized responses, and logs full details to console for debugging.
    • Parity with StageIt 5.3.3: Ported the 5.3.3 frontend banner & visibility release (frontend banner toggle, backend/frontend user group controls, immediate param loading, build/encoding fixes).

    🔧 Packaging & Compatibility

    • Joomla 6 Packaging: Build scripts and manifests aligned to Joomla 6 naming/output; package, component, and plugin versions bumped to 6.1.0.
    • Manifest Updates: Plugin manifest on Joomla 6 schema with updated version and description.

    🎨 Version 6.0.3 (2025-11-19)

    🎨 Frontend Banner & Visibility Controls Release

    🚀 New Features

    • Frontend Banner Support: Added option to display the StageIt banner on the frontend site
    • User Group Visibility Controls: Select specific user groups that can see the banner (backend and frontend separately)
    • Joomla 6 User Group Selection: Uses native usergrouplist field type for multi-select user group checkboxes

    🔧 Component Integration

    • Environment Tab Updates: Added frontend banner toggle and user group visibility settings to component configuration
    • Unified Settings: Plugin settings now fully manageable from StageIt component's Environment tab
    • Immediate Effect: Settings saved from component now take effect immediately without requiring plugin page visit

    📦 Build System Fixes

    • Package Structure Fix: Fixed build script to create proper admin/ folder structure in component ZIP
    • Build Script Modernization: Batch file now calls PowerShell script for reliable package creation
    • XML Encoding Fix: Resolved character encoding issues in plugin manifest

    🐛 Bug Fixes

    • Fresh Parameter Loading: Plugin now reads parameters directly from database to ensure latest settings are used
    • Form Compatibility: Fixed parameter loading to preserve Joomla's form system compatibility
    • Dark Mode Styling: User group checkboxes now properly styled for dark mode using CSS variables

    🛠️ Version 6.0.2 (2025-11-18)

    Banner Scroll Behavior Enhancement Release

    🎨 Banner UX Improvements

    • Non-Sticky Top Banner: Banner now scrolls naturally with page content instead of staying fixed at top
    • Dual Banner System: Top banner scrolls away, bottom banner appears when top is out of view
    • IntersectionObserver: Uses modern browser API for efficient scroll detection
    • Smooth Transitions: Clean appearance/disappearance of bottom banner
    • Respects Settings: "Banner Reappears at Bottom" setting now properly controls whether bottom banner appears

    🔧 Technical Changes

    • CSS Restructure: Changed from single fixed banner to dual banner approach (top relative, bottom fixed)
    • Inline JavaScript: Banner scroll behavior now embedded in plugin for frontend compatibility
    • Body Padding: Removed top padding, added bottom padding only when bottom banner visible
    • Updated Selectors: All CSS selectors updated for new dual banner IDs

    🛡️ Version 6.0.1 (2025-11-12)

    Installation Safety & Update Server Cleanup Release

    🛡️ Version Compatibility Enforcement

    • Joomla Version Checking: Added preflight() installer method to prevent installation on incompatible Joomla versions
    • Strict Version Requirements: StageIt 6 now enforces Joomla 6.0.0 - 6.999.999 only (blocks J3, J4, and J5)
    • Clear Error Messages: Users attempting to install on wrong Joomla version get helpful guidance:
      • Joomla 3.x users directed to StageIt 3
      • Joomla 4.x users directed to StageIt 4
      • Joomla 5.x users directed to StageIt 5
    • Installation Prevention: Returns false from preflight to completely block incompatible installations

    🧹 Update Server Cleanup

    • Single Update Site Policy: Removed <updateservers> section from component manifest (only package declares update server)
    • Automatic Cleanup: Installer now removes legacy component-level update sites from older StageIt versions
    • Orphaned Site Removal: Smart cleanup removes update sites that are no longer linked to any extension
    • Duplicate Prevention: Prevents Joomla from creating multiple update site entries for the same extension
    • Legacy URL Cleanup: Continues to remove old stageitpro update URLs from previous versions

    📝 Developer Documentation

    • Update Server Reminders: Added XML comments to component and plugin manifests reminding developers that only pkg_stageit.xml should declare update servers
    • Version Enforcement Documentation: Added comments clarifying that preflight checks enforce Joomla version requirements

    🔧 Technical Improvements

    • Database Integrity: Enhanced update site cleanup checks reference counts before deleting to avoid breaking other extensions
    • Error Handling: All database operations wrapped in try-catch blocks for graceful failure handling
    • Component Detection: Improved logic to find and clean up component-specific update site mappings

    🚀 Version 6.0.0 (2025-11-11)

    Joomla 6 Compatibility Release

    🚀 Joomla 6 Native Support

    • Updated Manifests: All XML manifests updated to Joomla 6.0 specification
    • PHP 8.3.0+ Requirement: Minimum PHP version updated to 8.3.0 for Joomla 6 compatibility
    • Version Alignment: Extension version updated to 6.0.0 to align with Joomla 6
    • Update Server: Modified update server URLs to support Joomla 6 releases
    • Build Scripts: Updated build and packaging scripts for Joomla 6 deployment

    📦 Native Library Migration & Code Modernization

    • REMOVED PCLZip: Replaced deprecated PCLZip 2.8.2 with Joomla's native Joomla\Archive\Archive class
    • PHP 8.3 Compatibility: Eliminated all deprecated PHP functions and legacy code
    • Modern Archive Handling: Now uses Joomla's native archive system for zip operations
    • Enhanced Error Handling: Archive errors now use Joomla's native message system
    • Streamlined Codebase: Removed legacy code dependencies

    🎨 System Plugin Banner Enhancements

    • Simplified Banner Control: Streamlined to simple Yes/No toggle (removed confusing Auto-Detect option)
    • Toggle Switch UI: Replaced × close button with elegant toggle switch for hiding banner
    • One-Click Hide: Added toggle switch with hover tooltip ("Click to turn off banner")
    • Auto-Enable on Install: Plugin now automatically enabled during package installation
    • Fixed URL Detection: Corrected staging detection logic to properly identify /stageit/ URLs
    • Live/Staging Detection: Banner correctly shows "LIVE SITE" or "STAGING SITE" based on URL path

    ✨ User Interface Improvements

    • Action Button Icons: Added meaningful emoji icons to all action buttons:
      • Begin (launching new staging environment)
      • Rebuild Staging (refresh/rebuild)
      • Remove Staging (deletion)
      • Sync with Live (fast synchronization)
      • Log in (access buttons)
    • Improved Button Sizing: Widened "Sync with Live" button to 300px to prevent text wrapping
    • Visual Clarity: Icons provide instant recognition of button actions

    🔧 Technical Improvements

    • Extension Schema: Updated extension version attributes from 5.0 to 6.0
    • Target Platform: Updated target platform from "joomla 5.*" to "joomla 6.*"
    • Package Names: Build output generates packages with "Joomla_6_v6.0.0" naming convention
    • Installation Script: Enhanced postflight script to auto-enable plugin and cleanup old files

    🔧 Version 5.2.0 (2025-10-25)

    Ultra-Simple Plugin Architecture & Complete Installation Fixes Release

    🚀 Major Plugin Redesign

    • Ultra-Simple Architecture: Completely rewrote plugin from 245 lines to 139 lines with modular structure
    • Smart Staging Detection: Intelligent detection with conditional switch button only when staging directory exists
    • Clean Fallback Display: Shows simple "LIVE SITE" text when no staging available (no unnecessary buttons)
    • Enhanced Button Logic: "Switch to Live" always available on staging, "Switch to Staging" only when staging exists

    🎨 Full Style Settings Integration

    • Complete Color Support: All plugin style settings now functional (gradient/solid, text colors, button colors)
    • Animated Gradients: Restored gradient animations with customizable duration from plugin settings
    • Visibility Controls: Proper permission checking (All users/Managers/Super Users) working correctly
    • Forced Mode Support: Manual staging/live override option fully integrated

    🎨 Button Styling Enhancements

    • StageIt Button Targeting: Fixed button readability with proper #0b5ed7 color for StageIt-specific buttons only
    • Hover States: Added consistent #59a645 hover color for both light and dark modes on StageIt buttons
    • Sync Button Fix: Ensured "Sync with Live" button is fully visible and readable in all themes
    • Scoped CSS: Applied styling only to StageIt component buttons, preserving Joomla core UI elements

    🐛 Complete Installation Error Resolution

    • "File does not exist com_stageit": Added missing entry point file to site files section
    • "Source folder not found": Removed obsolete media folder references from component manifest
    • Entry Point Declaration: Properly declared com_stageit file in manifest <files> section
    • Clean Package Structure: Eliminated all manifest inconsistencies and validation warnings
    • Zero Installation Errors: Achieved completely clean installation process for professional deployment

    🔧 CSS Architecture Modernization

    • Proper Joomla 5 Structure: Moved CSS from deprecated media/ folder to component resources/css/
    • Legacy File Cleanup: Removed duplicate and obsolete CSS files from old media structure
    • Build Script Enhancement: Updated package builder to handle proper file structure and cleanup
    • Installation Script: Enhanced with cleanupOldFiles() method for seamless upgrades from older versions

    📦 Package Quality Improvements

    • XML Validation: Added automatic XML validation to build process to prevent installation errors
    • Clean Plugin Packaging: Fixed plugin ZIP creation to include only essential files (no backup/dev files)
    • Standalone Testing: Created standalone plugin packages for independent testing before full integration
    • Professional Structure: Maintained all existing functionality while dramatically simplifying codebase

    🔧 Development Tools Enhanced

    • Build Script Validation: Enhanced build process with XML syntax checking and file filtering
    • Testing Workflow: Improved development workflow with standalone plugin testing capability
    • Error Prevention: Proactive validation prevents "Can't find Joomla XML setup file" errors
    • Comprehensive Documentation: Updated JOOMLA5-CHECKLIST.md with all lessons learned from real-world deployment

    📦 Version 5.1.4 (2025-10-25)

    Joomla 5 Modernization & Installation Fixes Release

    📦 Installation & Packaging Fixes

    • Package Structure: Fixed component manifest naming (stageit.xmlcom_stageit.xml) and proper folder hierarchy
    • ZIP Compatibility: Implemented forward slash paths in ZIP files to prevent installation errors
    • Schema Updates: Updated manifests from version 3.0 to 5.0 for full Joomla 5 compatibility
    • Media Path Fix: Corrected media folder references in component manifest (mediaadmin/media)
    • Component Entry Point: Added required com_stageit.php site file for proper component structure
    • jQuery UI Repair: Replaced corrupted jQuery UI library with clean version from CDN
    • Warning-Free Installation: Eliminated all installation warnings for professional client deployment

    🛡️ System Dashboard Compatibility

    • Smart Page Filtering: Plugin now uses whitelist approach to prevent interference with system pages
    • Dashboard Protection: Completely excludes system dashboard, check-in, and configuration pages from banner injection
    • AJAX Safety: Blocks all AJAX/API requests to prevent system check interference
    • Global Check-in Fix: Resolved issues with Joomla's global check-in functionality

    🔧 Modern System Requirements

    • PHP 8.1+ Support: Updated minimum PHP requirement from 5.3.10 to 8.1.0 (Joomla 5 standard)
    • Memory Optimization: Increased memory requirement from 128MB to 256MB for modern operations
    • Timeout Updates: Extended execution timeout from 30s to 60s for reliable deployments
    • Extension Validation: Replaced obsolete safe_mode checks with essential PHP extension validation
    • Memory Detection: Improved memory limit detection including unlimited memory support

    🔧 Development Tools

    • Pre-build Validation: Added comprehensive package validation script (validate-package.ps1)
    • Component Templates: Created Joomla 5 component template generator (create-template.ps1)
    • Best Practices Guide: Added comprehensive development checklist (JOOMLA5-CHECKLIST.md)
    • Build Integration: Enhanced build script with automatic validation and forward-slash ZIP creation

    🚀 Joomla 5 Compatibility Enhancements

    • Database Layer: Fixed deprecated Quote()quote() and query()execute() methods for full J5 compatibility
    • View Classes: Removed legacy jimport statements and JViewLegacy compatibility layers
    • Class Naming: Updated to PSR standards (StageItViewdefaultStageItViewDefault)
    • Asset Management: Implemented modern Web Asset Manager for improved performance
    • Error Handling: Added structured exception handling and modern Joomla logging system
    • Log Path Fix: Corrected staging log path to use stageit/administrator/logs instead of administrator/stageit/logs

    🔍 Code Quality Improvements

    • Modern PHP: Updated error handling with proper Exception classes
    • Logging System: Replaced custom vbLog with native Joomla\CMS\Log\Log
    • Input Handling: Modernized using Factory::getApplication()->input
    • Copyright: Updated copyright notices to 2025

    🎨 CSS Optimization

    • File Size Reduction: Removed ~293 lines of unused CSS (20% reduction)
    • Legacy Cleanup: Removed obsolete Joomla 2.5/3 styles and unused components
    • Performance: Eliminated unused search, pagination, gallery, and Sales Pro CSS
    • Maintainability: Cleaner stylesheet with only essential styles retained

    🔧 Developer Experience

    • Future-Ready: Fully compatible with Joomla 5.x architecture
    • Standards Compliant: Follows modern Joomla coding standards
    • Error Recovery: Enhanced debugging and error reporting capabilities

    🐛 Version 5.1.3 (2025-10-24)

    • Admin URL rule corrected: STAGING at /stageit/administrator, LIVE at /administrator.
    • Fixed System Dashboard red-X issue by guarding for HTML-only responses in onBeforeCompileHead/onAfterRender.
    • Removed unsafe injection fallback for non-HTML (no-<body>) responses.
    • Switch button targets updated: staging → /administrator/, live → /stageit/administrator/.
    • XML Standardization: Unified all XML manifests with consistent version numbering, creation dates, and copyright notices
    • Initial Git Repository: Established version control with GitHub integration for professional development workflow
    • No changes to styles/colors/labels; behavior preserved otherwise.

    🔧 Version 5.1.2 (2025-10-23)

    • Update Sites hardening: Only the package declares the update server (URL: https://www.php-web-design.com/updates/check.php?ext=stageit6). Component/plugin manifests no longer register update sites.
    • Self-healing installer: Package postflight collapses duplicate update-site rows, removes legacy stageitpro, and ensures only the package is mapped to the update site.
    • Cosmetic: Update server named "StageIt Update Server", enabled by default.

    🔧 Version 5.1.1 (2025-10-22)

    • Update Sites cleanup: Package now installs with a single update server (package-level) and removes stageitpro legacy endpoint. Component/plugin manifests no longer register update sites. Postflight script de-duplicates mappings so only the package is linked to ext=stageit6.

    🚀 Version 5.1.0 (2025-10-22)

    Consolidated release since 5.0.2. Highlights:

    🔧 System Plugin

    • Joomla 5 / PHP 8–safe rewrite using a proper CMSPlugin class and SubscriberInterface.
    • Safe string concatenation; removed typed property conflicts.
    • Strict /stageit detection by root name or URL path; logs detection reason to /administrator/logs/stageit.log.php (root-name-stageit, url-path-stageit, default-live).
    • Automatic Live ↔ Staging switch buttons with safety checks.

    🎨 Style & Theming

    • New Style tab with:
      • Style Mode (default gradient).
      • Gradient Cycle default 5s (min 5, max 120).
      • Live (solid) #59a645; Live gradient #59a645 → #356732; Live text #ffffff.
      • Staging (solid) #f79034; Staging gradient #f79034 → #c05627; Staging text #ffffff.
      • Button Link Color (default #ffffff) applied to "Go to Live / Staging" links.
    • Dark-mode hardened for Atum/Bootstrap tokens, with fallbacks to handle caching/overrides.

    🎨 Admin UI

    • Converted legacy .button markup to Bootstrap .btn variants; tables use .table.table-striped.align-middle.
    • Removed prior admin helpers (seconds suffix, input-width caps, preview swatch).

    📦 Packaging & Installer

    • Installer uses inner plugin package and now reflects the correct defaults and runtime logic on fresh installs.
    • Unified manifests (schema 4.0) and metadata; consolidated changelog.

    🐛 Reliability

    • Fixes for parse errors (method placement, $autoloadLanguage), CSS cache-busting (?v= on stylesheet), and consistent asset loading.

    🎨 Version 5.0.12 (2025-10-19)

    • Phase B (markup): Replaced custom classes with Bootstrap counterparts in admin templates.
      • .buttonbtn variants (remove → btn-outline-danger; login/rebuild → btn-primary; otherwise → btn-secondary).
      • Tables with .stg_table/.grouptable now include table table-striped align-middle.
      • Inputs/Textareas now use form-control; select uses form-select.
    • Theme: Continues to use token-based CSS so Atum Dark/Light toggles automatically.

    🎨 Version 5.0.11 (2025-10-19)

    • Theme: Switched to Joomla 5 / Bootstrap 5 tokens in media/com_stageit/css/admin.css (variables-only, theme-aware).
    • Behavior: Removed body-class injection; StageIt styles are scoped to #stageit and derive from Atum tokens, so Dark/Light toggles automatically.
    • Customization: Preserved requested dark background #171c24 for #stageit in dark mode only.
    • Packaging: Loaded CSS via WebAsset on admin option=com_stageit; manifests bumped to 5.0.11.

    🐛 Version 5.0.10 (2025-10-19)

    • Fix: Rewrote the system plugin with a safe NOWDOC-based inline JS for adding the com_stageit body class (eliminates the PHP parse error around catch).
    • Theme: Continues loading media/com_stageit/css/admin.css via WebAsset (onBeforeCompileHead).

    🎨 Version 5.0.9 (2025-10-19)

    • Theme: Move Dark/Light CSS to a static asset media/com_stageit/css/admin.css and load via WebAsset on admin StageIt pages.
    • Reliability: Ensure <body> has the com_stageit class so selectors body.admin.com_stageit always match.
    • Packaging: Manifest now installs the media/com_stageit/css/admin.css file.

    🎨 Version 5.0.8 (2025-10-19)

    • Dark Mode: Set #stageit background to #171c24 in dark mode (per request). Implemented as an inline CSS override so it takes precedence over earlier rules.

    🐛 Version 5.0.7 (2025-10-19)

    • Fix: Removed the bool type from $autoloadLanguage in the system plugin to avoid inheritance conflict with CMSPlugin (which declares it untyped). This resolves the install-time fatal error.

    🎨 Version 5.0.6 (2025-10-19)

    • Dark/Light Mode: Adopted the proven selectors & values; CSS is injected inline at onBeforeCompileHead so no media/ file is required.
    • Reliability: Ensures <body> has the com_stageit class on admin StageIt pages so body.admin.com_stageit selectors always match.
    • Packaging: All manifests set to schema 4.0; version bumped to 5.0.6.

    🐛 Version 5.0.1 (historic)

    • Fix: Resolved parse error by converting the system plugin to a proper Joomla 5 class and defining getSubscribedEvents() inside the class.
    • Improve: Enabled $autoloadLanguage = true and moved manifests to schema 4.0.

    🚀 Version 5.0.0

    • Joomla 5 native baseline (no legacy plugin required).
    • Theme: Full Dark/Light mode compatibility in the admin (scoped to body.admin.com_stageit).
    • Backups View: Implemented dark-mode "odd row" styling while preserving header look.
    • Packaging: Initial J5 manifests and structure; media assets under media/com_stageit with correct references.