xetup/.claude/memory/project_technical_findings.md
Filip Zubik c8ff952bbb Add Claude Code memory and project context
- User profile, feedback preferences
- Project state and architecture decisions
- Technical findings (UCPD, Win11 compat, code analysis)
- Reference pointers to colleague specs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 19:43:39 +02:00

3 KiB

name description type
Technical findings from deep code analysis and research (2026-04-15) Detailed technical analysis results - Win11 compatibility issues, UCPD driver, code quality assessment, and modernization opportunities project

Code quality assessment (all scripts in windows-deployment-new/scripts/)

  • Overall: solid, production-ready for Win10/11 22H2
  • 3-level registry fallback in 03-system-registry.ps1: direct write → ACL fix (SeTakeOwnershipPrivilege) → SYSTEM scheduled task
  • Proper hive handling: GC.Collect + WaitForPendingFinalizers + 500ms sleep before reg unload, always in finally block
  • Error handling: $ErrorActionPreference = "Continue", try/catch everywhere, WARN level for non-critical failures
  • Logging: every step to C:\Windows\Setup\Scripts\Deploy.log with color-coded console output

Critical issues found

1. UCPD.sys (User Choice Protection Driver)

  • Kernel-mode driver since Feb 2024, v4.3 as of early 2026
  • Blocks direct registry writes to UserChoice for .pdf, .htm, .html etc.
  • Our HKCR approach works as system-wide fallback but isn't clean
  • Fix: disable UCPD service + scheduled task during deployment, set associations, re-enable
  • Or use SetUserFTA tool (~$20, kolbi.cz)

2. System tray EnableAutoTray=0 broken on 24H2

  • Win11 23H2/24H2 ignores this registry key
  • Icon stream cache clearing is a workaround but not 100%
  • No reliable registry-only solution exists for 24H2

3. OneDrive removal too aggressive

  • 03-system-registry.ps1 lines 244-273: uninstalls + deletes OneDriveSetup.exe
  • 04-default-profile.ps1 lines 240-261: removes RunOnce keys + Explorer namespace
  • Must remove these blocks entirely

4. Edge policies incomplete

  • Currently only: HideFirstRunExperience, CreateDesktopShortcutDefault
  • Need to add: BrowserSignin=0, CopilotPageContext=0, NewTabPageContentEnabled=0, StandaloneHubsSidebarEnabled=0, ShowRecommendationsEnabled=0, DefaultBrowserSettingsCampaignEnabled=0, and ~10 more

5. ConfigureStartPins applyOnce

  • New in 24H2 (KB5062660): {"pinnedList":[], "applyOnce": true}
  • Applies layout once, then users can customize
  • Better than our current approach (XML lock + UnlockStartLayout task)

Win10/Win11 compatibility matrix

  • All core registry keys work on both versions
  • Win11-specific keys (TaskbarAl, ShowCopilotButton, TaskbarDa, TaskbarMn) harmlessly create empty keys on Win10
  • Scripts handle version differences through graceful degradation

Config.json issues

  • desktopInfo settings (position, fontSize, color) are defined but ignored by 07-desktop-info.ps1
  • deployment.locale is not used anywhere
  • Software list has only 3 packages (TODO in SPEC)

Tools landscape (researched 2026-04-15)

  • Chris Titus WinUtil: PS-based, irm christitus.com/win | iex, has Win11 Creator tab
  • Win11Debloat (Raphire): got GUI in Feb 2026, configurable via Apps.json
  • Sophia Script: 150+ tweaks, most granular but slower
  • Go binary advantages: bypasses execution policy, single file, no dependencies, cross-compile from macOS
  • Charmbracelet stack (bubbletea/huh/lipgloss): best for TUI forms in Go