# AIFQ Site Review Changelog

## V1.9.0 — Retention & Dashboard Flow

- Promotes scan comparison into a clearer What changed since your last review module.
- Adds Last checked wording near the score.
- Improves the first-scan and all-clear copy so users understand the value of reviewing again after plugin, theme or hosting changes.
- Adds Mark as reviewed for attention findings and clusters, without changing the raw score.
- Adds a Marked as reviewed section with Show as active again.
- Reviewed findings are not counted as resolved and do not affect score deltas.
- Adds minimal severity-upgrade resurfacing for reviewed findings.
- Shortens the dashboard flow by reducing repeated finding content and using a recommended-step pointer instead of duplicating the same finding.
- Moves Copy Summary and developer/host handoff actions under Recommended steps, so the handoff happens after users see the suggested actions.
- Adds a compact All findings by category selector with full-width category details and active issue counters.
- Allows category controls to open the relevant category and close again when the active category is clicked.
- Polishes passive sections such as Marked as reviewed, Checks that look good and About with cleaner disclosure headers and chevron controls.
- Cleans up the admin icon system around one shared icon-shell structure and removes legacy icon-specific class output.
- Applies final optical icon calibration for first-run feature cards, score rows, category tabs and the Local-first assurance card.
- No new checks, score model changes, scheduled scans, handoff workflow state, notes, full history, System Blueprint, external calls, telemetry, Pro features, AI, PageSpeed, PDF export or automatic fixes.

## V1.8.0 — UX, Accuracy & Handoff Foundation

- Redesigns the scan dashboard around clearer briefing sections, recommended steps, top opportunities and a more prominent Already in good shape section.
- Introduces calmer finding cards with improved severity styling, neutral Best handled by labels and better expanded details.
- Adds cluster-aware presentation for complex plugin setup and WooCommerce background task signals, while keeping represented found signals visible in expanded details.
- Improves Since last scan comparison logic so cluster presentation changes do not appear as false new or resolved findings.
- Makes Copy Summary and developer/host messages cluster-aware.
- Preserves v1.7.1 XML-RPC signal accuracy and interaction polish.
- Replaces the category/status icon set with selected inline Lucide SVG icons for more consistent alignment.
- No external calls, telemetry, Pro features, AI, PageSpeed, PDF export or automatic fixes.

## V1.7.1 — Signal Accuracy & Interaction Polish

Focused signal-accuracy and interaction-affordance polish release.

Changed:
- Clarified the XML-RPC finding as a WordPress-side signal instead of implying confirmed external reachability.
- Added scope wording that hosting, firewall or security layers may still block XML-RPC before it is reachable from outside.
- Improved hover, focus and cursor affordance for expandable result sections, detail controls and scan navigation interactions.
- Added clearer keyboard focus styling for interactive scan-result controls.
- Updated readme, POT metadata and admin.js version comment.

Not changed:
- No new checks.
- No detection threshold changes.
- No scoring model changes.
- No priority or cluster changes.
- No external calls, telemetry, Pro features, AI, PageSpeed or webhooks.
- No database/schema changes.

## V1.7.0 — Clarity & Handoff Copy

Focused copy and score-framing release.

Changed:
- Improved score framing so the score is described as based on setup and configuration, not as a live speed test or security audit.
- Reduced panic language around low scores and setup signals.
- Clarified Setup health wording as configuration and complexity signals, not live page-speed measurement.
- Reworded many-active-plugin findings so plugin count is presented as a contextual maintenance signal, not an automatic problem.
- Reworded WooCommerce/plugin-count and heavier-plugin copy to be calmer and more context-aware.
- Improved Copy Summary and developer/host handoff wording.
- Updated the readme Installation section to show normal WordPress.org dashboard installation first, with manual installation as an alternative.
- Updated translation template strings for the revised copy.

Not changed:
- No new checks.
- No detection threshold changes.
- No scoring model changes.
- No priority or cluster changes.
- No UI, CSS or JavaScript behavior changes.
- No external calls, telemetry, Pro features, AI, PageSpeed or webhooks.

## V1.6.0 — WordPress.org Review Fix

Focused review-fix release after WordPress.org prereview feedback.

