From d08cfd3e63d459542f24c6a48ab2657784806537 Mon Sep 17 00:00:00 2001 From: X9 Dev Date: Wed, 3 Jun 2026 16:43:40 +0200 Subject: [PATCH] memory: record v0.9 release, CI-via-dispatch, Forgejo UI, pwsh Co-Authored-By: Claude Opus 4.8 --- .claude/memory/MEMORY.md | 3 +- .claude/memory/project_v0.9_release.md | 62 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 .claude/memory/project_v0.9_release.md diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 9bfbe1a..e1bfd7a 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -7,7 +7,8 @@ - [Communication preferences](feedback_preferences.md) - Czech, discussion first, interactive reviews, phased approach ## Project -- [Xetup project state](project_xetup_state.md) - Current state, architecture decisions, what's next (as of 2026-04-15) +- [Xetup v0.9 release and CI/ops findings](project_v0.9_release.md) - bloatware toggles, release-via-dispatch, Forgejo UI, pwsh (as of 2026-06-03) +- [Xetup project state](project_xetup_state.md) - Early architecture decisions and planning (as of 2026-04-15, partly superseded) - [Technical findings](project_technical_findings.md) - Deep code analysis, UCPD issue, Win11 compatibility, tools research ## Reference diff --git a/.claude/memory/project_v0.9_release.md b/.claude/memory/project_v0.9_release.md new file mode 100644 index 0000000..701a82d --- /dev/null +++ b/.claude/memory/project_v0.9_release.md @@ -0,0 +1,62 @@ +--- +name: Xetup v0.9 release and CI/ops findings as of 2026-06-03 +description: What shipped in v0.9 (bloatware toggles), how releases really trigger, Forgejo UI customization, dev tooling +type: project +--- + +## v0.9 shipped (2026-06-03) + +Tag `v0.9`, named non-prerelease, signed `xetup.exe` published. Also on rolling `latest`. + +### Bloatware feature toggles (step 01) +The bloatware step now has three independent GUI checkboxes (in `runner.StepFeatures()` +under `bloatware`, defaults in `config.go` + `config.json`): +- `standardBloatware` (default on) - the bulk AppX/capability/feature list. +- `removeNewOutlook` (default on) - the new Outlook for Windows app + (`Microsoft.OutlookForWindows`). Classic Outlook from M365 is a Win32 app, never + touched - only the bundled UWP new Outlook is. +- `removeSnippingTool` (default OFF) - **Snipping Tool is now KEPT by default**. + Spans three list entries: `Microsoft.ScreenSketch` (the modern app), the legacy + capability `Microsoft.Windows.SnippingTool`, and the optional feature + `Microsoft-SnippingTool`. Kept like Calculator (common productivity tool). + +Gating logic is `Test-RemovalAllowed` in `scripts/01-bloatware.ps1`: each item is +governed by its own flag, so toggles are independent (a single feature off does not +disable the whole step). + +### Latent bug fixed +The Go `Config` struct had no `Bloatware` field, so the GUI's runtime-config +regeneration silently dropped `bloatware.keepPackages` - the script's keep-list merge +was effectively dead when run via xetup.exe. Added the field. + +## CI / release mechanics (important) +- `release.yml` triggers on push to `main` ONLY for paths `**.go`, `scripts/**`, + `assets/**`, `embed.go`, `app.manifest`, `release.yml`. Docs-only / `web/**` pushes + do NOT trigger a build. +- **Version tags release via `workflow_dispatch` on the tag ref, NOT a plain tag push.** + A `vX.Y` tag usually points at a docs-only "release X.Y" commit, which the `paths` + filter blocks - so `git push ` does nothing. Dispatch instead: + `POST /api/v1/repos/x9/xetup/actions/workflows/release.yml/dispatches {"ref":"vX.Y"}`. + This is how v0.8 and v0.9 were built. `github.ref = refs/tags/vX.Y` -> named release. +- Release notes come from the matching `## [X.Y]` section in `CHANGELOG.md`. Move the + `[Unreleased]` content into a dated `## [X.Y] - DATE` section before tagging. + +## Forgejo UI customization +- Top-left Forgejo brand logo (`#navbar-logo`) is replaced with a back-link to + `xetup.x9.cz` via `templates/custom/header.tmpl` (CSS + small JS retargeting href). +- Forgejo custom path is `GITEA_CUSTOM=/data/gitea` inside the `xetup-forgejo` + container; templates live in the `xetup_forgejo-data` volume (NOT git by itself). +- Source is versioned in the repo at `deploy/forgejo/` (mirror + README). Deploy = + `docker cp` into the container + `docker restart xetup-forgejo` (templates load at + startup). Runner reconnects on its own. + +## Dev tooling +- `pwsh` (PowerShell 7.6.2) is installed on the dev box (Debian 12) via the Microsoft + apt repo. Use it for PS syntax/parse checks: + `[System.Management.Automation.Language.Parser]::ParseFile(...)`. Note: Windows-only + cmdlets (Remove-AppxPackage, Get-WindowsCapability...) cannot run here. + +## Still open +- v0.9 / `latest` are NOT smoke-tested on real Windows yet. Recommend VM test + (snapshot -> run -> revert) before a technician deploys to a client. Revert path: + `git revert ` + push (CI rebuilds `latest`).