- Add 06-04-SUMMARY.md with all task details and self-check - Update STATE.md: progress bar 80%, decisions, session record - Update ROADMAP.md: phase 6 now 4/5 plans complete (In Progress) - Mark SITE-02 complete in REQUIREMENTS.md
6.4 KiB
6.4 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, duration, completed, requirements-completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | duration | completed | requirements-completed | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 06-global-site-selection | 04 | tab-viewmodels |
|
|
|
|
|
|
|
2min | 2026-04-07 |
|
Phase 06 Plan 04: Tab ViewModels Global Site Consumption Summary
All 6 consuming tab ViewModels wired to override OnGlobalSitesChanged — PermissionsViewModel pre-populates SelectedSites (multi-site), 4 single-site tabs pre-fill SiteUrl, TransferViewModel pre-fills SourceSiteUrl, all with local-override protection via _hasLocalSiteOverride flag
Performance
- Duration: ~2 min
- Started: 2026-04-07T08:06:19Z
- Completed: 2026-04-07T08:08:35Z
- Tasks: 3
- Files modified: 6
Accomplishments
- PermissionsViewModel: Added
OnGlobalSitesChangedoverride that pre-populatesSelectedSitesfrom global sites when no local override is active - PermissionsViewModel: Site picker dialog (
ExecuteOpenSitePicker) now sets_hasLocalSiteOverride = truebefore clearing/repopulating SelectedSites - PermissionsViewModel:
OnTenantSwitchedresets_hasLocalSiteOverride = falseso new tenant immediately uses global sites - StorageViewModel, SearchViewModel, DuplicatesViewModel, FolderStructureViewModel: Added identical
OnGlobalSitesChanged+partial void OnSiteUrlChanged+_hasLocalSiteOverridepattern - TransferViewModel: Added
OnGlobalSitesChanged+partial void OnSourceSiteUrlChanged+_hasLocalSourceSiteOverridepattern forSourceSiteUrl - BulkMembersViewModel confirmed excluded — no
SiteUrlfield, CSV-driven, no changes made - All 134 tests pass (0 failures, 22 skipped — same baseline as plan 06-01)
- Build succeeds with 0 errors, 0 warnings
Task Commits
Each task was committed atomically:
- Task 1: Update PermissionsViewModel for multi-site global consumption -
1bf47b5(feat) - Task 2: Update single-site tab VMs (Storage, Search, Duplicates, FolderStructure) -
6a2e4d1(feat) - Task 3: Update TransferViewModel and verify BulkMembersViewModel excluded -
0a91dd4(feat)
Files Created/Modified
SharepointToolbox/ViewModels/Tabs/PermissionsViewModel.cs— Added_hasLocalSiteOverride,OnGlobalSitesChanged, updatedExecuteOpenSitePickerandOnTenantSwitchedSharepointToolbox/ViewModels/Tabs/StorageViewModel.cs— Added_hasLocalSiteOverride,OnGlobalSitesChanged,OnSiteUrlChanged, updatedOnTenantSwitchedSharepointToolbox/ViewModels/Tabs/SearchViewModel.cs— Added_hasLocalSiteOverride,OnGlobalSitesChanged,OnSiteUrlChanged, updatedOnTenantSwitchedSharepointToolbox/ViewModels/Tabs/DuplicatesViewModel.cs— Added_hasLocalSiteOverride,OnGlobalSitesChanged,OnSiteUrlChanged, updatedOnTenantSwitchedSharepointToolbox/ViewModels/Tabs/FolderStructureViewModel.cs— Added_hasLocalSiteOverride,OnGlobalSitesChanged,OnSiteUrlChanged, updatedOnTenantSwitchedSharepointToolbox/ViewModels/Tabs/TransferViewModel.cs— Added_hasLocalSourceSiteOverride,OnGlobalSitesChanged,OnSourceSiteUrlChanged, updatedOnTenantSwitched
Decisions Made
- Used
partial void OnSiteUrlChanged(CommunityToolkit partial method) to detect user typing — this fires for every programmatic and user-driven change, so the guardvalue != GlobalSites[0].Urlensures global pre-fills don't incorrectly set the override flag - When user clears SiteUrl (empty string), the override resets and global is re-applied immediately — design choice to make clearing feel like "go back to global"
- PermissionsViewModel pattern differs from single-site VMs: it has no
OnSiteUrlChangedbecause its authoritative input isSelectedSites(managed by site picker dialog), not free text
Deviations from Plan
None — plan executed exactly as written. BulkMembersViewModel was confirmed to have no SiteUrl field as expected.
Issues Encountered
None.
User Setup Required
None — no external service configuration required.
Self-Check: PASSED
All 7 expected files found. All 3 task commits verified in git log.
Next Phase Readiness
- All 6 consuming tab VMs now react to
GlobalSitesChangedMessageautomatically - Local override pattern is consistent across all tabs — users can type freely without clearing global state
- Plan 06-05 (per-tab override enforcement in RunOperationAsync) can proceed
- No blockers