# MySQLTuner Changelog

2.9.0 2026-07-03

- chore(build): allow build scope in compliance auditor
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency
- chore(deps): update devops-infra/action-commit-push digest to fa0c793 (#929)
- chore(deps): update shogo82148/actions-setup-mysql digest to 076e636 (#930)
- chore(main): add doc links in localhost warnings and support custom local subdomains
- chore(main): add roadmap to the whitelist of allowed scopes in compliance checks.
- chore(main): hide hostname, ssl, and replication warnings on localhost (#933)
- chore(main): whitelist deps and system commit scopes in check_compliance.pl to support Dependabot and host metrics commits.
- chore(metadata): add GitHub issue templates for bugs and feature requests
- chore: automated project metadata update
- chore: remove execution.log from git repository and sync docs
- feat(cli): create an agent-ready output format (JSON/YAML) so that MySQLTuner can be easily integrated by AI agents.
- feat(cli): resolve remote memory, socket override, and temptable sizing issues
- feat(main): recommend enabling slow query log if disabled (#517)
- feat(metadata): fix test badge and update version references in READMEs
- feat(report): add pgBadger-inspired query distribution, locking latency, and temp table memory/disk spill visual analytics to HTML report
- feat(report): add verbose execution timing measurements for each section, showing both elapsed time and its percentage relative to the total script execution time.
- feat(report): add verbose timings, step percentages, and snapshot summary
- feat(report): categorize recommendations in HTML report and add Connections/Performance panels, Storage engines table, and SQL modeling stats grid.
- feat(report): finalize HTML report, YAML output, and historical comparison
- feat(report): finalize a complete HTML report file beginning in v2.8.45.
- feat(report): implement Phase 13 sectional global indicators and KPIs
- feat(report): move dump_csv_files execution step to immediately before make_recommendations.
- feat(report): print an environment audit snapshot summary (server, user, RAM, swap, versions, uptime) right after get_all_vars.
- feat(report): support historical comparison of database diagnostics and performance metrics over time.
- feat: recommend slow query log when disabled (#517)
- feat: update Total buffers output message format to display temptable sizing when active.
- fix(cli): add mutually exclusive guard for json and yaml options.
- fix(cli): preserve --socket in connection arguments when --host is specified.
- fix(main): add undefined and 'NULL' guards to hr_num to eliminate uninitialized value warnings.
- fix(main): add undefined/NULL guards to hr_num to resolve uninitialized warnings
- fix(main): address PR #931 code review feedback and enhance test validations
- fix(main): calculate health score early in historical comparison to ensure scores exist for trend analysis.
- fix(main): calculate query cache efficiency using Com_select on MariaDB (MDEV-4981)
- fix(main): calculate query cache efficiency using Com_select on MariaDB, where Com_select includes query cache hits (MDEV-4981).
- fix(main): exclude MariaDB user roles and support zero-config TLS
- fix(main): exclude MariaDB user roles from SSL remote user audit
- fix(main): format YAML null as tilde (~) and multiline values using literal block style.
- fix(main): guard InnoDB log file size and log size percentage checks against uninitialized variables.
- fix(main): guard version and version comment checks in MariaDB parallel replication and query cache blocks.
- fix(main): implement cached version comparison parser to eliminate uninitialized value warnings and improve performance.
- fix(main): only recommend increasing innodb_log_buffer_size when log waits occur 
- fix(main): sanitize and redact sensitive credentials from json/yaml output exports.
- fix(main): skip local /proc/loadavg read during remote database audits.
- fix(main): support MariaDB 11.4+ zero-configuration TLS and avoid false missing certificate warnings
- fix(report): flush console output trace when opening raw log files late in dumpdir mode.
- fix(test): add undef fallbacks to human_size, hr_bytes and hr_bytes_rnd mocks in tests.
- fix: update commit process
- fix: update documentation and code
- test(hook): verify pre-commit hook runs tests when test files change
- test(lab): add unit test test_issue_480.t for table_open_cache_instances recommendation (#480)
- test(lab): add unit test test_issue_517.t for slow query log recommendations (#517)
- test(lab): add unit test test_issue_810.t for issue 810
- test(lab): add unit test test_issue_810.t for remote host forcemem MB interpretation correctness (issue #810)
- test(lab): add unit test test_issue_938.t for InnoDB write log efficiency
- test(lab): add unit tests for query cache efficiency logic on MySQL and MariaDB in tests/test_issue_927.t (renamed from tests/issue_927.t).
- test(lab): normalize all repro_issue_*.t and issue_*.t test file names to test_issue_*.t
- test(lab): split unit_coverage_boost4.t into smaller topic-oriented unit tests: unit_cli_helpers.t, unit_client_privileges.t, unit_cloud_commands.t, unit_fs_info.t, unit_os_vm.t
- test(lab): utilize isolated tempfile for mock json to avoid race conditions in tests/unit_phase13_kpis.t.
- test(report): add verbose timing and audit snapshot summary formatting checks to tests/verbose_timing.t.
- test(report): update HTML report unit tests to verify connections, performance, storage, and modeling HTML sections.
- test(security): add test cases for MariaDB role exclusion and zero-configuration TLS
- test(versions): add unit tests for version caching and comparisons, resolve redundant warnings, and use tempfile in tests/unit_versions.t.
- test: add socket preservation tests to test_issue_781.t.
- test: add unit test for remote host physical memory detection and validation (issue #796).
- test: add unit test for temptable output formatting in Total buffers.
- ci: optimize pre-commit hook to only run unit tests when code, tests, or dependencies are modified.
- docs(metadata): promote HTML reports and add E2E examples
- docs(metadata): remove timestamp from doc-sync generated files
- docs(roadmap): link strategic technical evolutions specification and enforce changelog staging
- docs(roadmap): specify and implement Phase XIV pgBadger-inspired HTML report modules
- docs(roadmap): specify Phase XVI (AI Agent Integration) and Phase XVII (Dockerized MCP Daemon).
- docs: add LightPath as sponsor, relocate coffee button, and use star-history chart
- docs: regenerate release notes
- docs: update repository links to major/MySQLTuner-perl and add GitHub stars badge

2.8.45 2026-06-04





- chore: restore doc_sync.py utility script and run doc synchronization.
- feat: export both complete (unfiltered) and filtered CSV files for sys views in dumpdir.
- feat: filter system databases from PFS/sys schema analysis queries and dumpdir exports.
- feat: integrate temptable_max_ram into per-thread buffer memory calculations.
- feat: bypass temptable_max_ram logic if internal_tmp_mem_storage_engine is set to MEMORY or if the engine is MariaDB.
- feat: verify temptable_max_mmap against available disk space in tmpdir.
- feat: add InnoDB index/data ratio check and CSV dump for tables > 50,000 rows.
- feat: display Host/RAM info and Database Uptime in system_recommendations() under remote or cloud modes.
- feat: display database server uptime in all configurations inside get_system_info() and system_recommendations().
- fix: normalize dollar sign escaping in SQL queries to prevent syntax errors and shell interpolation failures.
- fix: skip x$ps_schema_table_statistics_io views in dumpdir schema exports to prevent execution failures on newer MariaDB releases.
- perf: optimize column exploration in mysql_tables by fetching engine and column details in bulk (reducing queries from 2N+3 to 2 per table).
- test: update schemadir.t and repro_no_index.t mocks to match the bulk queries.
- test: update unit tests to verify both filtered and unfiltered dumpdir exports.
- test: add unit tests for system database filtering logic.
- test: add unit tests for temptable memory limit calculations.
- test: add unit test for index/data ratio calculation logic.
- test: add unit tests for temptable_max_mmap disk space checks, MEMORY engine bypass, and MariaDB bypass.
- test: add complementary subtest for non-binding temptable_max_ram scenario to tests/issue_864.t.
- test: add unit tests for compliance checks, doc synchronization, and release files verification.
- test: add unit test for remote/cloud host recap in tests/unit_coverage_boost3.t.

2.8.44 2026-05-27





- feat: develop automated end-of-life (EOL) date synchronization check script to audit LTS versions in CI.
- feat: develop automated specification consistency auditor and Spec-to-Test Mapping Matrix.
- feat: develop LTS API auto-bumping utility with GitHub Actions integration.
- feat: develop version bump dry-run simulation script and post-commit Git hook for automated doc sync.
- feat: re-implement HTML report option (--reportfile) removing CPAN Text::Template dependency (#791).
- feat: make unit-tests target quiet/clean by default in Makefile, and add unit-tests-debug target for verbose debugging.
- fix: resolve false positive AUTO_INCREMENT near max capacity warning on BIGINT UNSIGNED columns with low row count by checking type-specific limits using information_schema (#913).
- fix: refactor version parsing regexes in mysql_version_eq() and helper functions to prevent uninitialized value warnings.
- fix: resolve compile-time and runtime warnings in unit tests, mock override ordering, and definedness checks.
- fix: fix $fh scoping bug in process_sysbench_metrics where file handle was declared inside if(!open) guard and went out of scope before read loop.
- fix: fix $fh scoping bug in historical_comparison (same pattern as process_sysbench_metrics).
- fix: fix hash initialization bug in merge_hash (my %result = {} changed to my %result = ()).
- docs: enhance release-manager workflow with branch lifecycle and checkout hook instructions.
- docs: add Docker installation instructions (docker pull/run) and release location to all README files (EN, FR, IT, RU).
- ci: configure CI workflows to trigger on all branches and execute compliance checks.
- ci: add EOL date check step to CI workflow.
- test: add unit test for type-specific auto_increment capacity warnings.
- test: update issue_37.t to support new information_schema query format.
- test: add unit test for HTML report generation logic.
- test: expand unit tests with parameterized test matrix covering supported/outdated versions across major versions 5, 8, 9, 10, and 11.
- test: add unit_system.t to verify architecture, transport, and formatting helpers, increasing test coverage to 61%.
- test: add unit_coverage_boost.t covering 12 pure utility functions (trim, escape_html, hr_bytes, merge_hash, etc.).
- test: add unit_coverage_boost2.t covering 17 I/O, MariaDB engine, and print wrapper functions (redwrap, file2array, mariadb_tokudb, etc.).
- test: add unit_coverage_boost3.t with deep-mocked tests for 22 diagnostic subroutines (mysql_plugins, mysql_indexes, system_recommendations, check_query_anti_patterns, process_sysbench_metrics, etc.).
- test: improve subroutine coverage from 55% to 92% (154 out of 167 subroutines).
- chore: implement compliance check script to enforce zero-dependency and single-file design.
- chore: implement post-checkout Git hook to automatically verify version consistency on checkout.

2.8.43 2026-05-25





- chore: bump version to 2.8.43.
- feat: add --compress-dump option to compress SQL schema dumps using gzip.
- feat: add --dump-limit option to limit row extraction count for CSV dumps.
- feat: export naming convention deviations and missing foreign keys to CSV files.
- feat: write schema export manifest files to track dumped files.
- feat: add unified health score breakdown to CLI output and HTML laboratory reports.
- feat: implement test output auditor script to scan test results for Perl execution errors and runtime warnings.
- fix: resolve invalid login credentials error by defaulting to root when only --pass is set and escaping single quotes in passwords (#781).
- fix: resolve fake aborted connections count increase during password strength checks (#900).
- fix: resolve EOF metadata corruption and duplicated configurations in Emacs block (#904).
- fix: prevent plaintext password leakage in weak password diagnostic messages.
- fix: implement symlink verification and atomic writes for aborted connects state file protection.
- fix: append transport-specific host and container identifiers in state file path to prevent collisions.
- fix: correct authentication plugin checks mock implementation in unit tests to prevent health score deduction bypass.
- test: strengthen authentication plugin checks and add verification suite for state file protections.
- test: add comprehensive test suite for weighted health score and score breakdowns.
- ci: optimize release notes generation to isolate branch changes.
- docs: complete documentation refresh synchronizing README.md, INTERNALS.md, USAGE.md, and all translated READMEs with v2.8.43 script capabilities.
- docs: improve authentication plugins algorithm labels and resolve absolute documentation links.
- perf: optimize --dumpdir performance by excluding heavy RDS/Aurora and internal metrics.
- refactor: catch explicit exception classes in build/release_gen.py to prevent masking system signals.
- refactor: replace generic file preview logic with explicit descriptive labeling for database audit artifacts.
- refactor: html report to get better information about each version.

2.8.42 2026-05-17





- chore: automated project metadata update (empty release).


2.8.41 2026-05-17





- feat: enhance --forcemem and --forceswap to support human-readable memory units (B, K, M, G, T, P).
- feat: implement idiomatic Perl Boolean practices across the project (#34).
- feat: add recommendation for `table_open_cache_instances` based on CPU cores (#480).
- feat: improve syslog and systemd journal detection for error logs (#440).
- feat: initialize `$mysqllogin` to avoid uninitialized value warnings (#490).
- fix: filter MySQL CLI password warning from execute_system_command output.
- fix: prevent division by zero crash in percentage() with non-numeric values.
- fix: resolve SQL execution failure (return code 256) in MySQL 9.x containers by updating batch execution flags.
- fix: Restore compatibility with older Perl versions (by @jasongill).
- fix: wrap template loading in `get_template_model()` to avoid `uninitialized value` warnings during `require`.
- fix: allow `--updateversion` to work on hosts without `mysql`/`mariadb` installed (#36).
- fix: skip local SSL certificate warnings if they are in an inaccessible `datadir` (#33).
- fix: correct false positives in `check_removed_innodb_variables` by distinguishing real server variables from internal ones (#32).
- fix: improve join_buffer_size recommendation formatting in Variables to Adjust (#881).
- fix: suppress MySQL client warning regarding 'DISABLED' boolean value for SSL (#887).
- fix: correctly handle `--defaults-file` and `--defaults-extra-file` without dropping options (#605).
- fix: restore Debian maintenance account automatic login by using idiomatic boolean checks (#896).
- fix: include `tmp_table_size` in per-thread memory calculation for better accuracy (#864).
- fix: add retry mechanism for initial `SELECT VERSION()` query to improve connection resilience (#782).
- fix: prevent `AUTO_INCREMENT` capacity false positives for empty tables (#37).
- fix: refactor InnoDB Redo Log Capacity logic to be workload-based and avoid false positives (#714, #737, #777).
- fix: add guards against division by zero in calculations for improved stability (#435).
- fix: add truthiness guards to `mysql_innodb` and `mysql_stats` subroutines.
- fix: improve `which` logic for better container/minimal environment support.
- fix: enhance login failure reporting with detailed output.
- fix: handle Plesk Obsidian 18.0.76.5+ removing --show-password (#42).
- ci: refine audit_logs.pl to prevent false positive warnings on successful [OK] output.
- ci: enhance Quality Gate to strictly enforce zero-warning policy on GitHub Actions tests.
- ci: implement dynamic CI test environment detection by wrapping configuration extraction.
- ci: refactor GitHub Actions release and prerelease workflows to support dynamic versions and checksum generation.
- ci: migrate maintenance script to GitHub Actions.
- refactor: update CLI metadata to use `undef` as default for string/path options.
- refactor: replace non-idiomatic `eq '0'`, `ne 0`, etc., with standard truthiness checks.
- refactor: replace "master"/"slave" terminology with "source"/"replica" for cultural sensitivity (#888).
- chore: automated project maintenance and cleanup (extracted `RULES.md`, `MEMORY_DB.md`, `TESTS.md`).
- chore(deps): update docker/setup-buildx-action action to v4.
- chore(deps): update docker/build-push-action action to v7.
- chore(deps): update docker/login-action action to v4.
- chore(deps): update softprops/action-gh-release action to v3.

2.8.40 2026-02-15





- feat: overhaul InnoDB Redo Log Capacity logic to consider RAM size and workload writes.
- feat: add support for `innodb_dedicated_server` detection in Redo Log diagnostics.
- feat: implement multi-cloud autodiscovery for AWS RDS/Aurora, GCP Cloud SQL, Azure (Flexible/Managed), and DigitalOcean.
- feat: add granular SSL/TLS security checks (certificate expiration, remote user SSL enforcement).
- feat: add infrastructure-aware tuning (SSD/NVMe vs HDD detection and architecture reporting).
- test: add comprehensive unit test suite for core logic coverage (InnoDB, MyISAM, Query Cache, Stats).
- test: add dedicated unit test for cloud discovery logic (tests/cloud_discovery.t).
- refactor: replace massive system calls (awk, grep, uname, getconf, sysctl) with native Core Perl functions for Linux.
- fix: resolve MySQL 9.x compatibility issues and SQL execution regressions (RC 256).
- chore: add Daniel Lewart(@lewart3) to contributors list.
- chore: remediate Arbitrary File Write vulnerability in tmp (GHSA-52f5-9888-hmc6) by forcing update to 0.2.4+ via npm overrides.
- chore: bump version to 2.8.40.

2.8.39 2026-02-15





- feat: implement authentication plugin security checks to detect insecure or deprecated plugins like mysql_native_password and sha256_password.
- feat: add MySQL 9.x readiness diagnostics for eliminated authentication methods.
- feat: update MariaDB recommendations to suggest ed25519 and unix_socket for enhanced security.
- test: add integrated test suite for authentication plugin auditing (tests/auth_plugin_checks.t).
- feat: detect removed InnoDB variables in MariaDB and MySQL and provide actionable recommendations.
- test: add regression test for MariaDB and MySQL removed InnoDB variables (tests/removed_innodb_vars.t).
- fix: prevent creation of unauthorized directory "0" when --dumpdir is not explicitly set or set to 0 (Issue #20).
- fix: robust, version-agnostic detection of password column in mysql.user via schema inspection (Issue #22).
- fix: refactor mysql_setup to correctly handle --defaults-file and --defaults-extra-file with credentials (Issue #605).
- fix: resolve MariaDB socket authentication regression and restore automatic credential discovery (Issue #875).
- fix: remediate Prototype Pollution vulnerability in lodash (CVE-2021-23341) by forcing update to 4.17.23.
- refactor: replace massive system calls (awk, grep, uname, getconf, sysctl) with native Core Perl functions for Linux.
- feat: implement native parsing for /proc/cpuinfo, /proc/meminfo, /proc/sys/vm/swappiness and /etc/resolv.conf.
- feat: add support for --login-path in CLI metadata and mysql_setup for enhanced authentication flexibility.
- refactor: optimize CPU core count, logical CPU detection, and OS memory setup for local environments.
- refactor: use POSIX::uname and POSIX::sysconf for standardized system and architecture reporting.
- test: add reproduction test for authentication discovery chain (tests/issue_875_regression.t).
- test: add comprehensive test suite for password column detection (tests/repro_issue_22.t).
- test: add reproduction test for credentials and defaults files handling (tests/repro_issue_605.t).
- feat: add automatic detection of systemd journal and syslog fallbacks for MariaDB/MySQL logs (Issue #440).
- test: add verification suite for syslog and systemd journal detection (tests/syslog_journal_detection.t).
- chore: bump version to 2.8.38.

2.8.36 2026-02-13





- fix: migrate CI workflows to native GitHub services to resolve Docker API version mismatch.
- fix: modernize release workflow using softprops/action-gh-release@v2.
- fix: enhance Docker publishing with Buildx setup for reliable multi-platform builds.
- fix: robust, version-agnostic detection of password column in mysql.user via schema inspection (Issue #22).
- fix: correct regression in tests/test_issue_875.t by updating database mocks.
- test: add comprehensive test suite for password column detection (tests/repro_issue_22.t).
- test: add reproduction test for Performance Schema disabled diagnostic (tests/repro_pfs_disabled.t).
- fix: prevent creation of directory "0" when --dumpdir is not specified or set to 0 (Issue #20).
- docs: fix broken endoflife.date links in README files (Issue #877, credit @FabioPedretti).
- docs: fix broken endoflife.date links in README files (Issue #877, credit @FabioPedretti).
- test: add reproduction test for Performance Schema disabled scenario (repro_pfs_disabled.t).
- ci: fix Docker API mismatch in GitHub Actions by migrating to native services.
- feat: make Storage Engine Statistics output deterministic by @lewart3 (Issue #26).
- feat: make Storage Engine Statistics output deterministic by @lewart3 (Issue #26).

2.8.35 2026-02-02





- feat: modernize version check using `HTTP::Tiny` with robust fallback to `curl`/`wget` (PR #18 and #17).
- feat: integrate `perltidy` in `release-preflight` workflow and enforce script formatting (issue #19).
- fix: resolve inaccurate `innodb_log_file_size` recommendations caused by integer rounding (issue #770).
- fix: ensure percentage returns 100.00% instead of 0% on idle or fresh servers, preventing unwarranted `innodb_log_buffer_size` recommendations (issue #783).
- docs: replace generic `SECURITY.md` template with project-specific policy and contact info (Issue #771, credit @bfontaine).
- style: run `perltidy` on `mysqltuner.pl` to ensure code consistency.
- test: add dedicated unit test `tests/test_version_regex.t` for version extraction verification.
- test: add regression test `tests/issue_770.t` to verify `innodb_log_file_size` recommendation precision.
- test: add regression test `tests/issue_783.t` to verify `innodb_log_buffer_size` recommendation on idle servers.

2.8.33 2026-01-31





- fix: improved cPanel/Flex detection and refined `skip-name-resolve` recommendation (issue #863).
- test: add enhanced unit test `tests/issue_863_enhanced.t` for cPanel detection verification.
- docs: consolidate project governance rules and resolve backwards compatibility contradiction (00_constitution.md, 03_execution_rules.md).
- style: promote session-discovered rules to Tier 04 Best Practices and reset `remembers.md`.

- feat: add automated validation (regex/coderef) for CLI options like `--port` and `--defaultarch`.
- feat: implement option implications (e.g., `--feature` implies `--verbose`) in metadata.
- feat: add SSL/TLS security checks for missing configuration, insecure protocols (TLSv1.0, TLSv1.1), and secure transport enforcement.
- feat: add automated detection of current session encryption status.
- feat: add observability warning and explicit recommendation when `performance_schema` is disabled.
- fix: resolve numeric comparison warnings and prevent full workstation path leakage in CLI output.
- fix: resolve contradictory key_buffer_size recommendations by adding a usage threshold to the increase recommendation (issue #774).
- test: add unit test `tests/cli_validation.t` for comprehensive option validation verification.
- test: add unit test `tests/ssl_tls_validation.t` for comprehensive SSL/TLS verification.
- test: add unit test `tests/pfs_observability.t` to verify `performance_schema` diagnostics.
- test: add unit test `tests/issue_774.t` to verify key_buffer_size recommendation logic.
- docs: cleanup MongoDB and PostgreSQL references from `ROADMAP.md` and README files.
- refactor: implement metadata-driven CLI option parsing to centralize defaults, validation, and documentation.

2.8.32 2026-01-30





- feat: remove `--skippassword` from test laboratory to enable security checks.
- fix: resolve false positive weak password warnings on MariaDB socket authentication (issue #875) and prevent dictionary corruption by silencing `curl`/`wget` output.
- test: add unit test [tests/test_issue_875.t](file:///tests/test_issue_875.t) to verify socket authentication detection.
- style: enforce artifact path hygiene (hide absolute workstation paths) in agent-generated reports.
- chore: rename release manager specification to a more generic name.
- chore: update `multi-db-docker-env` and `test_db` vendors.

2.8.31 2026-01-27





- feat: add `--schemadir <path>` option to generate per-schema markdown documentation.
- feat: support independent schema documentation generation without requiring `--dumpdir`.
- feat: restructure specifications into `documentation/specifications/` (/hey-agent).
- feat: add specification for Performance Schema Error Log analysis.
- feat: add unused and redundant index checks via Performance Schema (sys schema) with recommendations and modeling findings.
- feat: modernize CVE retrieval script `build/updateCVElist.pl` with NVD API 2.0 (JSON-based) (Fix #867).
- feat: implement SQL modeling best practice checks (Primary Keys, Foreign Keys, Naming Conventions, Data Types).
- feat: add MySQL 8.0+ specific modeling checks (JSON indexing, Invisible Indexes).
- fix: resolve CLI option ambiguity and duplicate specification errors via unified Getopt::Long binding.
- fix: resolve tab delimiter mismatch in `tests/sql_modeling.t` mock data.
- fix: noisy system command failures when absolute paths are used for whitelisted commands (issue #874).
- fix: resolve syntax error and Perl compilation warnings in `mysqltuner.pl`.
- fix: ensure shell commands (pipes, redirections) work correctly in containers using `sh -c`.
- test: add unit test `tests/schemadir.t` to verify schema documentation logic.
- test: add unit test [tests/index_pfs_checks.t](file:///tests/index_pfs_checks.t) for Performance Schema index verification.
- test: add unit test [tests/sql_modeling.t](file:///tests/sql_modeling.t) for comprehensive schema analysis verification.
- ci: update `build/test_envs.sh` with `Schemadir` test scenario and fix logic ordering.
- ci: establish formal "Advanced Test Log Auditing" protocol and anomaly tracking.
- ci: enhance lab reports with integrated `execution.log` and collapsible panels for better readability.
- ci: harden testing suite with rigorous return code checking across all test modes (lab, container, remote).
- ci: improve laboratory error reporting to generate diagnostic reports even on startup failures.
- ci: verify MySQL 8.0 integration post-CLI refactoring.
- ci: reintroduce CVE analysis in Dockerfile with `--cvefile` support.
- ci: cleanup all `examples/` and execute full LTS test suite (MySQL, MariaDB, Percona).
- ci: update package.json test script and create remember workflow.
- ci: consolidate testing laboratory scripts into unified [build/test_envs.sh](file:///build/test_envs.sh) and update Makefile.
- chore: uncomment examples directory in .gitignore.
- chore: bump version to 2.8.31.
- docs: formalize tracking of Makefile and build script changes
- docs: formalize test and ci requirements in Changelog and rules
- docs: update Changelog and relax rules for docs-only updates
- chore: decommission MySQL 5.7 from testing laboratory and build scripts.

2.8.30 2026-01-24





- feat: auto-generate `raw_mysqltuner.txt` report in `dumps/` directory when using `--dumpdir`
- feat: add InnoDB transaction isolation levels and metrics (active count, longest duration)
- feat: add MariaDB innodb_snapshot_isolation detection and recommendation
- feat: implement robust container transport support (--container)
- feat: skip kernel tuning recommendations in container mode or when running in Docker
- feat: dynamic MySQL/MariaDB client detection in containers/remote hosts
- feat: automatic database password retrieval from container environment (MYSQL_ROOT_PASSWORD/MARIADB_ROOT_PASSWORD)
- fix: incorrect skip-name-resolve recommendations for cPanel systems (issue #863)
- docs: synchronize all README files with authentication mismatch troubleshooting guide
- ci: enhance `build/test_envs.sh` to capture and link all infrastructure logs (Docker start, DB injection, container logs, inspect data) in HTML reports for full audit traceability
- ci: make HTML reports self-sufficient by embedding logs directly and reordering sections
- ci: implement tripartite testing scenarios (Standard, Container, Dumpdir) per configuration with horizontal scenario selector in HTML reports
- ci: normalize HTML log panels with consistent Raw/Log links and improved UI layout
- ci: harden laboratory execution script with rigorous return code checking and log portability (copy vs symlink)
- ci: automate cleanup of `examples/` directory to keep only the 10 most recent results
- ci: add `/examples-cleanup` workflow for manual laboratory maintenance
- ci: implement automated technical release notes system via `build/release_gen.py` and `/release-notes-gen` workflow
- ci: add automated `.agent/README.md` synchronization via `build/doc_sync.py` and `/doc-sync` workflow
- test: add unit test tests/innodb_isolation.t for new transaction metrics
- test: add regression test tests/repro_issue_863.t for cPanel name resolution logic
- test: add unit test tests/test_issue_874.t to verify system command whitelisting and unix_socket logic
- test: add unit test tests/issue_869.t to verify InnoDB chunk breakdown on MariaDB 11.4+ (issue #869)
- test: validate MySQLTuner compatibility with MariaDB 11.8 (detected 11.8.5)

2.8.29 2026-01-24





- fix: synchronize all version occurrences in mysqltuner.pl and update release workflows (issue #15)
- feat: add version consistency check to release-preflight and git-flow workflows
- docs: update copyright years to 2026
2.8.28 2026-01-22





- feat: ajoute l'option --no-pfstat pour la partie performance schema
- feat: ajoute l'option --no-colstat pour la partie colonne stat
- fix: skip innodb_buffer_stats during sys schema dump to avoid performance issues

2.8.27 2026-01-18





- refactor: replace massive raw backtick usage with execute_system_command wrapper for better security and compliance (Compliance Sentinel)

2.8.26 2026-01-18





- fix: inverted replication command logic causing wrong SQL on MySQL 8.0+/MariaDB 10.5+ (issue #553)
- feat: add MySQL/MariaDB version detection to prevent version number conflicts in replication logic
- test: add comprehensive test suite (test_issue_553.t) for replication command compatibility
- chore: bump version to 2.8.26

2.8.24 2026-01-18





- fix: improve MariaDB 11+ detection by checking version_comment (issue #869)
- fix: handle innodb_buffer_pool_chunk_size=0 (autosize) in MariaDB 10.8+ (#869)
- chore: bump version to 2.8.24

2.8.23 2026-01-18





- feat: add --ignore-tables CLI option to filter specific tables from analysis (#749)
- chore: bump version to 2.8.23

2.8.22 2026-01-18





- feat: update all repository links from 'major' to 'jmrenouard' (issue #410)
- docs: add Changelog information and Useful Links to all README files (issue #411)
- feat: improve thread_pool_size recommendations based on logical CPU count (issue #404)
- feat: suggest enabling thread pool for servers with max_connections >= 512 (issue #404)
- fix: hide ThreadPool metrics when thread pool is not enabled to avoid noise (issue #404)
- feat: add logical_cpu_cores function to accurately detect threads including HT
- chore: bump version to 2.8.22

2.8.21 2026-01-18





- fix: remove contradictory query_cache_limit recommendation when disabling query cache (issue #671)
- fix: cap join_buffer_size recommendation at 4MB and prefer index optimization (issue #671)
- chore: bump version to 2.8.21

2.8.20 2026-01-18





- feat: add automated regression test for forcemem MB interpretation (issues #780, #810)
- chore: bump version to 2.8.20

2.8.18 2026-01-18





- feat: add --max-password-checks option to limit dictionary checks (default: 100)
- fix: ensure Machine type is reported as 'Container' when --container option is used
- chore: bump version to 2.8.18

2.8.17 2026-01-18





- feat: implementation of issue #403 to check weak passwords on MySQL 8.0+ and flush hosts every 100 attempts
- chore: bump version to 2.8.17

2.8.16 2026-01-18





- chore: bump version to 2.8.16

2.8.15 2026-01-18





- feat: update all GitHub links from 'major' to 'jmrenouard' organization
- feat: refactor plugin information to filter ACTIVE status and display specific columns grouped by type
- chore: bump version to 2.8.15

2.8.13 2026-01-18





- docs: add Useful Links section to all README files (English, French, Russian, Italian)
- chore: bump version to 2.8.13

2.8.12 2026-01-17





- feat: update is_docker() to detect containerd and podman runtimes
- chore: bump version to 2.8.12

2.8.11 2026-01-17





- docs: update INTERNALS.md with information about Cloud, SSH, Containers, and Plugins
- chore: bump version to 2.8.11

2.8.10 2026-01-17





- feat: add dates and commands to log files in test_envs.sh
- feat: add separators (=) at the end of log files in test_envs.sh
- chore: synchronize version strings across script, POD, and version file

2.8.9 2026-01-17





- feat: improve container log detection by excluding proxy containers (traefik, haproxy, maxscale, proxy)
- feat: prioritize database-related container names (mysql, mariadb, percona, db, database)
- chore: bump version to 2.8.9

2.8.8 2026-01-17





- feat: add -d/--database parameter to test_envs.sh to tune specific databases
- feat: add -c/--configs parameter to test_envs.sh for easier configuration selection
- feat: add timestamps to major steps in test_envs.sh logs
- feat: add execution header to test_envs.sh output showing the full command
- chore: bump version to 2.8.8

2.8.7 2026-01-17





- docs: add standardized comment headers to all build shell scripts
- chore: synchronize version strings across script, POD, and version file
- fix: ensure version consistency between Changelog and CURRENT_VERSION.txt

2.8.6 2026-01-17





- feat: add Plugin Information section and --plugininfo flag (#794)
- fix: memory calculation bug in system_recommendations (1.5GB check)
- fix: ensure forcemem is correctly interpreted and displayed as MB in os_setup
- chore: synchronize version strings across script, POD, and version file

2.8.5 2026-01-17





- fix: noisy sysctl errors for sunrpc parameters when kernel module is not loaded
- fix: refactor get_kernel_info to handle missing sysctl parameters gracefully

2.8.4 2026-01-17





- fix: database injection failing to find dump files due to incorrect working directory
- fix: ensure correct path handling for 'source' commands in employees.sql

2.8.3 2026-01-17





- feat: detect docker/podman environment and automatically grab logs from container if local log file is not found
- feat: add --container option to manually specify a container for log retrieval

2.8.2 2026-01-17





- fix: system command failures (ping/ifconfig/redirection) on modern Linux (Ubuntu 22.04/WSL2)
- feat: integrate external test dependencies (multi-db-docker-env, test_db) and automated employees database injection

2.8.1 2026-01-17





- fix: resilient memory checks with /proc fallback on Linux and silencing expected ps failures

2.8.0 2026-01-17





- Bump version to 2.8.0
- enhance user hostname restriction checks
- feat: Translate comments and messages in updateCVElist.py to English
- chore: ignore VS Code workspace files
- build: update Debian File::Util dependency installation
- cleanup: MariaDB and MySQL support documentation (focus on LTS)
