Some checks failed
Release SharePoint Toolbox v2 / release (push) Failing after 14s
5 phases (10-14), 14 plans, 11/11 requirements complete. Key features: HTML report branding with MSP/client logos, user directory browse mode with paginated load and member/guest filtering. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
74 lines
4.2 KiB
Markdown
74 lines
4.2 KiB
Markdown
# v2.2 Report Branding & User Directory — Milestone Archive
|
|
|
|
**Goal:** Add customizable logos to HTML reports and a full user directory browse mode in the user access audit tab
|
|
**Status:** Shipped 2026-04-09
|
|
**Timeline:** 2026-04-08 to 2026-04-09
|
|
|
|
## Stats
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Phases | 5 (Phases 10-14) |
|
|
| Plans | 14 |
|
|
| Commits | 47 |
|
|
| C# LOC (total) | 16,916 |
|
|
| Tests | 285 pass / 26 skip |
|
|
| Requirements | 11/11 complete |
|
|
|
|
## Key Accomplishments
|
|
|
|
1. **Branding Data Foundation (Phase 10)** — Logo models with base64 JSON persistence, BrandingRepository, BrandingService with magic-byte validation (PNG/JPG) and auto-compression via WPF PresentationCore, GraphUserDirectoryService with PageIterator pagination for full tenant user enumeration.
|
|
|
|
2. **HTML Export Branding (Phase 11)** — BrandingHtmlHelper static class for consistent header generation, optional `ReportBranding` parameter added to all 5 HTML export services (Permissions, Storage, Search, Duplicates, User Access), ViewModel injection via IBrandingService, logo management commands (browse/clear) on Settings and Profile ViewModels, Entra branding API auto-pull for client logos.
|
|
|
|
3. **Branding UI Views (Phase 12)** — Base64ToImageSourceConverter for live logo preview, MSP logo section in SettingsView (import/preview/clear), client logo section in ProfileManagementDialog (import/preview/clear/Entra pull), Grid overlay with DataTrigger for placeholder visibility toggle.
|
|
|
|
4. **User Directory ViewModel (Phase 13)** — Browse mode toggle on UserAccessAuditViewModel, paginated directory load with cancellation via separate CancellationTokenSource, in-memory member/guest filter (fetches all users once, filters via ICollectionView), sortable columns for DisplayName, UPN, Department, JobTitle.
|
|
|
|
5. **User Directory View (Phase 14)** — Search/Browse RadioButton mode toggle, directory DataGrid with loading counter and cancel button, SelectDirectoryUserCommand bridging directory selection to existing audit pipeline, double-click code-behind handler, 14 localization keys (EN + FR).
|
|
|
|
## Phases
|
|
|
|
### Phase 10: Branding Data Foundation (3 plans)
|
|
- Logo models, BrandingRepository, BrandingService with validation/compression
|
|
- GraphUserDirectoryService with PageIterator pagination
|
|
- DI registration in App.xaml.cs and full test suite gate
|
|
|
|
### Phase 11: HTML Export Branding + ViewModel Integration (4 plans)
|
|
- ReportBranding model + BrandingHtmlHelper static class with unit tests
|
|
- Add optional branding param to all 5 HTML export services
|
|
- Wire IBrandingService into all 5 export ViewModels
|
|
- Logo management commands (Settings + Profile) and Entra auto-pull
|
|
|
|
### Phase 12: Branding UI Views (3 plans)
|
|
- Base64ToImageSourceConverter, localization keys, App.xaml registration, ClientLogoPreview property
|
|
- SettingsView MSP logo section (preview, import, clear)
|
|
- ProfileManagementDialog client logo section (preview, import, clear, Entra pull)
|
|
|
|
### Phase 13: User Directory ViewModel (2 plans)
|
|
- Extend GraphDirectoryUser with UserType + service includeGuests parameter
|
|
- UserAccessAuditViewModel directory browse mode (toggle, load, filter, sort, tests)
|
|
|
|
### Phase 14: User Directory View (2 plans)
|
|
- Localization keys (EN+FR), SelectDirectoryUserCommand, code-behind double-click handler
|
|
- XAML: mode toggle (Search/Browse RadioButtons), directory DataGrid, loading UX, shared SelectedUsers panel
|
|
|
|
## Requirements Covered
|
|
|
|
| Requirement | Description | Status |
|
|
|-------------|-------------|--------|
|
|
| BRAND-01 | Import MSP logo in application settings | Complete |
|
|
| BRAND-02 | Preview imported MSP logo in settings UI | Complete |
|
|
| BRAND-03 | Import client logo per tenant profile | Complete |
|
|
| BRAND-04 | Auto-pull client logo from Entra branding API | Complete |
|
|
| BRAND-05 | All 5 HTML reports display logos in consistent header | Complete |
|
|
| BRAND-06 | Logo validation (PNG/JPG, 512 KB limit) | Complete |
|
|
| UDIR-01 | Toggle between search and directory browse mode | Complete |
|
|
| UDIR-02 | Browse full tenant user directory with pagination | Complete |
|
|
| UDIR-03 | Filter directory by user type (member vs guest) | Complete |
|
|
| UDIR-04 | Department and job title columns in directory list | Complete |
|
|
| UDIR-05 | Select users from directory to run access audit | Complete |
|
|
|
|
---
|
|
*Archived: 2026-04-09*
|