Changed:
- Final review polish: updated the readme translation-status version from 1.5.0 to 1.6.0.
- Renamed the plugin to AIFQ Site Review.
- Changed package folder, main file, text domain and slug references to `aifq-site-review`.
- Replaced previous internal prefixes with unique `aifq_sr_`, `aifq-sr-`, `AIFQ_SR_` and `aifqSrI18n` prefixes.
- Removed the unnecessary direct include of `wp-admin/includes/theme.php`.
- Kept Plugin URI and Author URI omitted because no public website is available yet.

Not changed:
- No new checks.
- No scoring changes.
- No priority changes.
- No cluster changes.
- No product/UX redesign.
- No external calls or telemetry.

## V1.5.1 — Plugin Check Cleanup

Focused WordPress.org submission cleanup.

Changed:
- Submission metadata polish: removed Plugin URI and Author URI because no public website is available yet.
- Submission metadata polish: removed Author URI because WordPress.org requires Plugin URI and Author URI to be different when both are present.
- Final Plugin Check polish: shortened the 1.5.0 upgrade notice and documented intentional admin notice/table-name warning suppressions.
- Removed manual `load_plugin_textdomain()` usage because WordPress.org loads plugin translations automatically.
- Added translator comments for placeholder strings.
- Made internal SVG/UI markup escaping explicit for Plugin Check.
- Added safe ignore comments for intentional local diagnostic database queries.
- Removed the root `privacy.md` file from the plugin package; privacy details remain in `readme.txt`.
- Shortened the readme short description and added a compact 1.5.1 upgrade notice.

Not changed:
- No new checks.
- No scoring changes.
- No priority changes.
- No cluster changes.
- No CSS or JavaScript changes.
- No external calls or telemetry.

## V1.5.0 — AIFQ Site Review Rename & WordPress.org Readiness

Focused public-readiness release.

Changed:
- Submission readiness polish: updated the WordPress.org contributor slug to `aifq` and aligned the screenshot list with the final screenshot package.
- Final rename polish: changed the browser-visible admin notice query parameter from `aifq_sr_notice` to `aifq_sr_notice`.
- Fixed rename regression where admin assets and post-scan redirects still referenced the old admin page slug.
- Renamed the public product/plugin to AIFQ Site Review.
- Repositioned AIFQ Site Review around the core promise: what needs attention, why it matters, and who should handle it.
- Updated hero subtitle to “The clean second opinion for WordPress.”
- Rewrote the first-run card to emphasize handoff clarity instead of only check categories.
- Renamed copy buttons to “Copy my summary” and “Message for my developer/host.”
- Updated About copy with clear support boundaries.
- Rewrote readme positioning, FAQ, screenshot list, support boundaries and changelog for WordPress.org readiness.

Not changed:
- No new checks.
- No scoring changes.
- No cluster changes.
- No CSS redesign.
- No external calls or telemetry.

## V1.4.4 — Debug Cluster PoC

Small clarity/compression release.

Changed:
- Added a production debug/development cluster that combines related debug findings into one clearer attention point when WP_DEBUG, SAVEQUERIES and a non-empty WordPress error log are active together.
- Added translated title, preview, recommendation and natural issue text for the combined finding.
- Polished the debug-cluster detail text so signals are shown as a concise Found list instead of repeated prose.
- Final polish: made debug-cluster signal labels translatable and rendered the Found list from structured signal data with a safe old-scan fallback.
- Updated readme, changelog, POT and admin.js version comment.

Not changed:
- No new checks.
- No new UI sections.
- No CSS changes.
- No scoring model rebuild.
- No external calls or telemetry.

## V1.4.3 — Full Copy Audit & Beginner Clarity Pass

Focused copy/safety release after the v1.4.2 Detection Quality build.

Changed:
- Made debug-log guidance safer by pointing users to a developer or hosting provider instead of suggesting self-service log review/removal.
- Added backup-first wording to revision cleanup.
- Added live-site warning to plain permalink guidance.
- Clarified SAVEQUERIES in beginner-friendly language.
- Updated low PHP memory guidance to point to the hosting provider.
- Removed `Best handled by` lines from the external developer/host message while keeping them in the UI.
- Reduced object-cache/drop-in jargon in user-facing copy.
- Clarified XML-RPC, no-security-plugin and WooCommerce email-delivery wording.
- Updated readme positioning and privacy wording.

