# Changelog ## 2026-02-26 - Added `scripts/build_2026_tracker_workbook.py` to build `2026_Nessus_Remediation_Tracker.xlsx` with: - `Intro` sheet copied from `OLD_Tracker.xlsx` - current generated `Remediations` and `Template` sheets - month sheets (`January`..`December`) cloned from `Template` - exclusion of `CVETracker`, `testing`, and historical month CVE data - Updated 2026 workbook generation to preserve `Intro` in-place from `OLD_Tracker.xlsx` (including original sheet outline/formatting fidelity). - Set freeze panes to `A2` on `Template` and all month sheets in `2026_Nessus_Remediation_Tracker.xlsx`. - Added `WIKI.md` quick usage guide with setup, workbook workflow, key formats, validation, and push/mirror steps. - Simplified `Remediations` status options to `exception`, `exception - permanent`, in-progress variants, and `resolved`. - Added `Excepted until (date)` to `Remediations` and `Template`, with overdue-date highlighting (red) when the date has passed. - Added `First seen` to `Remediations` and `Unresolved for` to `Template` (`days` since first seen when first seen is before today). - Fixed `Template` key lookup to match CVEs even when `Remediations` CVE cells include extra leading/trailing spaces. - Updated key-driven `Template` formulas to return blank for missing source values (including exception date) instead of displaying Excel zero-date artifacts. - Fixed malformed `Template` `Unresolved for` formula that caused Excel to remove formula records from `sheet2.xml` during file recovery. - Fixed `Template` key lookup regression for numeric `Plugin ID` keys by matching Plugin IDs with numeric-first fallback logic. - Added repository policy in `AGENTS.md` requiring blank output for missing key-driven auto-populated values. - Updated `scripts/build_tracker_workbook.py` default seed rows for the new column layout and status set. - Updated `README.md` workbook column definitions and behavior notes for exception dates and unresolved metrics. ## 2026-02-24 - Switched workbook generation to `openpyxl` in `scripts/build_tracker_workbook.py`. - Kept `Remediations` and `Template` structure and matching logic (`CVE` first, then `Plugin ID`). - Added repository baseline directives in `AGENTS.md` for git workflow, changelog updates, and workbook validation. - Updated `README.md` with dependency and generation instructions. - Updated template formulas so rows stay blank when both `CVE` and `Plugin ID` are empty. - Updated template formulas so `NEW ITEM` appears only when an entered `CVE`/`Plugin ID` is unmatched. - Made `Template` `Name` cells hyperlink to the matched `Remediations` row. - Added `Severity` and `Status` dropdown validations on `Remediations`. - Added severity/status conditional formatting on both `Remediations` and `Template`. - Switched `Template` lookup flow to key-driven input (manual `Key` in column A). - Added key normalization for lookup (`CVE:...`, `PID:...`, or raw value). - Auto-populated both `CVE` and `Plugin ID` in `Template` when key match is found. - Updated auto-populated `Template` CVE display to show `n/a` when a matched remediation row has no CVE value. - Protected `Template` sheet so only `Key`, `Hosts`, and `Owner` cells are editable in data rows. - Updated template scan note formulas to preserve blanks from `Remediations` instead of displaying `0`. - Seeded the generator with the current `Remediations` entries as default test data. - Enabled word wrap for Name/Description/notes columns in `Remediations` and Name/notes columns in `Template`. - Switched workbook write to atomic temp-file replacement to prevent partially written/corrupt `.xlsx` outputs. - Expanded status options to exception/in-progress variants and removed `nofix`. - Updated status conditional formatting rules to color any `exception*` as blue, any `in progress*` as yellow, and `resolved` as green. - Updated `README.md` dependency requirements and install instructions (`apt` + `pip`). - Updated `AGENTS.md` to require dependency documentation updates when module requirements change.