From e07ee945256193259e3f23dfd5bd99d40d803579 Mon Sep 17 00:00:00 2001 From: Allan Thraen Date: Mon, 11 May 2026 19:32:08 +0200 Subject: [PATCH] fix: ship terminal-init.js + transparent variant in MSI, guard Assets drift MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The MSI shipped only terminal.html / xterm.js / xterm.css / xterm-addon-fit.js even though terminal.html has loaded terminal-init.js since commit 75280b1 and transparent sessions load terminal-transparent.html. Installed users therefore got a blank terminal pane — portable ZIP users were unaffected because the ZIP mirrors the whole publish output. - WiX now lists terminal-init.js and terminal-transparent.html as components. - A new CI step diffs src/CodeShellManager/Assets/ against the refs in the WiX manifest and fails the build if they drift, so adding a new Asset file without updating WiX can't slip through again. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/build.yml | 21 +++++++++++++++++++++ installer/CodeShellManager.wxs | 10 +++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4b15170..624506d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,6 +28,27 @@ jobs: with: dotnet-version: '10.x' + # ── Guard: WiX must reference every file in src/CodeShellManager/Assets. + # Portable ZIP ships the whole publish output, so this only bites MSI users + # (e.g. v0.4.1 silently dropped terminal-init.js → blank terminals). + - name: Verify WiX manifest covers all Assets files + shell: pwsh + run: | + $assetFiles = (Get-ChildItem 'src/CodeShellManager/Assets' -File).Name | Sort-Object + $wxs = Get-Content 'installer/CodeShellManager.wxs' -Raw + $matches = [regex]::Matches($wxs, '\$\(var\.PublishDir\)\\Assets\\([^"]+)') + $wxsRefs = ($matches | ForEach-Object { $_.Groups[1].Value } | Sort-Object -Unique) + $diff = Compare-Object $assetFiles $wxsRefs + if ($diff) { + Write-Host "::error::installer/CodeShellManager.wxs is out of sync with src/CodeShellManager/Assets/" + $diff | ForEach-Object { + $side = if ($_.SideIndicator -eq '<=') { 'missing from WiX' } else { 'not present in Assets/' } + Write-Host " $($_.InputObject) — $side" + } + exit 1 + } + Write-Host "WiX/Assets in sync ($($assetFiles.Count) files)" + # ── Build (every push / PR) ────────────────────────────────────────────── - name: Restore & Build run: dotnet build src/CodeShellManager/CodeShellManager.csproj -c Release diff --git a/installer/CodeShellManager.wxs b/installer/CodeShellManager.wxs index 1089b8b..84d87b0 100644 --- a/installer/CodeShellManager.wxs +++ b/installer/CodeShellManager.wxs @@ -54,10 +54,18 @@ - + + + + + + +