Not changed:
- No new checks.
- No detection logic changes.
- No scoring or priority changes.
- No CSS or layout changes.
- No external calls, telemetry, Pro features, reports or scan history.

## V1.4.2 — Detection Quality

Selective detection-quality release.

Changed:
- Added `SAVEQUERIES` detection with production/development context.
- Added a default `admin` username signal with safe developer-handled guidance.
- Added public user registration as a suggestion, not an attention point.
- Added WooCommerce email-delivery opportunity when no known transactional mail plugin is active.
- Added WooCommerce Action Scheduler failed/backlog signals using safe status-count queries only.
- Added multiple page builders detection using exact active plugin slugs.
- Added selected passed checks for no default admin username and public registration disabled.

Not changed:
- No external calls.
- No telemetry.
- No WooCommerce order, customer or payment data scanning.
- No user list scanning beyond checking whether the exact username `admin` exists.
- No Action Scheduler payload/args reading.
- No SMTP/image/translation overlap expansion.
- No Elementor CSS print method.
- No scan history, reports, Pro features or broad detection expansion.

## V1.4.1 — Priority & Copy Clarity Polish

Priority and copy clarity polish release after Chaos Lab testing.

Changed:
- Improved recommended-step priority so contextual setup problems such as WooCommerce caching complexity, Elementor/WooCommerce complexity, large autoloaded data and large images can outrank generic hardening checks.
- Clarified object-cache copy: object caching is separate from normal page caching plugins and is not always needed.
- Made caching wording more conservative by displaying “No clear caching layer detected” with a hosting/server-cache caveat.
- Strengthened autoload/database safety wording to warn against quick delete-all cleanup.
- Added extra context when Setup health is very low, explaining that it reflects setup/configuration complexity and is not a live speed test.

Not changed:
- No new checks.
- No broad detection expansion.
- No scoring model changes.
- No new features.
- No CSS refactor.
- No monolith split.
- No external calls, telemetry or custom database tables.

## V1.4.0 — Communication & Targeted Detection

Communication and targeted detection release.

Changed:
- Added `Best handled by` labels for attention points and improvement opportunities.
- Added a copyable message for developer/host handoff based on the current scan.
- Added WordPress environment type context via `wp_get_environment_type()` to reduce false positives on staging/development/local sites.
- Added a `WP_DEBUG_DISPLAY` check for live-site error display.
- Added a Site URL / Home URL mismatch check as a low-severity setup signal.
- Added an object-cache drop-in opportunity for heavier or WooCommerce setups.
- Added object-cache and environment signals to the scan profile where relevant.

Not changed:
- No broad detection expansion.
- No Developer Copy Summary variant.
- No scan history.
- No scoring model changes beyond the new targeted findings.
- No internal category-key changes.
- No monolith split.
- No external calls, telemetry or custom database tables.

## V1.3.6 — Maintenance & Copy Consistency

Maintenance and copy consistency patch.

Changed:
- Fixed opportunity review-time translation coverage in `suggestion()`.
- Aligned resolved-opportunity wording with the existing “appears resolved” scan comparison language.
- Updated the first-scan comparison prompt to encourage scanning again after changes.
- Removed unused internal helper code (`get_smart_connections()` and `module_summary_text()`).
- Removed an unused `$improvement_possible` variable.
- Fixed a minor passed-check title map mismatch for readable permalinks.

Not changed:
- No design changes.
- No scoring changes.
- No detection changes.
- No internal category-key changes.
- No CSS refactor.
- No monolith split.
- No external calls, telemetry or custom database tables.

## V1.3.5 — Micro Polish
Date: 2026-06-01

### Changed
- Shortened the inline score context below the score.
- Changed the top action label to `Recommended next step` when no important issues are present.
- Made `See all findings below` more action-like with a down arrow and subtle action styling.
- Softened the repeated current-signal line under the recommended action.
- Improved good-score summary wording for remaining category signals.
- Added small issue-meta spacing polish for the `Review time:` row.

### Not changed
- No internal category key changes.
- No scoring changes.
- No detection changes.
- No new features.
- No CSS refactor or monolith split.
- No external calls, telemetry or custom database tables.

## V1.3.4 — UX Clarity Polish
Date: 2026-06-01

