Changelog
A complete history of features, fixes, and improvements across every release.
Version 3.9
3.9.10 11 Mar 2026
- [Internal] Updated Spanish (es-ES) translations: fixed terminology consistency and added 4 new translation keys (#120) (Thanks @alamarte)
- [Internal] Added missing Russian translations for open_basedir warnings (#119) (Thanks @alex-revo)
3.9.9 11 Mar 2026
- [Fix] Fixed filesystem operations failing when
open_basediris enabled, preventing errors on restricted hosting environments (#115) (Thanks @alex-revo)
3.9.8 11 Mar 2026
- [Internal] Extract zip package build into separate
buildzips.shscript - [Fix] Let Joomla's own cascade handle child extension removal instead of manually managing it
3.9.5 11 Mar 2026
- [Fix] Fixed package uninstall leaving plugins behind when removing the extension package (#114)
- [Fix] Corrected plugin ID attributes in package manifest to ensure child plugins are properly uninstalled
- [Internal] Updated uninstall documentation to recommend using package removal instead of individual uninstall
- [Internal] Updated documentation to reflect mySites.guru branding, replacing Panopticon references
- [Internal] Added documentation page explaining package vs individual installation options
3.9.4 10 Mar 2026
- [Fix] Fixed translation errors and improved wording in the Spanish (es-ES) language file (#112) (Thanks @alamarte)
- [Internal] Restored translator credit in es-ES language file header
3.9.3 9 Mar 2026
- [Fix] Fixed Open Graph meta tags not being recognized when using the
name=attribute instead ofproperty=, resolving false positives in SEO checks (#109) (Thanks @nzrunner)
3.9.2 8 Mar 2026
- [Feature] Added support for checking alternative sitemap paths to detect dynamically generated XML sitemaps (#102) (Thanks @nzrunner)
3.9.1 8 Mar 2026
- [Fix] Plugins and module are no longer re-enabled or re-published on extension updates, only on fresh installs (#106) (Thanks @nzrunner)
3.9.0 8 Mar 2026
- [Feature] Sitemap check now detects dynamically generated sitemaps via HTTP fallback when no physical sitemap file exists on disk (#105) (Thanks @nzrunner)
Version 3.8
3.8.5 8 Mar 2026
- [Fix] Fixed Media Manager Thumbnails check reading wrong parameter, causing it to always report thumbnails as disabled (#100) (#104) (Thanks @nzrunner)
- [Fix] Fixed Twitter Card check not detecting
propertyattribute, only matchingnameattribute (#101) (#103) (Thanks @nzrunner)
3.8.4 7 Mar 2026
- [Fixed] Add missing XML configuration for the Custom Fields Search Index check, so it can be toggled on/off in plugin settings (#99) (Thanks @alex-revo)
- [Internal] Add Russian translations for Smart Search Filters and Custom Fields Search Index checks (#99) (Thanks @alex-revo)
- [Internal] Rebuilt documentation
3.8.3 6 Mar 2026
- [Internal] Updated es-ES Spanish translations to v3.8.2 (#96) (Thanks @alamarte)
- [Internal] Rebuilt documentation
3.8.2 4 Mar 2026
- [Feature] Added es-ES translations for
fields_search_indexandsearch_filterschecks (#94) (Thanks @alamarte) - [Fix] Fixed unmatched single quote in release script heredoc
3.8.1 3 Mar 2026
- [Internal] Rebuilt documentation
- [Feature] Added Smart Search filter health check (#87) (#90)
- [Feature] Added custom fields search index health check (#88) (#92)
- [Feature] Added Russian language translation (#93) (Thanks @alex-revo)
- [Internal] Added translation gap detection to release script
- [Internal] Added CODEOWNERS file
Version 3.7
3.7.3 3 Mar 2026
- [Feature] Added translation support for the Explore button (#86) (Thanks @alex-revo)
- [Internal] Updated documentation and website for v3.7.3
3.7.2 2 Mar 2026
- [Feature] Made Explore and Docs buttons translatable (#82) (Thanks @alex-revo)
- [Fix] Added missing translation for extensions.discover check
- [Internal] Updated Russian (ru-RU) translations (#83) (Thanks @alex-revo)
3.7.1 1 Mar 2026
- [Internal] Updated Spanish (es-ES) translations to v3.7.0 (#81) (Thanks @alamarte)
- [Internal] Rebuilt documentation for v3.7.1 release
3.7.0 1 Mar 2026
- [Feature] Added Discover check that detects uninstalled extensions left on the filesystem, helping identify extensions that were unpacked but never fully installed (#78) (Thanks @alex-revo)
Version 3.6
3.6.3 1 Mar 2026
- [Fix] Make report export strings translatable (#77) (Thanks @alex-revo)
3.6.2 28 Feb 2026
- [Fix] Fixed fatal error when plugins are installed without the component (#73) (Thanks @Stevepic)
- [Feature] Site domain is now included in export filenames (#71) (Thanks @alex-revo)
- [Feature] Issues Only reports now hide the Good summary section and filter footer providers (#70) (Thanks @alex-revo)
- [Fix] Added missing translation for extensions.joomla_update_stability (#68) (Thanks @alex-revo)
- [Internal] "Generated by" footer now links to joomlahealthchecker.com instead of GitHub
- [Security] Updated docs dependencies to fix rollup, minimatch, and markdown-it vulnerabilities
3.6.1 27 Feb 2026
- [Feature] Added Russian (ru-RU) language translation for the module and fixed some existing translations (#69) (Thanks @alex-revo)
- [Fix] Fixed double-nested GitHub username links in changelog
3.6.0 27 Feb 2026
- [Feature] Added Joomla Update Minimum Stability check — warns when your update channel is set to a less stable release level (#67)
- [Fix] Resolved Joomla Update Channel detection issue (#65) (Thanks @alex-revo)
- [Feature] Added Russian (ru-RU) translation (#66) (Thanks @alex-revo)
Version 3.5
3.5.1 26 Feb 2026
- [Feature] Added action URLs to Extensions category health checks, enabling one-click navigation to resolve extension issues (#62) (Thanks @alex-revo)
3.5.0 26 Feb 2026
- [Feature] Added update channel health check — verifies Joomla is configured to receive updates from the expected release channel (#60) (Thanks @alex-revo)
- [Feature] Made Joomla version check channel-aware, so it validates against the correct version for your configured update channel (stable, testing, etc.) (#61)
- [Fix] Added missing title language key for the update channel check
Version 3.4
3.4.3 26 Feb 2026
- [Fix] Fixed 414 Request-URI Too Long error when exporting health check results by switching form submission from GET to POST (#58) (Thanks @alex-revo)
3.4.2 26 Feb 2026
- [Security] Fixed XSS vulnerabilities and cleaned up code inconsistencies (#57)
- [Internal] Updated documentation
3.4.1 26 Feb 2026
- [Feature] Export improvements (#44) (Thanks @alex-revo)
- [Internal] Moved changelog into VitePress documentation site
- [Internal] Fixed release script ordering
3.4.0 26 Feb 2026
- [Feature] Dedicated Export page with format selection and filter options, including an "issues only" mode to export only warnings and critical results (#50)
- [Feature] Markdown export format for sharing reports outside HTML (#53)
- [Feature] Per-check export visibility settings, allowing checks to be hidden from exports (#51)
- [Feature] BeforeReportExportDisplayEvent for plugins to inject custom banners into HTML exports (#52)
- [Feature] Health check descriptions are now translatable via Joomla's language system
- [Internal] Rebuilt documentation for v3.3.7
Version 3.3
3.3.6 26 Feb 2026
- [Feature] Added Spanish (es-ES) translation and translations documentation (#49) (Thanks @alamarte)
- [Fix] Fixed false positive detection with DJ-Catalog2 (#41) (Thanks @blondie63)
- [Internal] Added changelog generator script and changelog page
- [Internal] Added platform constraint for FrankenPHP container
3.3.5 26 Feb 2026
- [Fix] Menu Orphans check now lists the specific menu item titles that are broken, making it easier to find and fix orphaned links (#45)
- [Fix] Unused Modules check now mentions
{loadmodule}usage, so modules loaded via content plugins are accounted for (#47)
3.3.4 25 Feb 2026
- [Fix] Fixed false positive orphaned tables for extensions using non-standard SQL install file paths by parsing XML manifests to discover actual SQL locations (#41)
- [Fix] Fixed error when extension manifest lacks an
<install><sql>section
3.3.3 24 Feb 2026
- [Feature] Module Position check now lists orphaned modules in the warning description (#40)
3.3.2 22 Feb 2026
- [Feature] Added HealthStatus parameter to
getDocsUrl()method, enabling status-aware documentation links (#38) - [Fix] Better error handling for ajax errors
3.3.1 22 Feb 2026
- [Fix] HTML markup now renders correctly in HTML export reports instead of displaying raw tags (#36)
- [Feature] HTML export now includes a link to the documentation (#37)
- [Fix] Improved HTML export layout and formatting (#37)
3.3.0 17 Feb 2026
- [Feature] Added Core Directories health check — verifies essential Joomla directories like
/imagesexist and are accessible (#31) - [Feature] Added Index File health check — ensures
index.htmlsecurity files are present in key directories (#32) - [Internal] Standardized
die()statements todie;for consistency (#30) - [Internal] Removed duplicate docblocks from
performCheck()methods (#29)
Version 3.2
3.2.6 9 Feb 2026
- [Fix] Fixed dark mode button visibility for Joomla 5 (#27)
3.2.5 7 Feb 2026
- [Feature] Added Yootheme plugin to website homepage (#25)
- [Internal] Updated documentation and website
3.2.4 6 Feb 2026
- [Fix] Fixed spinner alignment in pending check badges (#24)
3.2.3 6 Feb 2026
- [Feature] Add Community Plugins page and toolbar button for discovering third-party extensions (PR #21)
- [Feature] Add YOOtheme Pro Health Checker plugin listing to community plugins (PR #23)
- [Feature] Add safe HTML formatting support for health check descriptions (#14)
- [Feature] Add docsUrl and actionUrl properties to health check results for linking to documentation and Joomla admin pages
- [Feature] Refactor action_url to support conditional display with visual buttons (#17, PR #19)
- [Feature] Add cache buster to AJAX requests to prevent stale cached responses (#9, PR #10)
- [Feature] Add installer scripts to clean up obsolete files on update (#4, PR #8)
- [Feature] Add LLMs.txt support for AI discoverability
- [Fix] Fix missing brute force protection translation key (#2, PR #3)
- [Fix] Fix PasswordExpiryCheck false positive on fresh Joomla installs
- [Fix] Fix ActionLogsEnabledCheck false negative and remove bogus UserActionsLogCheck (#5)
- [Fix] Fix Page Cache check to detect browser caching setting correctly
- [Fix] Fix PasswordPolicyCheck to read from com_users component params
- [Fix] Fix null pointer access in database health checks
- [Fix] Fix HealthCheckInterface documentation (PR #15)
- [Fix] Add missing translation for Media Manager Thumbnails check (#16)
- [Fix] Fix conflicting recommendations between health checks (#20)
- [Fix] Fix formatting recommendations (#13)
- [Fix] Add alt text to logo images for accessibility
- [Internal] Remove deprecated database.backup_age core check (#6, PR #7)
- [Internal] Remove redundant LegacyExtensionsCheck (#11, PR #12)
- [Internal] Remove bogus UserActionsLogCheck phantom check (#5)
- [Internal] Add defensive permission checks to MySitesGuru plugin event handlers
- [Internal] Comprehensive documentation rebuild and user guide updates
- [Internal] Numerous code quality improvements, unit tests, and CI/CD enhancements
Version 3.1
3.1.5 5 Feb 2026
- [Feature] Refactored action_url system to support conditional display with visual buttons, improving the user interface for actionable health check results (#17, #19)
- [Internal] Rebuilt documentation for v3.1.5 release
3.1.4 4 Feb 2026
- [Fix] Added missing translation for Media Manager Thumbnails check (#16)
- [Internal] Fixed HealthCheckInterface documentation (#15)
- [Internal] Updated test coverage badge in README
3.1.3 4 Feb 2026
- [Internal] Rebuilt documentation
3.1.2 4 Feb 2026
- [Security] Added defensive permission checks to MySitesGuru plugin event handlers to prevent unauthorized access
- [Internal] Updated documentation
3.1.1 30 Jan 2026
- [Feature] Added safe HTML formatting support for health check descriptions, allowing basic formatting like
<code>,<strong>, and<em>tags in check results (#14, #13) - [Internal] Build process now auto-commits minified assets during release
- [Internal] Removed deprecated waitlist functionality and D1 database bindings from website
- [Internal] Code style fixes and documentation updates
3.1.0 27 Jan 2026
- [Internal] Removed the Legacy Extensions health check, which was redundant and no longer performing reliably (#11)
Version 3.0
3.0.40 27 Jan 2026
- [Performance] Added cache buster to AJAX requests to prevent stale responses from browser or proxy caching (#9)
- [Internal] Rebuilt documentation
3.0.39 27 Jan 2026
- Maintenance release
3.0.38 27 Jan 2026
- [Fix] Removed deprecated
database.backup_agecheck that relied on the obsolete*_ak_statstable (#6) - [Fix] Added installer scripts to clean up obsolete files when updating to a new version, including proper removal of
security.user_actions_log(#4, #5) - [Internal] Release notes now link to related GitHub issues, with automatic comments posted on closed issues
3.0.37 27 Jan 2026
- [Fix] #2 Added missing translation key for brute force protection check
- [Internal] Consolidated website build scripts
- [Internal] Updated documentation
3.0.36 25 Jan 2026
- [Fix] Fixed PasswordExpiryCheck false positive on fresh Joomla installations
- [Fix] Fixed ActionLogsEnabledCheck false negative detection
- [Fix] Fixed Page Cache check to properly detect browser caching configuration
- [Fix] Fixed PasswordPolicyCheck to correctly read settings from com_users component params
- [Fix] Removed bogus UserActionsLogCheck that was reporting incorrect results
- [Feature] Added docsUrl and actionUrl properties to health check results, allowing checks to link to documentation and remediation actions
- [Feature] Added SEO meta tags to documentation pages
- [Fix] Added alt text to provider and category logo images for improved accessibility
- [Fix] Added alt text to dynamically rendered logo images
- [Internal] Documented getDocsUrl() and getActionUrl() methods in developer API reference
- [Internal] Updated documentation to reflect 129 checks (down from 130 after UserActionsLogCheck removal)
- [Internal] Changed GitHub toolbar button to link to CONTRIBUTING.md
3.0.35 23 Jan 2026
- [Fix] Fixed UnusedModulesCheck displaying object data instead of module names in warning messages
- [Feature] Added logo support for Akeeba Backup, Admin Tools, and mySites.guru provider plugins
- [Internal] Documentation and website updates
3.0.34 23 Jan 2026
- [Internal] Improved XML file formatting for better readability
- [Fix] Fixed broken documentation links (Thanks Marc)
- [Internal] Website updates and section simplification
- [Internal] Documentation rebuild
3.0.33 23 Jan 2026
- [Fix] Fixed detection of plugins using filesystem check rather than database query
- [Security] Removed debug code from source files
- [Internal] Removed hard-coded statistics
- [Internal] Improved code quality and expanded unit test coverage
- [Internal] Documentation rebuild
3.0.32 23 Jan 2026
- [Fix] Fixed HttpFactory::getHttp method for improved HTTP client handling
- [Fix] Added missing translation strings
- [Internal] Deprecated curl_close() call removed for PHP 8.0+ compatibility
- [Internal] Code quality improvements via Rector
- [Internal] Expanded unit test coverage with HTTP client mocking
- [Internal] Documentation rebuild
3.0.31 23 Jan 2026
- Maintenance release
3.0.30 23 Jan 2026
- [Internal] Fixed release script URL generation to correctly reference download package filenames
- [Internal] Updated documentation and website files
3.0.29 23 Jan 2026
- Maintenance release