---
name: Xetup project state as of 2026-04-15
description: Current state of the xetup Windows deployment project - architecture decisions, what exists, what's planned
type: project
---

## What xetup is
Automated Windows 10/11 setup for X9.cz MSP clients. Replaces ~3 hours of manual work with a single script/tool.

## Current repo structure (cleaned 2026-04-15)
```
xetup/
├── review.html                  ← interactive review page v2 (with colleague comments)
├── xetup-review.md             ← exported review v1 results from colleague
├── xetup-win-setup-spec.md     ← original spec from colleague
├── xetup-win-setup-novinky.md  ← v2 additions from colleague (taskbar pins, explorer, network, admin desc)
├── W11.pdf                      ← reference PDF
└── windows-deployment-new/      ← the active codebase
    ├── Deploy-Windows.ps1       ← master script
    ├── CLAUDE.md / SPEC.md
    ├── config/config.json
    ├── assets/
    │   ├── Backinfo/            ← BackInfo.exe + ini + ps1 (ready to use)
    │   └── Logo/                ← X9 ico + jpeg (moved here 2026-04-15)
    └── scripts/
        ├── 00-admin-account.ps1
        ├── 01-bloatware.ps1
        ├── 02-software.ps1
        ├── 03-system-registry.ps1
        ├── 04-default-profile.ps1
        ├── 05-personalization.ps1
        ├── 06-scheduled-tasks.ps1
        ├── 07-desktop-info.ps1  ← TO BE REPLACED by BackInfo
        └── 08-activation.ps1
```

## Key decisions made (2026-04-15 session)
1. **BackInfo wins over custom DesktopInfo** - colleague prefers it (INI config, auto-update, centered text). Our 07-desktop-info.ps1 will be deleted.
2. **OneDrive must NOT be removed** - current code aggressively deletes it, breaks M365. Must fix 03-system-registry.ps1 and 04-default-profile.ps1.
3. **RDP must NOT be removed** - was in SPEC but never implemented (good). Remove from SPEC entirely.
4. **Colleague's spec has priority** over our implementation when they overlap.
5. **adminx9 account: no password** (changed from config-driven password), FullName = "X9.cz s.r.o."
6. **Nextcloud not needed** - assets are in repo, only Atera MSI downloads from web.
7. **Flash2 not integrated** - it's the old version of this tool, just for inspiration.
8. **Atera Agent**: curl from `https://x9.servicedesk.atera.com/api/utils/agent-install/windows/?cid=31&aeid=50b72e7113e54a63ac76b96c54c7e337` then `msiexec /i setup.msi /qn`

## Architecture direction (decided 2026-04-15)
- **Go TUI launcher** (xetup.exe) - single binary, embeds PS scripts + assets
- Charmbracelet stack: bubbletea, huh, lipgloss
- Self-update from web (version.json check)
- **Web platform** at xetup.x9.cz:
  - Forgejo for git hosting + issues + CI
  - Auto-generated documentation from spec.yaml
  - Comments via Forgejo Issues API
  - Landing page + download + changelog
  - Deployment reporting dashboard (later)
- **spec.yaml** as single source of truth for both exe and docs

## What needs to happen next
1. Create spec.yaml from all gathered specs + review
2. Initialize Go project structure
3. Fix PS scripts (OneDrive removal, admin password, BackInfo integration)
4. Set up repo (GitHub initially, Forgejo later)
5. First Go build with TUI form
6. CI pipeline (GitHub Actions)
7. Web landing page

## Technical findings from deep analysis
- UCPD kernel driver (since Feb 2024) blocks PDF default association via UserChoice - need to disable UCPD during deployment
- System tray "show all icons" broken in Win11 24H2 - EnableAutoTray=0 ignored
- Edge needs ~15 more policy keys than we currently set
- ConfigureStartPins has new applyOnce property in 24H2
- Current code quality is solid: 3-level registry fallback, proper hive handling with GC+finally
