StageIt - Changelog
All notable changes to StageIt will be documented in this file.
v5.7.4 2026-07-24
WAF-Safe AJAX & Force Refresh Defaults
Bug Fixes
- HTTP 406 / 403 on Remove or Rebuild behind keyword-scanning WAFs: Fixed a long-standing bug where the Remove Staging and Rebuild operations could die partway through with an HTTP 406 (or 403) on hosts running body-scanning Web Application Firewalls. StageIt’s AJAX operations posted their payload (
jdata) as plaintext JSON containing staging file paths and table lists; when the file-walker reachedcomponents/com_contenthistory/…, the request body momentarily contained strings that generic SQL-injection signatures matched on. Confirmed on LiquidWeb/cPanel hosts with ModSecurity rule 5001226 (a chained rule that fires only when the body contains bothcom_contenthistoryand(select.+from|list.select)) — pure false positive on legitimate admin traffic. The AJAX body is now base64-encoded before being posted, so it is opaque to every keyword-scanning rule on every host. No server-side change required. Server still accepts legacy plaintextjdatafor backwards compatibility. Verified in production: Joomla 5.4.7 install that previously 406'd every removal walked all 15,656 files (includingcomponents/com_contenthistory/) and dropped 148stg_*tables with zero 406s and no server-config change.
Changes
- Force Refresh now defaults to Yes — previously defaulted to No. Force Refresh must be Yes whenever anything major changed between the staged copy and live (major Joomla version jump, template version change, third-party extensions upgraded across major versions); leaving it at No in those cases silently broke the live site after a push. Yes is safe in all cases — just slightly slower for same-version syncs. The setting description under Configuration → Environment has also been rewritten with a clear rule-of-thumb (major-version jumps → Yes; same-version syncs → optional). Thanks to Robin Clapp of Advantage Glass Co. for the report that led to this change.
v5.7.3 2026-07-01
Configuration Save Reliability & Removal 413 Fixes
Bug Fixes
- Configuration Settings Silently Reverting After Save: Fixed a long-standing bug where saved configuration — including the excluded-tables selection on the Data Tables tab — could revert to defaults on the next pageload on certain hosting environments. Two underlying causes addressed: (1) the params file write used an
fopen('a+')+fread+ftruncatesequence whose behaviour depends on where the read pointer starts in'a+'mode, varying by platform; on the wrong platform the file was truncated to zero and rewritten without the<?phpheader, causing the next pageload to treat the file as raw text and silently reset all settings to defaults. Replaced with an atomicfile_put_contents()write. (2) OPcache invalidation usedforce=false, which is a no-op on hosts runningopcache.validate_timestamps=0; PHP would keep serving the pre-save bytecode and the freshly written params were invisible. Now forces invalidation in both save and load paths. - HTTP 413 “Request Entity Too Large” on Staging Removal: Fixed a bug where removing the staging environment could fail with HTTP 413 on real Joomla sites. The optimized removal path enumerated every file and directory upfront, then serialised both lists into the AJAX response and required the browser to POST them back on every subsequent chunk. On sites with tens of thousands of files (typical once media, cache, and third-party extensions accumulate), the payload grew to several MB per request, tripping Apache’s
LimitRequestBody, nginx’sclient_max_body_size, or mod_security rules. File/directory lists are now stored server-side in StageIt’s existing checkpoint mechanism, and only lightweight progress state (position/total) round-trips through the client.
v5.7.2 2026-04-30
Table Exclusion Fix for Non-Standard Database Prefixes
Bug Fixes
- Excluded Tables Synced When Database Prefix Has Internal Underscores: Fixed a long-standing bug where database tables marked for exclusion in StageIt configuration were still being data-synced on sites whose Joomla database prefix contained an internal underscore (e.g.
web_jos_,my_app_,acme_data_). The old code stripped exactly two underscore-segments from each table name when computing the bare name to compare against the exclusion list, which silently produced wrong values likeapp_contentinstead ofcontent, causing thein_arraymatch to fail and the table’s data to be cloned to live. Replaced segment-based stripping with known-prefix-string stripping in both deploy and sync paths. Standardjos_/single-segment prefixes were not affected by the original bug.
v5.7.1 2026-04-30
Akeeba Dialog Wording Fix
Bug Fixes
- Akeeba Pre-flight Dialog Wording: Corrected the dialog text that previously claimed “Akeeba Admin Tools is installed” even on sites where only Akeeba Backup is installed. The protective
.htaccesson the installer folder ships with Akeeba Backup itself; Admin Tools (when present) only reinforces it. Dialog now reads accurately whether Admin Tools is installed or not.
v5.7.0 2026-04-17
Edge-Case Pre-Flight Framework, Smart Log Path & Audit Log
New Features
- Pre-flight Dialog Framework: When StageIt detects a hosting/extension condition that normally breaks staging copies, a single pre-flight dialog now appears before deploy with one section per detected issue. Each section has its own “fix it” checkbox plus a “remember my choice on this site” checkbox; preferences are stored per site under Configuration → Advanced / Edge Case Settings. Any subset of sections (or all three) can apply on a given site.
- Akeeba Installers Bypass: When Akeeba Admin Tools hardening blocks the three
.jpainstaller files, StageIt can temporarily rename the protective.htaccess, copy the files to staging, then restore the protection — typically only a few seconds of unprotected exposure. Includes a self-heal safety net that auto-restores the.htaccesson the next run if interrupted. - Htaccess RewriteBase Adjustment: When the live
.htaccesshas an uncommentedRewriteBasedirective (needed on many shared hosts for SEF URLs), StageIt can rewrite the staging copy’sRewriteBaseto point at the staging subfolder. Works with any base value — e.g./becomes/stageit/, and/myapp/becomes/myapp/stageit/. Live is never modified. - Joomlatools Folder Copy: When the Joomlatools Files/Fileman/DOCman
files_containerstable references a top-level folder not in StageIt’s default copy list (typicallyjoomlatools-files/), StageIt can recursively copy that folder to staging so Fileman attachments work there. Without this, viewing an article with an attachment on staging throws anUnexpectedValueException: Invalid foldererror. - Audit Log (
stageit-audit.log.php): New third log type. Always writes security-relevant events (pre-flight bypass activations, restores, self-heal, path rewrites) regardless of operations log setting. Accessible via a new Audit Log tab in the Log Viewer with Clear/Download buttons. HTTP-protected via a PHP die() header; readable only through the StageIt admin UI. - Smart Log Path Resolution: StageIt now respects Joomla’s configured
log_pathand falls back gracefully toadministrator/logs/when needed. Warns the user on the dashboard when the configured path is non-standard so it’s clear which directory is in use. - Filemtime-Based Asset Versioning: CSS/JS URL cache-busting now uses
filemtime()of the actual files, so CDN/browser caches auto-invalidate whenever StageIt pushes out a file change — no more cached-JS gotchas after updates. - Config Page Reorganised: Configuration → Deployment now has two clearly marked sections: “Common Settings” (Deployment Speed, Chunk Size, Log Level, Debug Logging) and “Advanced / Edge Case Settings” (all three edge-case dropdowns) separated by an orange divider.
Bug Fixes
- vbLog Crash on Missing Log Directory: Fixed
fwrite(): Argument #1 must be of type resource, false givenfatal error that occurred when the configured log directory could not be opened. Logging now silently disables itself rather than crashing the deploy.
v5.6.6 2026-03-27
Plugin Language Fix for Extensions Manager
Bug Fixes
- Plugin Name/Description Not Translated: Fixed plugin showing raw language keys (
PLG_SYSTEM_STAGEITandPLG_SYSTEM_STAGEIT_DESCRIPTION) in Joomla’s Extensions Manager instead of translated text. Added missing.sys.inilanguage files and<languages>declaration to the plugin manifest. Thanks to Tom E. for reporting this bug — enjoy your one-week StageIt membership extension!
v5.6.5 2026-03-21
Composer Autoloader Fix
Bug Fixes
- Composer Autoloader Mismatch on Rebuild: Fixed staging rebuild leaving stale Composer autoloader files (
autoload.php,autoload_real.php) with mismatched hashes, causing 500 errors. File copy now compares both size and modification time instead of size alone, ensuring updated files are always re-copied even when their size hasn’t changed
v5.6.4 2026-03-11
Removal Method Messaging, Translations & Config Path Fix
New Features
- Removal Method Messaging: Staging removal now displays which method is being used (Fast Native or Standard PHP) and explains why, shown both during the operation and upon completion
- Translated Removal Messages: All 8 removal method strings fully translated into all 15 supported languages
Bug Fixes
- Configuration Path Doubling: Fixed
log_pathandtmp_pathbeing doubled in stagingconfiguration.phpduring deploy and sync operations — paths likestaging/administrator/logs/staging/administrator/logsare now correctly resolved usingJPATH_ROOT
Changes
- Default Log Level: New installations now default to “Warnings and Errors Only” instead of “All Operations” for the operations log level
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.logfile, 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
ERRORanywhere in log messages (e.g., filenames likeerror.php) instead of only matching message prefixes — now usespreg_matchfor prefix-only matching - Staging Removal Crash: Fixed
count(): Argument #1 must be of type Countable|array, false givenerror when removing staging environment.vbDb::_showTables()can returnfalseon failure, andcount(false)is a fatal error in PHP 8. Addedis_array()guard in bothstgAjaxRemoveandstgAjaxRemoveOptimized - 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
stgAjaxRemoveOptimizedclass 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 — addedremoveFiles()andremoveDirectories()fallback methods tostgAjaxRemove - 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 settingforeign_key_checks = 0instead of= 1 - Deterministic Chunked Cloning: Added
ORDER BYon primary key to chunkedINSERT...SELECTqueries, 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 stringscomponent/language/nl-NL/nl-NL.com_stageit.ini- Full Dutch translationcomponent/language/nl-NL/nl-NL.com_stageit.sys.ini- Dutch system filelanguage/nl-NL/nl-NL.plg_system_stageit.ini- Dutch plugin stringslanguage/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 Logmenu 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.txtfor 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) andCHUNK_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()anddownloadLog()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
usergrouplistfield 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 < 1check 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.batscript 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_stageitfile 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 componentresources/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.xml→com_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 (
media→admin/media) - Component Entry Point: Added required
com_stageit.phpsite 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()andquery()→execute()methods for full J5 compatibility - View Classes: Removed legacy
jimportstatements andJViewLegacycompatibility layers - Class Naming: Updated to PSR standards (
StageItViewdefault→StageItViewDefault) - 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/logsinstead ofadministrator/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
postflightcollapses duplicate update-site rows, removes legacystageitpro, 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
stageitprolegacy endpoint. Component/plugin manifests no longer register update sites. Postflight script de-duplicates mappings so only the package is linked toext=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
CMSPluginclass andSubscriberInterface. - Safe string concatenation; removed typed property conflicts.
- Strict
/stageitdetection 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
.buttonmarkup to Bootstrap.btnvariants; 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.
.button→btnvariants (remove →btn-outline-danger; login/rebuild →btn-primary; otherwise →btn-secondary).- Tables with
.stg_table/.grouptablenow includetable table-striped align-middle. - Inputs/Textareas now use
form-control;selectusesform-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
#stageitand derive from Atum tokens, so Dark/Light toggles automatically. - Dark Mode: Preserved requested dark background
#171c24for#stageitin 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_stageitbody class (eliminates the PHP parse error aroundcatch). - Theme Loading: Continues loading
media/com_stageit/css/admin.cssvia 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.cssand load via WebAsset on admin StageIt pages. - Body Class Fix: Ensure
<body>has thecom_stageitclass so selectorsbody.admin.com_stageitalways match. - Manifest Update: Manifest now installs the
media/com_stageit/css/admin.cssfile.
v5.0.8 2025-10-19
Dark Mode
- Dark Background: Set
#stageitbackground to#171c24in 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
booltype from$autoloadLanguagein the system plugin to avoid inheritance conflict withCMSPlugin(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
onBeforeCompileHeadso nomedia/file is required. - Body Class: Ensures
<body>has thecom_stageitclass on admin StageIt pages sobody.admin.com_stageitselectors always match. - Schema Update: All manifests set to schema
4.0; version bumped to5.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 = trueand moved manifests to schema4.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_stageitwith correct references.

Add comment