v2.9.2
Polish release: HTML report layout cleanup, XLSX matrix readability, and a -SaveBaseline UX papercut. One breaking change to a parameter type (see Changed).
Added
- ScoringViews section header (#835) — the scoring-tabs panel now has a proper
01c · Scoringeyebrow +Posture views by audienceh2 above it (was a "naked" tab strip with no section context). Big % number is color-coded by tier: ≥80 green, 60–79 amber, <60 red, using the theme-safe--success-text/--warn-text/--danger-textpalette across all 4 themes. New<section id="scoring">anchor enables sidebar deep-linking -BaselineLabelparameter onInvoke-M365Assessment(#809) — optional custom label paired with the new switch-form-SaveBaseline. Pre-existingauto-<timestamp>naming via-AutoBaselineis unchanged
Changed
-SaveBaselineis now a[switch](BREAKING, #809) —-SaveBaseline 'mylabel'no longer works; migrate to-SaveBaseline -BaselineLabel 'mylabel'. The bare-SaveBaselineform now auto-labels asmanual-<timestamp>. Why the breaking shape: PowerShell parameter binding does not allow a single non-switch parameter to accept BOTH the bare flag form AND a string-value form; the two-parameter shape is the only PowerShell-legal way to honor the bare--SaveBaselinerequest- Compliance Matrix XLSX
Horizoncolumn renamed toSequence(#840) — Pass-status rows now showDone(was empty) with green color-coding matching the Pass status cell. Source data unchanged so the Remediation Roadmap sheet still excludes Pass rows correctly - Permissions panel moved from top-of-report to Appendix (#834) — was wedged between the Domain rollup and findings table; now renders as a card alongside Tenant / MFA / CA in
Appendix · tenant. Theid="permissions"deep-link anchor is preserved - Sidebar Domains demoted from top-level group to collapsible sub-tree under Findings & Action (#836) — the per-domain entries are filter shortcuts into the findings table, not separate destinations, so they read more truthfully nested under FINDINGS & ACTION.
Domain posturelink under EXECUTIVE (separate destination) is preserved
Fixed
- FilterBar sticky pin no longer follows the user past the findings section (#838) —
.filter-bar-active'sposition: stickywas scoped to the App's main scroll container and stayed pinned through Roadmap, the Permissions card, and Tenant Appendix. Now gates the sticky class on the App's existing scrollspy signal (active === 'findings') so the bar releases when the user scrolls past the table. Reuses the IntersectionObserver already driving sidebar highlighting; no new event listeners