From 46c8467c926447ca02e44773fdc6050947f5cf07 Mon Sep 17 00:00:00 2001 From: Dev Date: Wed, 8 Apr 2026 15:21:34 +0200 Subject: [PATCH] docs(12-02): complete MSP logo section plan Co-Authored-By: Claude Opus 4.6 (1M context) --- .planning/ROADMAP.md | 2 +- .planning/STATE.md | 11 ++-- .../12-branding-ui-views/12-02-SUMMARY.md | 55 +++++++++++++++++++ 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 .planning/phases/12-branding-ui-views/12-02-SUMMARY.md diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index ef61356..c741ee5 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -116,6 +116,6 @@ Plans: | 6-9 | v1.1 | 25/25 | Shipped | 2026-04-08 | | 10. Branding Data Foundation | v2.2 | 3/3 | Complete | 2026-04-08 | | 11. HTML Export Branding + ViewModel Integration | 4/4 | Complete | 2026-04-08 | — | -| 12. Branding UI Views | 1/3 | In Progress| | — | +| 12. Branding UI Views | 2/3 | In Progress| | — | | 13. User Directory ViewModel | v2.2 | 0/? | Not started | — | | 14. User Directory View | v2.2 | 0/? | Not started | — | diff --git a/.planning/STATE.md b/.planning/STATE.md index b4de573..8f26ac4 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v2.2 milestone_name: Report Branding & User Directory status: completed -stopped_at: Completed 12-01-PLAN.md -last_updated: "2026-04-08T13:19:29.504Z" +stopped_at: Completed 12-02-PLAN.md +last_updated: "2026-04-08T13:21:27.706Z" last_activity: 2026-04-08 — Phase 11 planning completed progress: total_phases: 5 completed_phases: 2 total_plans: 10 - completed_plans: 8 + completed_plans: 9 --- # Project State @@ -66,6 +66,7 @@ Decisions are logged in PROJECT.md Key Decisions table. - [Phase 11]: Guard clause (if _brandingService is not null) used for graceful degradation — branding = null fallback preserves backward compat - [Phase 11]: No App.xaml.cs changes needed for ViewModel branding injection — IBrandingService already registered as singleton, ViewModel registrations auto-resolve - [Phase 12]: Skipped BitmapImage creation test due to missing Xunit.StaFact; STA thread required for WPF BitmapImage +- [Phase 12]: Used Grid overlay with DataTrigger for logo/placeholder visibility toggle in SettingsView ### Pending Todos @@ -80,7 +81,7 @@ None. ## Session Continuity -Last session: 2026-04-08T13:19:29.502Z -Stopped at: Completed 12-01-PLAN.md +Last session: 2026-04-08T13:21:27.704Z +Stopped at: Completed 12-02-PLAN.md Resume file: None Next step: `/gsd:execute-phase 11` diff --git a/.planning/phases/12-branding-ui-views/12-02-SUMMARY.md b/.planning/phases/12-branding-ui-views/12-02-SUMMARY.md new file mode 100644 index 0000000..8024e8d --- /dev/null +++ b/.planning/phases/12-branding-ui-views/12-02-SUMMARY.md @@ -0,0 +1,55 @@ +--- +phase: 12-branding-ui-views +plan: "02" +subsystem: settings-ui +tags: [wpf, xaml, branding, settings, logo-preview] +dependency_graph: + requires: [12-01] + provides: [msp-logo-section, settings-logo-preview] + affects: [SettingsView] +tech_stack: + patterns: [DataTrigger-visibility-toggle, Base64ToImageConverter-binding, Grid-overlay-layout] +key_files: + modified: + - SharepointToolbox/Views/Tabs/SettingsView.xaml +decisions: + - "Used Grid overlay for Image and placeholder TextBlock with DataTrigger toggling visibility" + - "Kept MaxHeight=80 MaxWidth=240 with Stretch=Uniform for consistent small preview" +metrics: + duration: "31s" + completed: "2026-04-08T13:20:51Z" + tasks_completed: 1 + tasks_total: 1 +--- + +# Phase 12 Plan 02: MSP Logo Section in SettingsView Summary + +MSP logo preview section added to SettingsView.xaml with Border/Grid overlay pattern, Import/Clear buttons, and red StatusMessage feedback. + +## What Was Done + +### Task 1: Add MSP logo section to SettingsView.xaml +- **Commit:** b035e91 +- Added Separator after data folder DockPanel +- Added Label bound to `settings.logo.title` localization key +- Added Border (light gray outline, rounded corners) containing a Grid +- Grid overlays an Image (bound to `MspLogoPreview` via `Base64ToImageConverter`) and a placeholder TextBlock (bound to `settings.logo.nopreview`) +- Image visibility controlled by `StringToVisibilityConverter`; placeholder uses a `DataTrigger` to collapse when logo is present +- Two horizontally-stacked buttons: Import (`BrowseMspLogoCommand`) and Clear (`ClearMspLogoCommand`) +- StatusMessage TextBlock in `#CC0000` red, only visible when non-empty + +## Deviations from Plan + +None - plan executed exactly as written. + +## Verification + +- `dotnet build --no-restore -warnaserror` passed with 0 warnings, 0 errors + +## Commits + +| Task | Commit | Message | +| ---- | --------- | ---------------------------------------------------------- | +| 1 | b035e91 | feat(12-02): add MSP logo section with live preview to SettingsView | + +## Self-Check: PASSED