### Changed
- Renamed visible category labels from `Performance` to `Setup health` and from `Security` to `Security signals`. Internal category keys remain unchanged for old-scan and score compatibility.
- Added inline score context near the score to clarify that the score is a practical indication, not a guarantee or live speed test.
- Removed the prominent potential-points card from the score area.
- Moved the recommended first step higher in the status card and removed the duplicate `Notable` block.
- Simplified the top summary count row and replaced the remaining-attention-count message with `See all findings below.`
- Added a `Review time:` label before issue-card time estimates.
- Improved selected user-facing copy, including the PHP passed-check wording and resource/checkout wording.
- Added safer developer/host guidance to technical recommendations such as `wp-config.php`, PHP version, server caching and file-permission items.

### Not changed
- No internal category key changes.
- No scoring changes.
- No detection changes.
- No CSS refactor or monolith split.
- No new features.
- No external calls, telemetry or custom database tables.

## V1.3.3 — Natural Issue Text i18n Foundation
Date: 2026-06-01

### Changed
- Wrapped natural issue text prose in `render_natural_issue_text()` with gettext.
- Added reusable translated labels for `Advice:` and `Technical detail:`.
- Kept HTML structure outside translation strings and escaped translated prose with `esc_html__()`.
- Updated the translation template with the new natural-text msgids.

### Not changed
- No design changes.
- No scoring changes.
- No detection changes.
- No copy/content changes.
- No CSS consolidation or monolith split.
- No external calls, telemetry or custom database tables.


## V1.3.2 — Plain-string i18n Foundation
Date: 2026-06-01

### Changed
- Wrapped finding recommendation strings in `display_issue_recommendation()` with gettext.
- Wrapped issue preview strings in `issue_preview()` with gettext.
- Wrapped helper explanation strings in `issue_simple_explanation()` and `issue_if_ignored()` with gettext.
- Wrapped first-action reason strings in `short_action_reason()` with gettext.
- Added explicit recommendation cases for `inactive_plugins_soft` and `inactive_themes_soft`.
- Updated the translation template with the new plain-string msgids.

### Not changed
- No design changes.
- No scoring changes.
- No detection changes.
- No copy/content changes beyond wrapping existing strings and adding missing key coverage for existing recommendation text.
- No `render_natural_issue_text()` i18n; that remains deferred because it contains HTML.
- No CSS consolidation or monolith split.
- No external calls, telemetry or custom database tables.


## V1.3.1 — Finding-title i18n Foundation
Date: 2026-06-01

### Changed
- Wrapped attention-point title strings in `display_issue_title()` with gettext.
- Wrapped first-action title strings in `short_action_title()` with gettext.
- Updated the translation template with the new title strings.

### Not changed
- No design changes.
- No scoring changes.
- No detection changes.
- No copy/content changes.
- No CSS consolidation or monolith split.
- No external calls, telemetry or custom database tables.


## V1.3.0 — Hardening and Maintenance
Date: 2026-06-01

### Changed
- Removed the unused `score_gain` field from normalized scan items.
- Removed the unused `score_gain` parameter from issue and suggestion creation.
- Rendered issue time estimates through `issue_time_estimate()` instead of reading stored scan text directly.
- Added gettext wrappers around issue time-estimate strings.
- Split the shared `elementor_addons` key into `elementor_addons_many` and `elementor_addons_several`.
- Preserved old-scan compatibility by mapping stored legacy `elementor_addons` items to the new key based on their saved title.

### Not changed
- No design changes.
- No scoring changes.
- No new detection features.
- No CSS consolidation or monolith split.
- No external calls, telemetry or custom database tables.


## V1.2.10 — Minor Polish
Date: 2026-06-01

### Changed
- Added `Domain Path: /languages` to the plugin header.
- Removed the unused internal `render_area_change_pills()` method.
- Added `no_cache_layer` to the conflict-group map for consistency.

### Not changed
- No design changes.
- No scan logic changes.
- No scoring changes.
- No external calls, telemetry or custom database tables.

## V1.2.9 — Copy Summary Call-site Fix
Date: 2026-06-01

### Fixed
- Updated the `build_copy_summary()` call site to match the 1.2.8 signature.
- Restored correct Copy Summary data for Since last scan and Main attention point.

### Not changed
- No design changes.
- No scan logic changes.
- No scoring changes.
- No external calls, telemetry or custom database tables.

