All notable changes to StageIt will be documented in this file.
v6.6.1 2026-10-31
Bug Fixes
- Building a Stage Stopped at About 91% With "Duplicate entry … for key 'PRIMARY'": StageIt copied the live site's session table and Smart Search index tables with all their rows, although it is meant to copy only their structure. On a busy site the session table can have tens of thousands of rows, so it was copied in batches, and visitors who arrived between batches made a later batch copy a row a second time, which stopped the build. These tables are now created empty on the staging site, as intended (#26).
- Large Tables Could Lose Rows if They Changed During a Build or Push: Large tables are copied in batches. If rows were deleted from a table while it was being copied, the next batch skipped the same number of rows, and the staging (or live) table was left with rows missing and no warning; if rows were added, the build or push could stop with a "Duplicate entry" error. Each batch now continues from the last row copied, so a table that changes during the copy no longer loses rows or stops the run (#26).
v6.6.0 2026-10-30
Bug Fixes
- Settings Could Reset Themselves: If any StageIt setting contained a backslash (for example a folder name on a Windows server), the settings file could no longer be read and every setting, including excluded tables and folders, went back to its default. Settings are now saved so they always read back exactly, and files written by older versions are repaired when they are read.
- System Check Messages in Other Languages: The pop-up text of a failed system check broke in languages whose translation contains an apostrophe or quote, such as French.
- Command Line Push Times on the Dashboard: A push run from the command line (stageit:push) now records its time where the Dashboard reads it.
- Building a Stage Stopped When a Cache Folder Changed Mid-Copy: On sites with busy caches (for example JCH Optimize's page cache), a cache folder could disappear while StageIt was listing the site's files, and the build stopped part-way with an error, leaving a half-built staging site. StageIt no longer reads the contents of the cache, log and temp folders it doesn't copy anyway (the empty folders are still created on the staging site), and if any folder changes while it is being read, StageIt notes it in the log and carries on (#25).
- Text Hard to Read in Dark Mode: On Joomla 6 some StageIt text (for example on the Backups and View Log screens) was dark grey on the dark background. StageIt now uses Joomla's own colours in light and dark mode.
- Configuration Tab Links Gave a Script Error: Links that open a particular Configuration tab called a script function that didn't exist. They now open the right tab.
- Old Version Number Left Behind by Updates: Sites that first installed StageIt 5.1.x still had that version's
stageit.xmlfile inadministrator/components/com_stageit, and updates never replaced it. Site scanners such as mySites.guru read the old version number from it and reported updated sites as running a vulnerable StageIt. Installing this version replaces that file with the current one.
New Features
- Email Blurred on the Automatic Updates Screen: Your saved email is blurred so it isn't shown by accident, for example when you share your screen or record a video. Click it to see it straight away, or hold the mouse over it for a few seconds (a countdown shows). It blurs again after a few seconds or when you move away. An empty box is never blurred, so you can type your email in right away. Turn it off or change the timings in Options → Privacy.
Changes
- Options for Users With Configure Options Only: The Options button also appears for users who have Joomla's Configure Options Only permission for StageIt, and StageIt now lists that permission. The Permissions tab no longer shows codes such as JACTION_ADMIN_COMPONENT_DESC under each permission.
- Automatic Updates Screen Looks Like Joomla: The Updates screen is now called Automatic Updates, is the second item under StageIt in the admin menu, and uses Joomla's own form layout, buttons and Toggle Inline Help. In dark mode the email box was light blue with grey text and hard to read; it now uses Joomla's normal colours.
- Readable Input Boxes in Dark Mode: The boxes on the Configuration screen no longer turn bright blue in dark mode.
- StageIt in Joomla's Admin Menu: StageIt's screens (Dashboard, Automatic Updates, Configuration, Backups, View Log) are now listed under StageIt in Joomla's admin menu, like Joomla's own components. StageIt's own sidebar and header bar are gone, and every screen uses Joomla's toolbar, with Options and Documentation buttons.
- New Dashboard: The Welcome screen is now a Dashboard. Next to the Begin / Rebuild / Remove / Sync buttons it shows whether you are on the live or the staging site, the staging site address with a copy button, whether automatic updates are on, and the system checks that used to be in the sidebar.
- Configuration Screen Looks Like Joomla: Configuration now uses Joomla's tabs, field layout and green/red Yes/No buttons. The help under each setting appears with Toggle Inline Help instead of in pop-up boxes, the user-group lists for the banner are Joomla's pick-list, and Save is in the toolbar. On the Data tables tab you can Shift-click to tick a range of tables.
- Buttons for Every StageIt Screen: Every StageIt screen has a row of buttons at the top for Dashboard, Automatic Updates, Configuration, Backups and View Log. The screen you are on is shown in green.
- More About Your Staging Site on the Dashboard: The Status card shows when the staging site was built and how long that took, when you last pushed it to live and how long that took (or that a run did not finish), the live site's tables and files, the staging site's tables and files, your backups, and the space StageIt uses in total (staging files, staging tables and backups). While a build or push is running the sizes say so instead of measuring a half-copied site, and the card refreshes itself when the run finishes. File sizes are measured after the page loads, so a big site does not slow the Dashboard down; Measure again refreshes them.
- Brighter Welcome Box: The Welcome box on the Dashboard has bigger text, the StageIt logo, the main benefits as icon tiles and large buttons, in green on the live site and orange on the staging site.
v6.5.0 2026-10-28
New Features
- One-Click Updates With Your PHP Web Design Email: StageIt now gets its updates from the new update server at php-web-design.com. Go to Components → StageIt → Updates, enter the email address of your PHP Web Design account and click Save email. StageIt checks your membership with php-web-design.com and, if it covers this site, Joomla can download and install new versions of StageIt for you in System → Update → Extensions. The screen shows whether updates are on. If they are not, it shows the reason php-web-design.com gives (for example a membership that has ended, or one that already covers another site) and a link to My Account. Remove email takes the email off the site again. The status is checked again once a day. When you save, StageIt sends your email address, the site's domain name and a random ID for the site to php-web-design.com.
Bug Fixes
- StageIt for Joomla 6 Checked the Joomla 5 Update Feed: The installer registered the StageIt for Joomla 5 update address on Joomla 6 sites, so those sites checked both feeds. Joomla 6 sites now check only the StageIt for Joomla 6 feed.
Changes
- New Update Server: StageIt now asks the Release Manager on php-web-design.com for updates instead of the old
updates/check.phpaddress. Installing this version removes StageIt's old entries from System → Update Sites and leaves exactly one StageIt entry. - Updates Screen Replaced: The old "Your license" screen (Registered Email and License ID) was never connected to anything and showed a made-up expiry date. The new Updates screen replaces it and is now in the StageIt menu.
v6.4.0 2026-10-24
Security
- Cross-site request forgery (CSRF) protection on every StageIt action: Building, pushing, removing, restoring and deleting backups, saving Options and clearing logs now require Joomla's security token, so another website can't trigger them through a logged-in administrator's browser. Each action also accepts only its own known steps.
- Backup delete and restore limited to StageIt's backups folder: The delete-backup and restore-backup actions accepted any folder path sent to them. They now only act on folders inside
/stgbackups/. - Options could write PHP code into StageIt's settings file: A setting containing an apostrophe could break out of the settings file (
params.php) and run as PHP. Settings are now always stored safely encoded. - Cross-site scripting (XSS) fixes: The StageIt bar's Switch to Live / Switch to Staging links and the
tabparameter on StageIt's screens could carry script code from a crafted link. Both are now escaped, the bar decides whether it's on the staging site from the installation folder rather than from the address, and its colour settings only accept real colour values. - Turning off the StageIt bar now needs a logged-in StageIt administrator: Before, any visitor could switch the bar off.
- Backups harder to find from the web: Backup folders get a random suffix in their name,
/stgbackups/gets a blankindex.htmland an.htaccessthat also works on Apache 2.4, the robots.txt block no longer names the backups folder, and the record of the last push can't be read from the web. - Smaller hardening: The command line lock file is kept in the site's own
tmpfolder, StageIt's database table matching treats_in the table prefix literally, and the Admin Tools fingerprint step ignores file paths containing...
New Features
- Command Line Push and Remove: StageIt can now be driven from the server shell with Joomla's own command line tool, with no admin login. Run from the live site's root folder as the site's own user:
php cli/joomla.php stageit:statusshows whether a staging copy exists and whether it can be pushed or removed;stageit:pushpushes the staging copy to live (the same as the Sync to Live button);stageit:removeremoves the staging copy (the same as the Remove button);stageit:backupslists the pre-push backups. The commands run the same steps as the admin buttons, with the same checks and the same automatic backup of the live site to/stgbackups/before a push. They ask for confirmation unless you add--yes, print one line per step, and finish withOKorFAILED: <step>: <reason>and a non-zero exit code, so they can be used in scripts.stageit:push --removepushes and then removes the staging copy in one go.stageit:removerefuses to remove a staging copy that hasn't been pushed to live since it was built, so work on the stage can't be thrown away by accident (--forceoverrides this). Every run is recorded in the StageIt audit log. Delivered as a new "Console - StageIt" plugin inside the package, switched on automatically when it is first installed. - Search Engines Kept Out of the Staging Copy: Search engines only read the
robots.txtat the top of a site, so the copy StageIt made inside/stageit/never stopped them crawling the staging copy. Before it copies anything, a build now adds a marked block to the live site's ownrobots.txtthat tells crawlers to stay out of/stageit/. The block is added only once, nothing else in the file is changed, and the staging copy and any later push carry the same file. - Confirmation Before Remove and Rebuild: Remove staging and Rebuild staging used to run on a single click, with no undo. Both now open a dialog that names exactly what will be affected (the staging site address, its folder and the number of
stg_database tables) before anything happens. Tick Never ask me again in the dialog to skip it from then on for your own user account. A new Ask before Remove / Rebuild setting in Options turns the question off for everyone, and its Ask everyone again button brings it back for anyone who ticked "Never ask me again". - Notice When the Redirects List Is Huge: With Joomla's Redirect plugin collecting URLs, the Redirects list can fill up with tens of thousands of disabled entries (logged 404 errors). StageIt copies all of them to the staging site and backs them all up before every push. When there are more than 10,000, the StageIt dashboard now says so and links to Components → Redirects, where Joomla's own Purge Disabled button removes them. StageIt doesn't delete anything itself.
Bug Fixes
- Pushing to Live Wiped the Live Site's Logs: Fixed a long-standing bug where every push copied the staging copy's
administrator/logsfolder over the live site's, deleting any live log files the staging copy didn't have (including Joomla's own error logs and the StageIt audit log) and overwriting the rest. StageIt only skipped the old Joomla 3/logslocation. Theadministrator/logsfolder is now left alone in both directions, the same as the cache and tmp folders. - Akeeba Admin Tools Sent "Critical file modified" Alerts When the Staging Site Was Visited: If the live site runs Admin Tools with critical-file monitoring switched on, the staging copy's Admin Tools emailed an alert listing every critical file (
configuration.php, bothindex.phpfiles and every template'sindex.php,error.phpandcomponent.php). It had inherited live's file fingerprints, but every file StageIt copies gets a new modified date andconfiguration.phpis rewritten for the stage. A build now takes the fingerprints again from the staging copy's own files, so the staging copy's Admin Tools stays quiet and still alerts on real changes made on the stage. The live site's Admin Tools isn't touched. - 500 Error After Building or Pushing (Composer autoloader mismatch): Fixed a bug where a build or push could leave Joomla's three Composer autoloader files (
libraries/vendor/autoload.php,composer/autoload_real.php,composer/autoload_static.php) out of step. They refer to each other by a generated code, and StageIt could skip one of them when its size hadn't changed, which broke every page on the site with a 500 error. These files are now always copied as a set. - Old Settings Still Used After a Push on Some Hosts: The step that clears PHP's code cache (OPcache) after a push or build never ran, because of a typo. On hosts that don't re-check files for changes, the site could carry on using the old
configuration.phpand old files until PHP restarted. The cache is now cleared once the new configuration has been written. - Remove Staging Failed When the Staging Tables Were Already Gone: Removing a staging copy stopped with "Unable to retrieve table structure" if its
stg_database tables had already been deleted but the/stageit/folder was still there. Removal now finishes and deletes the folder. - Switch to Live Opened the Same Page on Live: The Switch to Live link in the staging bar now goes to the live site's admin dashboard instead of the matching page on live. Switch to Staging also works now on sites installed in a subfolder.
- StageIt Bar Hidden or Doubled in SP Page Builder's Editors: SP Page Builder's full-screen admin editor covered the StageIt bar completely, and its front-end editor showed the bar twice (once in the editor and again inside the page preview), pushing the page down. Both editors now show a small STAGING SITE / LIVE SITE badge at the bottom of the screen instead. It can't cover or block anything, and it follows the bar's admin settings.
- Wrong Progress Messages During a Push: "Backing a map of your staging environment" now reads "Building a map…", the backup step is labelled as a backup, and the last step says "Finalising your live environment" instead of "staging".
- Dialog Buttons All Showed in Blue: The buttons in StageIt's pop-up dialogs (including the pre-flight dialog shown before a build) all came out blue, because a theme rule overrode their colours. Cancel is grey again, Proceed green, and the Remove / Rebuild confirmation button red.
Changes
- Completed pushes are recorded: Each push that finishes, from the admin or the command line, now records when it finished (in a file that can't be read from the web). The command line uses it to decide whether a staging copy is safe to remove.
v6.3.5 2026-08-05
Bug Fixes
- Staging Copy Failed on Multilingual Sites (and any table with a legitimate
0in an AUTO_INCREMENT column): Fixed a long-standing bug where creating a staging copy would fail partway through on any Joomla site with multiple languages installed — and, more generally, on any table containing a row with0in an AUTO_INCREMENT primary-key column. Joomla’s#__languagestable ships withlanguage_id = 0(the “All” pseudo-language) alongsidelanguage_id = 1(English); without the correct MySQLsql_mode, inserting the0row auto-increments it to1, which then collides with the real1row and throwsDuplicate entry '1' for key 'PRIMARY'. StageIt’s clone/backup code intended to setsql_mode = NO_AUTO_VALUE_ON_ZERObefore each copy, but its internal_query()helper was unconditionally resettingsql_modeto empty immediately before every statement, silently defeating the intent. The reset now appliesNO_AUTO_VALUE_ON_ZEROinstead of an empty mode, so table clones with legitimate zero-value auto-increment rows survive correctly. Diagnosed and root-caused by Marco Viehl — thanks for reading the source, pinpointing the exact line, and reporting it back.
v6.3.4 2026-07-24
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.
v6.3.3 2026-07-01
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.
v6.3.2 2026-05-28
Bug Fixes
- Excluded Tables Were Still Being Synced on Non-Standard Prefixes: Fixed a long-standing bug where the “Exclude these tables from data sync” list silently failed on any site whose Joomla database prefix contains an internal underscore — e.g.
web_jos_,my_app_,client_j5_. The bare-table-name key used to look up the exclusion list was extracted by splitting on underscores and dropping fixed segments, which over-stripped on multi-segment prefixes so the key never matched. Tables containing underscores in their own names (e.g.redirect_links) were unaffected on standard prefixes but also wrong on non-standard ones. Now uses known prefix-string lengths in both deploy (live → staging) and sync (staging → live) directions. Thanks to Florian B. for the report.
v6.3.1 2026-04-30
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.
v6.3.0 2026-04-17
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 when the configured log directory could not be opened. Logging now silently disables itself rather than crashing the deploy.
v6.2.12 2026-03-27
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 to the plugin. Thanks to Tom E. for reporting this bug — enjoy your one-week StageIt membership extension!
v6.2.11 2026-03-21
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
v6.2.10 2026-03-11
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
v6.2.9 2026-03-05
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
- Fatal Parse Error in vbLog: Fixed missing closing brace in
_error()method that causedunexpected token "private"fatal error on every page load
v6.2.8 2026-02-28
📦 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 - 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
🐛 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 settingforeign_key_checks = 0instead of1
🧹 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 lirules 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: inheritfor 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)andvar(--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-trashclass (red #dc3545) - Restore Icon: Now uses
icon-refreshclass (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 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
🚀 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
vbJsonto write full stack traces to multiple log locations (prefersadministrator/logs/com_stageit.log.phpwith 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
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
🛠️ 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
falsefrom 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
stageitproupdate URLs from previous versions
📝 Developer Documentation
- Update Server Reminders: Added XML comments to component and plugin manifests reminding developers that only
pkg_stageit.xmlshould 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\Archiveclass - 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_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
📦 Version 5.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
🐛 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
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.
🔧 Version 5.1.1 (2025-10-22)
- 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=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
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.
🎨 Version 5.0.12 (2025-10-19)
- Phase B (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.
🎨 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
#stageitand derive from Atum tokens, so Dark/Light toggles automatically. - Customization: Preserved requested dark background
#171c24for#stageitin 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_stageitbody class (eliminates the PHP parse error aroundcatch). - Theme: Continues loading
media/com_stageit/css/admin.cssvia WebAsset (onBeforeCompileHead).
🎨 Version 5.0.9 (2025-10-19)
- Theme: Move Dark/Light CSS to a static asset
media/com_stageit/css/admin.cssand load via WebAsset on admin StageIt pages. - Reliability: Ensure
<body>has thecom_stageitclass so selectorsbody.admin.com_stageitalways match. - Packaging: Manifest now installs the
media/com_stageit/css/admin.cssfile.
🎨 Version 5.0.8 (2025-10-19)
- Dark Mode: Set
#stageitbackground to#171c24in 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
booltype from$autoloadLanguagein the system plugin to avoid inheritance conflict withCMSPlugin(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
onBeforeCompileHeadso nomedia/file is required. - Reliability: Ensures
<body>has thecom_stageitclass on admin StageIt pages sobody.admin.com_stageitselectors always match. - Packaging: All manifests set to schema
4.0; version bumped to5.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 = trueand moved manifests to schema4.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_stageitwith correct references.

Add comment