Skip to content
This repository was archived by the owner on Sep 8, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .github/workflows/desktop-install-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,16 @@ name: Desktop install (Windows)
# `desktop-electron-pin.test.ts` asserts the dependency, the lockfile and
# `build.electronVersion` all agree, which is what keeps electron-builder
# from packaging a different Electron than `npm ci` installed.
# * The `scripts/*.test.mjs` build guards, which gate `prebuilder` and
# `postbuild` and therefore run on Windows during a real packaging run.
# * The `scripts/*.test.mjs` build guards that gate `prebuilder`/`postbuild`
# — the ones whose module graph does not reach `electron-builder`. The two
# that do (`before-pack`, `stage-native-deps`) fail to load under vitest on
# Windows with `SyntaxError: Invalid or unexpected token` while loading
# cleanly on ubuntu. That is a vitest/vite transform problem with that
# dependency, not this repo's code, and it is a packaging-stage concern
# rather than an install-path one — so it is recorded as a finding rather
# than chased here. Observed, not assumed: the four listed in
# `test:desktop:win-install` were seen passing on a Windows runner
# (21 tests, 0 failures) in the run that surfaced the other two.
#
# It deliberately does NOT run the whole `electron` vitest project: that also
# holds POSIX-only suites (ssh-connection asserts ControlMaster multiplexing,
Expand Down
2 changes: 1 addition & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"fix": "npm run lint:fix && npm run fmt",
"test:ui": "vitest run --project ui",
"test:desktop:platforms": "vitest run --project electron",
"test:desktop:win-install": "vitest run --project electron desktop-electron-pin assert-dist-built assert-win-vcruntime before-pack stage-native-deps write-build-stamp",
"test:desktop:win-install": "vitest run --project electron desktop-electron-pin assert-dist-built assert-win-vcruntime write-build-stamp",
Comment thread
dizhaky marked this conversation as resolved.
"test": "vitest run",
"preview": "node scripts/assert-root-install.mjs && vite preview --host 127.0.0.1 --port 4174",
"check:test:desktop:platforms": "npm run test:desktop:platforms",
Expand Down
37 changes: 37 additions & 0 deletions docs/system-log/2026-08-09.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,3 +228,40 @@ I should have checked the diff before naming a culprit.
- The two path-literal tests remain Linux-only by accident rather than
design. Both are one-line fixes (`path.resolve` on the fixture root;
`path.join` for the expectation) whenever someone wants them cross-platform.

## 2026-08-09T17:40:00Z — Windows job: drop the electron-builder suites (Claude Code)

- **Agent/tool:** Claude Code
- **Repos:** hermes-agent
- **Done:**
- The narrowed job from the 17:05 entry ran and got **21 tests passed, 0 test
failures** — but two of the six *suites failed to load*, so the job was
still red. Both merged before their job finished (#173 and #174 are not
required checks), so `main` carried a red job through both.
- **Observed green on Windows** (quoted from the run, not inferred):
`desktop-electron-pin.test.ts` 4 tests, `assert-win-vcruntime.test.mjs`
6, `assert-dist-built.test.mjs` 5, `write-build-stamp.test.mjs` 6.
The pin contract and the VC++ guard both hold on the platform they are
about, which is the whole point.
- **The two failures share one cause:** `stage-native-deps.mjs` does
`import { Arch } from 'electron-builder'`, and `before-pack.mjs` imports
from `stage-native-deps.mjs`. Both suites therefore pull `electron-builder`
into the vitest module graph, and both fail with the *same*
`SyntaxError: Invalid or unexpected token` on Windows while loading cleanly
on ubuntu. The four that pass import no such thing.
- **Not chased further, deliberately.** It is a vitest/vite transform problem
with a third-party package on Windows, not this repo's code, and those two
are packaging-stage guards rather than install-path checks — so including
them was scope creep on my part, twice over. Dropped from
`test:desktop:win-install`; the cause is recorded in the workflow header so
the next person starts from the diagnosis rather than the symptom.
- **Ruled out first:** BOM, CRLF, and stray control characters were compared
across all five `.mjs` suites — no difference between the failing and
passing files, which is what pointed at the import graph instead.
- **Follow-up:**
- **`electron-builder` cannot be imported under vitest on Windows.** Worth
knowing before anyone tries to add packaging tests to a Windows lane. Not
filed as a repo bug because the defect is very likely upstream.
- Still open from 17:05: Windows' no-mux SSH path has no coverage, and the
two POSIX-literal tests (`update-relaunch:54`, `windows-hermes-path:177`)
are Linux-only by accident.
Loading