## V1.2.8 — WordPress.org Polish
Date: 2026-06-01

### Changed
- Made Copy Summary strings translation-ready with gettext wrappers.
- Added FAQ, Screenshots and Upgrade Notice sections to readme.txt.
- Improved `title_to_key()` fallback to use a unique sanitized key instead of `generic`.
- Removed a duplicate transient deletion in the scan handler.
- Fixed `memory_to_mb()` indentation.
- Added a basic `languages/aifq-site-review.pot` translation template.

### Not changed
- No design changes.
- No scan logic changes.
- No scoring changes.
- No external calls, telemetry or custom database tables.

## V1.2.7 — RC Regression Fix
Date: 2026-06-01

### Fixed
- Added `No caching plugin detected for WooCommerce` to the stable key map as `woo_no_cache`.
- Kept the legacy `WooCommerce without caching` title mapped to `woo_no_cache` for old scan compatibility.
- Bumped `Tested up to` to WordPress 7.0 after testing.

### Not changed
- No design changes.
- No new scan checks.
- No external calls, telemetry or custom database tables.

## V1.2.6 — Release Candidate Cleanup
Date: 2026-06-01

### Fixed
- Rewrote public package readmes under the AIFQ Site Review name.
- Rewrote privacy.md so it no longer describes the plugin as an internal baseline.
- Softened WooCommerce cache detection to "No caching plugin detected for WooCommerce" and lowered it to medium severity.
- Removed WooCommerce cache absence from the high-confidence list.
- Lowered large-image sample severity from high to medium.
- Reordered first-action priority so HTTPS and core updates rank above WooCommerce cache conflicts.
- Aligned backup-related passed-check key mapping.

### Not changed
- No design changes.
- No external calls, telemetry or custom database tables.
- No scoring refactor; the broader score_gain cleanup is intentionally postponed to avoid score regressions in this RC cleanup patch.

## V1.2.5 — Public Release Readiness
Date: 2026-06-01

### Fixed
- Improved autoloaded-options detection for modern WordPress autoload values, including `auto`.
- Included multisite network-active plugins in plugin detection.
- Made file-editor detection consistent with `DISALLOW_FILE_MODS`.
- Improved XML-RPC detection by respecting WordPress-level filters and lowered its first-action priority.
- Made the large-image media sample deterministic by ordering by newest attachment first.
- Renamed the backup opportunity to "No known backup plugin found".
- Stored new scan timestamps as Unix timestamps while preserving support for legacy date strings.

### Not changed
- No design changes.
- No new external calls, telemetry or custom database tables.
- No PHP/WordPress requirement changes.

## V1.2.4 — Trust & Detection Accuracy
Date: 2026-06-01

### Fixed
- Added a stable key for the “No cache layer detected” attention point.
- Corrected Elementor add-on counting so Elementor core and Elementor Pro are not counted as add-ons.
- Excluded the required parent theme of an active child theme from inactive theme counting.
- Made backup, update, large-image and HTTPS copy more conservative and evidence-based.
- Lowered XML-RPC from medium to low severity and clarified the detection limitation.
- Cleaned release metadata and version comments.

### Not changed
- No design changes.
- No new checks beyond detection accuracy fixes.
- No external calls, telemetry or custom database tables.
- PHP/WordPress baseline requirements were not changed.

## V1.2.3 — Category Clarity Cleanup
Date: 2026-05-31

### Changed
- Renamed the Health display label to Site basics while keeping the internal category key stable.
- Simplified category subtitles to focus on attention points and improvement opportunities.
- Removed passed-check details from the expanded category accordions.
- Kept the global Looks good section as the single place for passed checks.
- Updated the category-section intro copy.

### Not changed
- No scan logic changes.
- No scoring changes.
- No issue detection changes.
- No storage/comparison changes.
- No external calls, telemetry or custom database tables.

## V1.2.2 — Since Last Scan Area-Pill Fix
Date: 2026-05-31

### Fixed
- Fixed the Since last scan area-score deltas rendering as concatenated text instead of separate micro-pills.
- Area deltas now render as explicit escaped pill markup and use a narrowly scoped CSS safety block.

### Not changed
- No scan logic changes compared with 1.2.1.
- No design/layout changes beyond restoring the intended 1.1.10/1.2 area-pill styling.
- No external calls, telemetry or custom database tables.

