# v1.1 Enhanced Reports — Milestone Archive **Goal:** Add user access audit, simplified permissions, storage visualization, and global multi-site selection **Status:** Shipped 2026-04-08 **Timeline:** 2026-04-07 to 2026-04-08 ## Stats | Metric | Value | |--------|-------| | Phases | 4 (Phases 6-9) | | Plans | 25 | | Commits | 29 | | C# LOC (total) | 10,484 | | Tests | 205 pass / 22 skip | | Requirements | 10/10 complete | ## Key Accomplishments 1. **Global Site Selection (Phase 6)** — Toolbar-level multi-site picker consumed by all feature tabs. Per-tab site selectors removed in favor of centralized selection. WeakReferenceMessenger broadcast pattern. 2. **User Access Audit (Phase 7)** — New feature tab: people-picker with Graph API autocomplete, audit every permission a specific user holds across selected sites, distinguish direct/group/inherited access, export to CSV/HTML. Claims prefix stripping for clean display. 3. **Simplified Permissions (Phase 8)** — Plain-language labels mapped from 11 standard SharePoint roles, color-coded risk levels (High/Medium/Low/ReadOnly), summary cards with counts, detail-level toggle (simple/detailed), simplified export overloads for both CSV and HTML. 4. **Storage Visualization (Phase 9)** — LiveCharts2 (SkiaSharp) integration for pie/donut and bar chart views of storage by file type. CamlQuery-based file enumeration to work around StorageMetrics API zeros. Custom single-slice tooltip. Per-library backfill for accurate folder-level metrics. Chart data included in HTML/CSV exports with summary stat cards. 5. **Post-phase Polish** — Removed per-tab site selectors from 8 tabs (centralized to global toolbar), fixed UserAccessAudit DataGrid binding (CollectionViewSource disconnect), added site-level summary totals to Storage tab and HTML reports, suppressed NU1701 NuGet warnings. ## Phases ### Phase 6: Global Site Selection (5 plans) - GlobalSitesChangedMessage + FeatureViewModelBase extension - MainWindowViewModel global selection state + command - Toolbar UI, dialog wiring, and localization keys - Tab VM updates for global site consumption - Unit tests for global site selection flow ### Phase 7: User Access Audit (10 plans) - UserAccessEntry model + service interfaces - UserAccessAuditService implementation - GraphUserSearchService implementation - UserAccessAuditViewModel - UserAccessAuditView XAML layout - CSV + HTML export services - Tab wiring, DI, localization - Unit tests - Gap closure: DataGrid visual indicators + ObjectType column - Gap closure: Debounced search unit test ### Phase 8: Simplified Permissions (6 plans) - RiskLevel enum, PermissionLevelMapping, SimplifiedPermissionEntry, PermissionSummary - PermissionsViewModel simplified mode, detail toggle, summary computation - PermissionsView XAML: toggles, summary panel, color-coded DataGrid - HTML + CSV export simplified overloads - Localization keys (EN/FR) + export command wiring - Unit tests: mapping, summary, ViewModel toggle behavior ### Phase 9: Storage Visualization (4 plans) - LiveCharts2 NuGet + FileTypeMetric model + IStorageService extension - StorageService file-type enumeration implementation - ViewModel chart properties + View XAML + localization - Unit tests for chart ViewModel behavior ## Requirements Covered | Requirement | Description | Status | |-------------|-------------|--------| | SITE-01 | Global multi-site selection from toolbar | Complete | | SITE-02 | Per-tab override capability | Complete (later removed — centralized) | | UACC-01 | Export all user accesses across sites | Complete | | UACC-02 | Distinguish direct/group/inherited access | Complete | | SIMP-01 | Plain-language permission labels | Complete | | SIMP-02 | Summary counts with color coding | Complete | | SIMP-03 | Detail-level selector | Complete | | VIZZ-01 | Charting library integration | Complete | | VIZZ-02 | Toggle pie/donut vs bar chart | Complete | | VIZZ-03 | Auto-update chart on scan complete | Complete | --- *Archived: 2026-04-08*