Commit graph

9 commits

Author SHA1 Message Date
X9 Dev
d06af1a87f gui: auto-reboot after deployment with 60s countdown
All checks were successful
release / build-and-release (push) Successful in 22s
Summary screen shows countdown "Restart za Xs..." and reboots automatically.
Buttons: "Restartovat ted" (immediate) and "Zrusit restart" (cancel).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 14:30:15 +02:00
X9 Dev
b508ec4b3e feat: add Windows Update step (12) via PSWindowsUpdate module
All checks were successful
release / build-and-release (push) Successful in 23s
Installs NuGet provider + PSWindowsUpdate from PSGallery, then runs
Install-WindowsUpdate -AcceptAll -IgnoreReboot. No auto-reboot -
operator restarts manually after all steps complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 14:22:36 +02:00
X9 Dev
cf2037ae7d Replace Fyne GUI with Walk (Win32 native, no OpenGL)
All checks were successful
release / build-and-release (push) Successful in 22s
Walk uses Win32 controls directly — no GPU/OpenGL dependency — so the app
renders correctly on VMware ESXi, Hyper-V and any other VM. No MinGW needed
in CI; pure cross-compile with GOOS=windows.

- internal/gui/gui.go: rewrite with Walk declarative API (3 phases:
  form → live run → summary); load/save config via native FileDialog;
  Closing event cancels running scripts cleanly
- cmd/xetup/app.manifest: UAC requireAdministrator + ComCtl32 v6 +
  per-monitor DPI awareness (rsrc generates rsrc.syso in CI)
- .forgejo/workflows/release.yml: drop MinGW, add rsrc generation step
- go.mod/go.sum: remove Fyne and all its deps; only Walk (3 deps total)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 13:50:16 +02:00
X9 Dev
54ea9a1b0d gui: force software renderer for VM compatibility
All checks were successful
release / build-and-release (push) Successful in 8m25s
VMware SVGA II (ESXi) and similar virtual GPUs don't support the OpenGL
version Fyne needs - window opens but stays blank. Force FYNE_RENDERER=software
so Fyne uses CPU/GDI rendering instead. No visible difference for this UI.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 12:47:28 +02:00
X9 Dev
0cc4779ed6 Replace bubbletea TUI with Fyne GUI
All checks were successful
release / build-and-release (push) Successful in 8m25s
- Drop bubbletea, huh, lipgloss and all their transitive deps
- Add fyne.io/fyne/v2 – native Windows GUI, dark theme
- New internal/gui/gui.go: 3-phase window (form → live run → summary)
  - Form: PC name, product key, profile, per-step checkboxes
  - Load config / Save config buttons for per-client presets
  - SPUSTIT button auto-saves to default config.json
  - Live run: virtualised log list, ZASTAVIT button
  - Summary: per-step status + elapsed time, ZAVRIT button
- cmd/xetup/main.go: pass cfgPath to gui.Run so save/load works
- CI: add mingw-w64-gcc, CGO_ENABLED=1, -H windowsgui flag

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 12:29:38 +02:00
X9 Dev
7850ee7f28 Fix embed.FS path separator on Windows
Use path.Join (always '/') for embed.FS reads, filepath.Join only for OS paths.
filepath.Join on Windows produces backslashes which embed.FS doesn't accept,
causing "failed to extract scripts" on startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 12:06:57 +02:00
X9 Dev
5b53b2a0d6 Add per-feature toggles to PS scripts and Go TUI
- 02-software.ps1: wrap wingetInstalls, pdfDefault, ateraAgent in Get-Feature guards
- 03-system-registry.ps1: add Get-Feature, restructure into 5 gated blocks
  (systemTweaks, edgePolicies, oneDriveUninstall, powercfg, proxyDisable)
- 04-default-profile.ps1: add Get-Feature, wrap taskbarTweaks, startMenuTweaks,
  explorerTweaks; add missing explorerTweaks code (ShowRecent, ShowFrequent, FullPath)
- 11-dell-update.ps1: add Get-Feature, split update run by drivers/bios feature flags
- runner.go: add Feature/StepFeatures/SelectableItem/AllSelectableItems for TUI
- config.go: add Features type and defaults for all 4 gated steps
- tui.go: use AllSelectableItems for MultiSelect, build Features map in startRun,
  remove unused stepFeaturesMap variable
- xetup.exe: Windows amd64 build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 11:11:51 +02:00
X9 Dev
be7a7236df feat: Dell Command | Update step (step 11) + download link on landing page
scripts/11-dell-update.ps1:
- Detects Dell via Win32_ComputerSystem.Manufacturer (skips silently on non-Dell)
- Installs Dell.CommandUpdate.Universal via winget (silent)
- Runs dcu-cli.exe /applyUpdates -silent -reboot=disable (all categories)
- BIOS/firmware staged, completes on restart after deployment
- Exit codes 0/1/5 all treated as success

Deploy-Windows.ps1:
- Added Step 11 - Dell Command | Update (dellUpdate=true default)

internal/runner/runner.go, internal/config/config.go:
- dellUpdate step registered in AllSteps() and DefaultConfig

web/spec/index.html:
- Step 11 card with flag-done rows, sidebar link, comment-widget issue #16
- STEP_SCRIPT map updated for step-dell

web/index.html:
- Dynamic download strip: fetches latest Forgejo release via API,
  shows Download xetup.exe with version + file size
- Updated Go TUI card text (no longer "zatim ve vyvoji")

web/data/descriptions.json: regenerated (13 scripts, 80 items)

Forgejo: issue #16 created, release v0.1.0 published with xetup.exe (5.2 MB)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:49:15 +02:00
X9 Dev
1198de3c49 feat: Go TUI launcher (xetup.exe) + spec page new-request section
- embed.go: root package exposes Scripts/Assets embed.FS
- internal/config: Config struct, Load/Save/Default
- internal/runner: Step list, Runner with context cancel, log streaming
- internal/tui: bubbletea model - huh form (phase 1) + live log view (phase 2) + summary (phase 3)
- cmd/xetup/main.go: main binary, extracts embedded content to tmpdir, runs TUI
- Builds to 5.2 MB xetup.exe (GOOS=windows GOARCH=amd64)

spec/index.html:
- arch-xetup section: mark 5 items flag-done (code now exists)
- Add "Nove nastaveni" section linked to Forgejo issue #15
- Add sidebar link for new-requests
- Add CSS + JS for request widget (loads/posts to issue #15 comments)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:35:22 +02:00