## V1.2.1 — Smarter Scan Insights Cache Refresh
Date: 2026-05-31

### Changed
- Same functional 1.2.0 rebuild from the 1.1.10 visual baseline.
- Version bumped to 1.2.1 so WordPress/browser caches reload the corrected admin CSS after the earlier invalid 1.2.0 test build.

### Not changed
- No scan logic changes compared with the rebuilt 1.2.0.
- No design changes compared with the 1.1.10 visual baseline.
- No external calls, telemetry or custom database tables.

## V1.2.0 — Smarter Scan Insights
Date: 2026-05-31

### Changed
- Fixed score comparison copy for decreased and unchanged scores.
- Added a compact View changes expandable in the Since last scan block.
- View changes uses previous scan data for resolved items and current scan data for new items.
- Reworked Copy Summary into a clearer briefing with main attention point, compact area scores and change details.
- Lowered inactive plugin/theme thresholds and improved inactive plugin suggestion copy.

### Not changed
- No design or layout changes from the 1.1.10 visual baseline.
- No new scan checks beyond threshold adjustments.
- No external calls, telemetry or custom database tables.

## V1.1.10 — Final Design Baseline Fix
Date: 2026-05-31

### Changed
- Restored the first-run hero to the same left-aligned/action-right structure as the post-scan dashboard.
- Kept the simplified first-run page from 1.1.9.
- Replaced the weak plugin-overlap placeholder glyph with a real inline icon.
- Made the Looks Good plus/minus control align consistently to the right.

### Not changed
- No scan logic changes.
- No scoring changes.
- No issue detection changes.
- No storage/comparison changes.
- No external calls or new tables.

## V1.1.9 — Final First-Run Design Polish
Date: 2026-05-31

### Changed
- Fixed Local-first spacing and simplified first-run helper text.
- Centered and strengthened the first-run hero while keeping the post-scan dashboard header functional.
- Hid score/about helper cards before the first scan to reduce first-run reading load.
- Added subtle visual accents to the first-run explanation cards.
- Improved score value alignment in Website status rows.
- Added slightly more spacing to collapsed issue rows.
- Rendered Since last scan area deltas as compact micro-pills.

### Not changed
- No scan logic changes.
- No scoring changes.
- No issue detection changes.
- No storage/comparison changes.
- No external calls or new tables.

## V1.1.8 — Cleanup Polish
Date: 2026-05-31

### Changed
- Removed duplicate About AIFQ Site Review privacy text and kept the checkmark list.
- Removed the competing second primary Scan website button from the first-run card.
- Removed the “Based on the latest scan” line from the score card.
- Neutralized the Looks Good expanded panel edge so it feels less like an issue detail block.
- Added a little bottom breathing room to collapsed finding rows.

### Not changed
- No scan logic changes.
- No scoring changes.
- No detection changes.
- No storage/comparison changes.
- No external calls or new tables.

## V1.1.7 — Design Polish
Date: 2026-05-31

### Changed
- Added a second Scan website CTA under the first-run explanation.
- Added a fuller Practical next steps description.
- Made Since last scan more compact and scannable.
- Restored About AIFQ Site Review privacy/local-first checkmarks.
- Made the Recommended steps / Top opportunities helper text subtler.
- Lightly improved the Good progress banner.
- Removed the period from the compact Looks Good count text.

### Not changed
- No scan logic changes.
- No scoring changes.
- No detection changes.
- No storage/comparison changes.
- No external calls or new tables.

## V1.1.6 — First Run & Copy Polish
Date: 2026-05-31

### Changed
- Replaced the minimal first-run welcome card with a clearer “What AIFQ Site Review checks” explanation.
- Added three pre-scan explanation points: Plugin overlap, Maintenance signals and Practical next steps.
- Improved local-first reassurance before the first scan.
- Moved the practical-indication disclaimer out of the hero into calmer contextual copy.
- Changed the low score label from “Stabilize first” to “Several things need attention”.
- Changed the module opportunity label from “Mostly healthy” to “Some improvements available”.
- Renamed “Detailed scan results” to “Scan results by category”.
- Renamed the Looks Good expander to “See what’s already in good shape”.
- Added a short explanation that attention points affect the score and opportunities do not.
- Updated Copy Summary to open as a practical scan briefing.

