engrim 1.2.1 — runs cleanly on Windows, macOS and Linux
A fresh install on Windows surfaced three failures. All of them were silent: engrim setup
printed five green checkmarks while nothing it wired could actually run.
Fixed
- Hook commands the shell couldn't run.
setupinterpolated the Windows binary path unquoted
into a POSIX command. bash readC:\Users\...\engrim.EXEbackslashes as escapes and the command
collapsed toC:UserstimgoAppData...— not found — and the trailing2>/dev/null || true
swallowed the error. Every hook was a silent no-op. Paths are now forward-slashed and quoted,
which also fixes install paths containing spaces on macOS and Linux. setupduplicated its hooks on every run. The idempotency markerengrim hooknever matched
engrim.EXE hook, so each run appended another hook group. Matching now normalises separators,
quotes and.exe, and still recognises hooks written by earlier versions.- UnicodeEncodeError on every piped command. Windows gives a non-console stdout cp1252, and the
status bar leads with an emoji — sostatusline,contextandstatscrashed on every refresh
while looking perfect in a terminal. stdin had the mirror bug: the minder silently injected
nothing for prompts it couldn't decode. All three streams are UTF-8 now. - Setup crashed on a CLAUDE.md or settings.json containing an emoji (text-mode
open()used the
locale codec) — and reported it as "settings.json is not valid JSON". - Project tags could split one project into two memory buckets on Windows (
C:\pfrom getcwd vs
c:/pfrom a hook payload). Normalised there; POSIX tags are untouched. - The plugin install route was broken end to end on Windows. A venv puts entry points in
Scripts/*.exe; onlybin/was ever checked, so the bootstrap failed its own-xtest and all
four hooks no-opped forever. Both layouts are resolved now. - The plugin and marketplace manifests still pinned 1.1.0 against a shipped 1.2.0, so the plugin
installed a version behind the one being announced.
Root cause
CI was Linux-only. It now runs on Windows and macOS as well, and smoke-tests the commands
through pipes the way Claude Code actually invokes them.
17 new tests (103 total). The 10 that reproduce these bugs fail against the unpatched source.
Nothing changed for existing Linux and macOS installs beyond the quoting fix, which is backward
compatible — re-running engrim setup will not duplicate hooks written by any earlier version.