# Release Notes - v2.9.0

**Date**: 2026-07-03

## 📝 Executive Summary

```text
2.9.0 2026-07-03

- chore: automated project metadata update
- chore: remove execution.log from git repository and sync docs
- feat: recommend slow query log when disabled (#517)
- feat: update Total buffers output message format to display temptable sizing when active.
- fix: update commit process
- fix: update documentation and code
- 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.
- 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
- 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.
- 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.
- 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.
- 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
```

## 📈 Diagnostic Growth Indicators

| Metric | Current | Progress | Status |
| :--- | :--- | :--- | :--- |
| Total Indicators | 15 | 0 | 🛡️ |
| Efficiency Checks | 0 | 0 | 🛡️ |
| Risk Detections | 2 | 0 | 🛡️ |
| Information Points | 13 | 0 | 🛡️ |

## 🛠️ Internal Commit History

- docs(releases): regenerate release notes and changelog (2ce031f)
- docs(metadata): promote HTML reports and add E2E examples (30d5255)
- docs: regenerate release notes (7e1cd64)
- feat(report): add pgBadger-inspired query, lock, and temp table visual analytics to HTML report (246e0c0)
- docs: regenerate release notes (272ff7d)
- docs: regenerate release notes (093984a)
- fix(main): only recommend increasing innodb_log_buffer_size when log waits occur (1aa3eaf)
- docs: regenerate release notes (385594b)
- docs: regenerate release notes (ae41134)
- docs: regenerate release notes (6db4faf)
- docs: regenerate release notes (9865449)
- fix(main): exclude MariaDB user roles and support zero-config TLS (aee6781)
- docs: regenerate release notes (f715c47)
- docs: regenerate release notes (d46e3c8)
- docs: regenerate release notes (38ecb2f)
- docs: regenerate release notes (3b9c75a)
- docs: regenerate release notes (2cfd624)
- chore(main): add doc links in localhost warnings and support custom local subdomains (9f67656)
- docs: regenerate release notes (b74e098)
- docs: regenerate release notes (0005a69)
- chore(build): allow build scope in compliance auditor (2bba15f)
- chore(build): rewrite dev_sync and doc_sync in Perl for consistency (645c3d9)
- chore(main): hide hostname, ssl, and replication warnings on localhost (#933) (4f3e70e)
- docs: regenerate release notes (be838ab)
- docs: regenerate release notes (389c4ad)
- docs: regenerate release notes (d424fae)
- docs: regenerate release notes (1575463)
- docs: regenerate release notes (7006061)
- feat(cli): resolve remote memory, socket override, and temptable sizing issues (7e3a39c)
- test(hook): verify pre-commit hook runs tests when test files change (41abef0)
- docs: regenerate release notes (9b9e007)
- ci: optimize pre-commit hook to only run unit tests when code, tests, or dependencies are modified (596df4c)
- docs: regenerate release notes (5759b73)
- fix: update documentation and code (1008ba4)
- docs: regenerate release notes (7fd2391)
- test(lab): add unit test test_issue_810.t for issue 810 (6ece0c3)
- docs: regenerate release notes (0b5c859)
- feat: recommend slow query log when disabled (#517) (da6d437)
- docs: add LightPath as sponsor, relocate coffee button, and use star-history chart (31e3638)
- docs: update repository links to major/MySQLTuner-perl and add GitHub stars badge (4cd208e)
- docs: regenerate release notes (a754147)
- fix(main): add undefined/NULL guards to hr_num to resolve uninitialized warnings (0a87482)
- docs(roadmap): link strategic technical evolutions specification and enforce changelog staging (136a977)
- docs: regenerate release notes (abe582a)
- fix(main): address PR #931 code review feedback and enhance test validations (64c28ce)
- feat(metadata): fix test badge and update version references in READMEs (a1be73c)
- docs(metadata): remove timestamp from doc-sync generated files (4575b0a)
- fix(main): calculate query cache efficiency using Com_select on MariaDB (MDEV-4981) (780c861)
- feat(report): add verbose timings, step percentages, and snapshot summary (c23198a)
-  feat(report): implement Phase 13 sectional global indicators and KPIs (5f9cebb)
- chore: remove execution.log from git repository and sync docs (2a9b66e)
- feat(report): finalize HTML report, YAML output, and historical comparison (66ebab8)

## ⚙️ Technical Evolutions

### ➕ CLI Options Added
- `--innodb_buffer_stats_by_schema`
- `--innodb_buffer_stats_by_table`
- `--processlist`
- `--schema_auto_increment_columns`
- `--schema_index_statistics`
- `--schema_object_overview`
- `--schema_redundant_indexes`
- `--schema_table_lock_waits`
- `--schema_table_statistics`
- `--schema_table_statistics_with_buffer`
- `--schema_tables_with_full_table_scans`
- `--schema_unused_indexes`
- `--session`
- `--stage-timings`
- `--statement_analysis`
- `--statements_with_errors_or_warnings`
- `--statements_with_full_table_scans`
- `--statements_with_runtimes_in_95th_percentile`
- `--statements_with_sorting`
- `--statements_with_temp_tables`
- `--yaml`

### ➖ CLI Options Deprecated
- `--data`
- `--template`

## ✅ Laboratory Verification Results

- [x] Automated TDD suite passed.
- [x] Multi-DB version laboratory execution validated.
- [x] Performance indicator delta analysis completed.