### Not changed
- No scan logic, scoring, issue detection, comparison, storage, database table or external-call changes.
- No broad CSS refactor and no dashboard redesign.

## V1.1.5 — Looks Good Layout Hotfix
Date: 2026-05-31

### Fixed
- Expanded Looks Good details now receive a wide class when there are more than 5 passed checks.
- The wide Looks Good panel now overrides older 620px single-column rules and can use the full card width.
- Passed checks display in 2 columns on wider screens and return to 1 column on smaller screens.

### Not changed
- No scan logic, scoring, issue detection, comparison, storage or external-call changes.
- No dashboard layout changes outside the expanded Looks Good panel.

## V1.1.4 — Polish Patch
Date: 2026-05-31

### Changed
- Improved "Since last scan" wording: resolved attention points now correctly read "X attention point(s) appear(s) resolved" instead of the bare "X appear(s) resolved".
- Improved "Since last scan" wording: resolved opportunities now read "X opportunity/opportunities appear(s) resolved" instead of "X no longer found".
- Updated `build_copy_summary()` to use matching improved wording.
- Looks Good expanded panel now uses a 2-column grid on wider screens when more than 5 passed checks are present. Reverts to 1 column on smaller screens.
- Updated JS and CSS file version comments.

### Not changed
- No scan logic, scoring, issue detection or copy changes.
- No new options, database tables or external calls.
- No storage logic changes.
- No dashboard layout changes outside the Looks Good panel.

## V1.1.3 — Since Last Scan
Date: 2026-05-31

### Added
- New `calculate_scan_diff()` helper that compares the latest scan with the immediately previous scan using stable issue keys.
- New `render_scan_diff()` helper that outputs a compact "Since last scan" block inside the score card.
- Copy Summary now includes a "Since last scan" section showing score delta and issue count changes.
- First-scan prompt shown when no previous scan is available yet.
- "No major changes" message shown when scans are identical.

### Changed
- `build_copy_summary()` now accepts an optional `$scan_diff` parameter.

### Not changed
- No scan logic, scoring, issue detection or copy changes.
- No new database tables or external API calls.
- No telemetry or tracking.
- No scan history dashboard or graphs.

## V1.1.2 — CSS Consolidation Pass
Date: 2026-05-31

### Changed
- Consolidated admin.css from 7155 lines to 3753 lines (47.6% reduction).
- Removed historical patch layers from versions 0.9.x and 1.0.x that were fully superseded by later final sections.
- Removed duplicate CSS blocks: hero redesign (lines 283-879), old layout patches (880-1880), SVG nuclear clamp (4495-4817), SVG artwork rollback (4818-5046), SVG markup removal fix (5047-5099), visual identity polish (3309-3630), visual polish fixes (3631-3875), SVG size fix (3876-4149), hard SVG scope fix (4150-4494).
- Added missing meta-separator rule that was in a removed section.
- Preserved exact visual output from 1.1.1 stable baseline.

### Not changed
- No scan logic, scoring, issue detection or copy changes.
- No PHP rendering changes.
- No design or layout changes.
- No privacy or data handling changes.

## V1.1.1 — Audit Cleanup Patch
Date: 2026-05-31

### Fixed
- Fixed duplicate version labels in readme.txt changelog.
- Removed internal development files from release package.
- Replaced fragile [style*="#hex"] CSS selectors with stable data-score-level attribute selectors.
- Removed duplicate deduplication call in get_first_actions().
- Added backup conflict group mapping.
- Replaced fragile hero p:nth-of-type() CSS selectors with explicit class-based selectors.

### Not changed
- No scan logic, scoring, issue detection or copy changes.
- No design or layout changes.
- No privacy or data handling changes.

## V1.1.0 — Internal Audit Candidate
Date: 2026-05-31

### Status
- Internal 1.1 audit candidate.
- Based on the latest stable visual baseline.
- Intended for Claude audit before new 1.1 feature work continues.

### Changed
- Version and release metadata updated to 1.1.0.
- Audit brief added for focused review of 1.1 readiness.
- No new scan checks, scoring changes, or layout redesigns added in this build.

### Audit focus
- Runtime stability.
- CSS maintainability after 1.0.x visual iterations.
- Security/privacy and WordPress.org readiness.
- Scan data structure and future-proofing for 1.1+ work.

