From c970342497ce8e179da84a7c8a1691e9548d886e Mon Sep 17 00:00:00 2001 From: Dev Date: Tue, 7 Apr 2026 14:11:08 +0200 Subject: [PATCH] docs(08-02): complete ViewModel Toggle Logic plan summary Co-Authored-By: Claude Opus 4.6 (1M context) --- .planning/REQUIREMENTS.md | 4 +- .planning/ROADMAP.md | 4 +- .planning/STATE.md | 24 +++---- .../08-02-SUMMARY.md | 62 +++++++++++++++++++ 4 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 .planning/phases/08-simplified-permissions/08-02-SUMMARY.md diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index 6dc962b..3bdd167 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -19,7 +19,7 @@ - [x] **SIMP-01**: User can toggle plain-language permission labels (e.g., "Can edit files" instead of "Contribute") - [x] **SIMP-02**: Permissions report includes summary counts and color coding for untrained readers -- [ ] **SIMP-03**: User can choose detail level (simple/detailed) for reports +- [x] **SIMP-03**: User can choose detail level (simple/detailed) for reports ### Storage Visualization @@ -51,7 +51,7 @@ None deferred — all active requirements scoped to v1.1. | UACC-02 | Phase 7 | Complete | | SIMP-01 | Phase 8 | Complete | | SIMP-02 | Phase 8 | Complete | -| SIMP-03 | Phase 8 | Pending | +| SIMP-03 | Phase 8 | Complete | | VIZZ-01 | Phase 9 | Pending | | VIZZ-02 | Phase 9 | Pending | | VIZZ-03 | Phase 9 | Pending | diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index d65b307..045ee31 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -75,7 +75,7 @@ Plans: 2. The report shows summary counts per permission level with color indicators distinguishing high, medium, and low access levels 3. A detail-level selector (simple / detailed) controls whether individual item-level rows are shown or collapsed into summary rows 4. Toggling modes and detail level does not require re-running the scan — it re-renders from the already-fetched data -**Plans:** 1/6 plans executed +**Plans:** 2/6 plans executed Plans: - [ ] 08-01-PLAN.md — RiskLevel enum, PermissionLevelMapping, SimplifiedPermissionEntry, PermissionSummary (Wave 1) - [ ] 08-02-PLAN.md — PermissionsViewModel simplified mode, detail toggle, summary computation (Wave 2) @@ -106,5 +106,5 @@ Plans: | 5. Distribution and Hardening | v1.0 | 3/3 | Complete | 2026-04-03 | | 6. Global Site Selection | 5/5 | Complete | 2026-04-07 | - | | 7. User Access Audit | 10/10 | Complete | 2026-04-07 | - | -| 8. Simplified Permissions | 1/6 | In Progress| | - | +| 8. Simplified Permissions | 2/6 | In Progress| | - | | 9. Storage Visualization | v1.1 | 0/? | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index f02c7b2..fc19624 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone status: in-progress -stopped_at: Completed 08-01-PLAN.md -last_updated: "2026-04-07T12:07:33.162Z" -last_activity: 2026-04-07 — Roadmap created (Phases 6-9), 10/10 requirements mapped +stopped_at: Completed 08-02-PLAN.md +last_updated: "2026-04-07T12:10:45.515Z" +last_activity: 2026-04-07 — Completed 08-01 (Permission Data Models and Mapping Layer) progress: total_phases: 4 completed_phases: 2 total_plans: 21 - completed_plans: 16 + completed_plans: 17 --- # Project State @@ -25,13 +25,13 @@ See: .planning/PROJECT.md (updated 2026-04-07) ## Current Position Phase: 8 — Simplified Permissions -Plan: 1 of 6 -Status: Plan 08-01 complete, advancing to 08-02 -Last activity: 2026-04-07 — Completed 08-01 (Permission Data Models and Mapping Layer) +Plan: 2 of 6 +Status: Plan 08-02 complete, advancing to 08-03 +Last activity: 2026-04-07 — Completed 08-02 (ViewModel Toggle Logic) ``` -v1.1 Progress: [ ] 0% -Phase 6 [ ] → Phase 7 [ ] → Phase 8 [ ] → Phase 9 [ ] +v1.1 Progress: [████████░░] 81% +Phase 6 [x] → Phase 7 [x] → Phase 8 [..] → Phase 9 [ ] ``` ## Performance Metrics @@ -57,6 +57,7 @@ Phase 6 [ ] → Phase 7 [ ] → Phase 8 [ ] → Phase 9 [ ] | Phase 07-user-access-audit P08 | 2 | 2 tasks | 4 files | | Phase 07-user-access-audit P09 | 6 | 1 tasks | 1 files | | Phase 07-user-access-audit P10 | 5 | 1 tasks | 1 files | +| Phase 08 P02 | 84 | 1 tasks | 1 files | ## Accumulated Context @@ -98,6 +99,7 @@ Decisions are logged in PROJECT.md Key Decisions table. - [Phase 07-user-access-audit]: WeakReferenceMessenger.Default.Reset() in test constructor prevents cross-test contamination from message registrations - [Phase 07-09]: Guest badge (orange pill) and warning icon (⚠) use DataTrigger-driven Visibility on DataGridTemplateColumn cells — collapsed by default, visible only when IsExternalUser/IsHighPrivilege=True - [Phase 07-10]: Extended CreateViewModel to 3-tuple (vm, auditMock, graphMock) so debounce test can verify SearchUsersAsync calls +- [Phase 08]: ActiveItemsSource returns Results or SimplifiedResults based on IsSimplifiedMode -- View binds to single property ### Pending Todos @@ -109,6 +111,6 @@ None. ## Session Continuity -Last session: 2026-04-07T12:06:57Z -Stopped at: Completed 08-01-PLAN.md +Last session: 2026-04-07T12:10:45.513Z +Stopped at: Completed 08-02-PLAN.md Resume file: None diff --git a/.planning/phases/08-simplified-permissions/08-02-SUMMARY.md b/.planning/phases/08-simplified-permissions/08-02-SUMMARY.md new file mode 100644 index 0000000..fb7a52b --- /dev/null +++ b/.planning/phases/08-simplified-permissions/08-02-SUMMARY.md @@ -0,0 +1,62 @@ +--- +phase: 08-simplified-permissions +plan: 02 +subsystem: viewmodel +tags: [permissions, simplified-mode, toggle, viewmodel, observable] +dependency_graph: + requires: [RiskLevel, PermissionLevelMapping, SimplifiedPermissionEntry, PermissionSummary, PermissionSummaryBuilder] + provides: [IsSimplifiedMode, IsDetailView, SimplifiedResults, Summaries, ActiveItemsSource] + affects: [08-03, 08-04] +tech_stack: + added: [] + patterns: [computed-property-from-cache, partial-method-change-handlers, mode-toggle-without-rescan] +key_files: + created: [] + modified: + - SharepointToolbox/ViewModels/Tabs/PermissionsViewModel.cs +decisions: + - "ActiveItemsSource returns Results (raw) or SimplifiedResults depending on IsSimplifiedMode -- View binds to this single property" + - "RebuildSimplifiedData called on toggle-on and after scan completion, not eagerly on every Results mutation" + - "IsDetailView defaults to true so first toggle to simplified mode shows detailed rows" + - "OnTenantSwitched resets SimplifiedResults and Summaries to empty arrays for clean state" +metrics: + duration: 84s + completed: 2026-04-07T12:10:22Z + tasks_completed: 1 + tasks_total: 1 + files_created: 0 + files_modified: 1 +--- + +# Phase 08 Plan 02: ViewModel Toggle Logic Summary + +IsSimplifiedMode and IsDetailView toggles on PermissionsViewModel with computed SimplifiedResults, Summaries, and ActiveItemsSource -- all mode switches rebuild from cached Results without re-scanning SharePoint. + +## Tasks Completed + +### Task 1: Add simplified mode properties and summary computation to PermissionsViewModel +- **Commit:** e2c94bf +- **Files:** SharepointToolbox/ViewModels/Tabs/PermissionsViewModel.cs +- Added IsSimplifiedMode and IsDetailView observable properties with partial change handlers +- Added SimplifiedResults (IReadOnlyList) and Summaries (IReadOnlyList) as manually-raised properties +- Added ActiveItemsSource computed property returning correct collection for DataGrid binding +- RebuildSimplifiedData() wraps Results via SimplifiedPermissionEntry.WrapAll and builds summaries +- RunOperationAsync (both dispatcher and else branches) calls RebuildSimplifiedData when IsSimplifiedMode is active +- OnTenantSwitched resets SimplifiedResults and Summaries to empty arrays + +## Deviations from Plan + +None - plan executed exactly as written. + +## Verification Results + +- dotnet build succeeded with 0 errors, 0 warnings +- dotnet test PermissionsViewModelTests passed (1 passed, 0 failed, 0 skipped) +- IsSimplifiedMode, IsDetailView, SimplifiedResults, Summaries, ActiveItemsSource all present +- OnIsSimplifiedModeChanged calls RebuildSimplifiedData + raises ActiveItemsSource changed +- RunOperationAsync calls RebuildSimplifiedData when IsSimplifiedMode is true (both branches) +- OnTenantSwitched resets SimplifiedResults and Summaries + +## Self-Check: PASSED + +All modified files exist on disk. Task commit (e2c94bf) verified in git log. All 6 new members confirmed present in PermissionsViewModel.cs (26 occurrences across declarations, usages, and doc comments).