Files
Dev fd442f3b4c
Some checks failed
Release SharePoint Toolbox v2 / release (push) Failing after 14s
chore: archive v1.1 Enhanced Reports milestone
v1.1 shipped with 4 phases (25 plans), 10/10 requirements complete:
- Global site selection (toolbar picker, all tabs consume)
- User access audit (Graph people-picker, direct/group/inherited)
- Simplified permissions (plain-language labels, risk levels, detail toggle)
- Storage visualization (LiveCharts2 pie/donut + bar charts)

Post-phase polish: centralized site selection (removed per-tab pickers),
claims prefix stripping, StorageMetrics backfill, chart tooltip fix,
summary stats in app + HTML exports.

205 tests passing, 10,484 LOC.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 10:21:02 +02:00

3.9 KiB

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