## 1.0.15 - Hero header flow hotfix
- Rebased on the stable 1.0.13 visual baseline instead of keeping the broad 1.0.14 CSS consolidation.
- Fixed the hero/header text overlap after scan by giving the title, subtitle, signal label, positioning line, chips and disclaimer explicit class-based grid areas.
- Kept module cards, detailed results, looks-good panel, scoring UI and scan logic untouched.


## 1.0.11 - Header signal chip grid alignment
- Targeted header signal chips only.
- Added explicit chip label class for safer styling.
- Switched hero signal chips to a strict two-column grid so icons and labels align on one center line.
- Left the four category summary cards untouched.

# 1.0.9 - Targeted Icon Alignment Fix

- Fixed header signal chip icon alignment by targeting the actual `.aifq-site-review-chip` markup.
- Fixed category summary card icon proportions and baseline alignment.
- Removed the visual dependency on the earlier generic `.aifq-site-review-signal-chip` selector for header chips.
- No scan logic, scoring, checks or copy changed.

## 1.0.7 - Icon alignment polish

- Fixed vertical alignment for SVG icons in the scan signal chips.
- Fixed category-card title icon alignment for Performance, Security, Maintenance and Health.
- Added a final scoped CSS guard for controlled AIFQ Site Review SVG sizes and line-height handling.
- No scanner, scoring, issue-ordering or privacy/data changes.

## 1.0.6 - Scoped admin canvas background cleanup

- Scoped the admin canvas background to `body.wp-admin.toplevel_page_aifq-site-review` so the visual canvas cannot bleed into unrelated WordPress admin screens.
- Consolidated duplicate `body.wp-admin` background blocks into a single final rule.
- Updated readme translation-status/version metadata to 1.0.6.

## 1.0.5 - Icon rendering and Looks Good consistency

- Reworked the small inline SVG paths to use safer, centered line artwork.
- Added a final CSS guard so controlled SVG icons can render without clipping.
- Changed the global Looks Good panel to show all passed checks instead of only the first six while still counting all checks.
- Updated version metadata to 1.0.5.


## V1.0.4 — WordPress.org Release Cleanup
Date: 2026-05-31

### Fixed
- Removed unrestricted `style` attributes from the internal `safe_ui_html()` allowlist.
- Moved helper SVG sizing/stabilization into CSS classes instead of inline styles.
- Removed unused `$label` parameter from `render_category_card()`.
- Removed unreachable Dutch severity guards from `issue_if_ignored()`.
- Removed unused `severity_icon()` method.
- Changed clean-category summary copy from “No attention points found.” to “All checks passed.”

### Not changed
- No detection changes.
- No scoring changes.
- No privacy/data changes.
- No new features.


## V1.0.3 — Runtime Layout Hotfix
Date: 2026-05-31

### Fixed
- Fixed Top opportunities list layout so opportunity titles and descriptions no longer wrap into a narrow vertical column.
- Fixed Looks good expanded panel layout so passed checks use a normal readable width again.

### Not changed
- No detection changes.
- No scoring changes.
- No privacy/data changes.
- No broad design refactor.


## V1.0.1 — Claude Audit Fixes
Date: 2026-05-31

### Fixed
- Fixed old PHP double penalty. A site now gets either the generic old PHP issue or the stronger old PHP + many updates issue, not both.
- Added a passed check for modern PHP versions.
- Fixed Elementor add-on threshold logic: 3–4 add-ons shows “several”, 5+ shows “many”.
- Removed unreachable return statement in issue_simple_explanation().
- Translated the initial “More details →” button text in PHP.
- Translated the Scan website submit button.
- Wrapped key dashboard UI strings in WordPress i18n functions.
- Wrapped the autoloaded-options SQL query in `$wpdb->prepare()`.
- Removed legacy Dutch fallback strings from display_passed_description().
- Added a safe internal wp_kses allowlist wrapper for helper-generated span/SVG output.
- Cleaned readme privacy wording, License URI, changelog order and Stable tag.

### Not changed
- No new product features.
- No scan logic changes beyond the audit bug fixes.
- No design changes.
- No scoring model refactor beyond removing the duplicate PHP penalty.
- No architecture split yet.