ReviewOS

stacks/system-cleaner

Craft initialises COM — bump the pin and ship the Windows desktop app

#24
Closed github-actions[bot] opened this 8 days ago ·
8 days ago

Craft v0.0.175 imports CoInitializeEx, so its Windows runtime now puts the calling thread in a COM apartment and the desktop window should open.

ole32.dll: CoInitializeEx, CoTaskMemFree, CoUninitialize

craft-native/craft#342 is closed.

What this unblocks, and what to change:

  1. Bump craft-native.org in deps.yaml to ^0.0.175. Until then scripts/build-desktop-windows.ts keeps pinning v0.0.100 and nothing changes.
  2. CI's Guard why the window does not open will report the windowsHide spawns loading where CO_E_NOTINITIALIZED was expected. Drop those expectations in scripts/windows-webview-spawn-probe.ts.
  3. Remove the 0x800401f0 tolerance from the Open the window and photograph it step, so a window failing to open is a hard failure again.
  4. Update CHANGELOG.md and the v0.3.7 release notes, which say the desktop app is macOS-only pending craft-native/craft#335.

Opened by scripts/craft-com-watch.ts, which reads the import table of each new release rather than running anything.

8 days ago

Done in 4e68bfd, and CI proved it rather than assuming it.

MIN_WINDOWS_CRAFT is 175 rather than a deps.yaml bump, because the floor is the mechanism for "Windows needs something newer than macOS" and it leaves the signed .dmg on the runtime it has been shipping. The window step no longer tolerates 0x800401f0, and the spawn guard requires a webview from all five spawns instead of three.

Run 39263239817, with the tolerance gone, so this is a pass and not a shrug:

[windows] v0.0.90 is declared, but it cannot open a window on Windows; using v0.0.175
window 'SystemCleaner' from craft-runtime after 3s
[WebView2] Initialization complete
guard: every spawn opened a webview.

The screenshot artifact shows the dashboard rendering the runner's own hardware, so the API path that prerendered views depend on works there too.

One item left undone on purpose: item 4 asked to update the v0.3.7 notes, and I have not rewritten them. They were accurate when written, and a changelog that revises what was true at a release is worth less than one that does not. The correction is in the Unreleased section instead.

🤖 Generated with Claude Code

Sign in to comment on this issue.