Repository navigation
vibe 0.1.209
Sandbox fixes: root's npm cache, PowerShell's ICU, page tests that don't skip; the Review tab says when the code has changed (#20)
Why
A re-composed sandbox had four problems, found while testing the last release. Each one cost real time, and one only showed up in a real build.
npm installandnpm cifailed for the agent with EACCES. Theplaywrightandpnpminstall steps runnpmas root with the agent's home, so they filled~/.npmwith root's files.- The
pwshfeature installed PowerShell, found it wouldn't start (Couldn't find a valid ICU package), and removed it again. The sandbox had nopwsh. - A full
go test ./...printedokwith the real-Firefox test skipped (25 s instead of ~100 s). Nothing said so. After a branch switch, a stalenode_modulesalso failed the page tests withvirtualConsole.sendTo is not a function, which says nothing of the cause. - After the agent answered a round of review, comments it made were placed for its changed code, on the older diff the tab still held, until Refresh.
What changed
Install steps
- Root's
npmhas a cache of its own,/root/.cache/npm, in theplaywrightandpnpmsteps.~/.npmis never touched, whatever order the steps run in. A first fix (give~/.npmback to the agent after the Playwright step) was not enough: thepnpmstep filled it again afterwards. A test now requires an own cache of every install step that runsnpm. - The
pwshstep installs the newestlibicu<version>the image's apt has before it runs PowerShell, and warns if it can't. - The tests for these scripts stand in for apt and
id, and run each script with a home of its own. Before this they depended on the machine running them.
Page tests
- The jsdom and real-Firefox tests fail, rather than skip, when node, jsdom or Firefox is missing, and say to run
make test-deps(in the Makefile,make.shandmake.ps1:npm ciandnpx playwright install firefoxinuitest). A test fails if any Go test file that runs node containst.Skip, found by glob, not listed by name. - They also fail when what is installed isn't what
uitest/package.jsonpins. A test requires everydevDependenciespin to be a plain version, naming any that isn't. - The node versions in the messages are read from
enginesinuitest/package.json, so they are right on any branch. - CI installs Firefox on every OS, so the real-Firefox tests run on macOS and Windows too. macOS found four undo tests that pressed Ctrl+Z, which isn't undo on a Mac: they press the platform's undo now. The page leaves undo to the browser, so Mac users were never affected.
The Review tab
- Comments follow their code only when a diff is worked out, and the tab works one out on first show and on Refresh. So a comment the agent made after changing code could sit on the wrong line until Refresh.
- When the agent's turn ends, the page asks vibe whether the code is still the one its diff was of (
GET /api/review/changed, a key over the files' fingerprints). The question only looks: it moves no comment and closes no review.- With the Review tab open and the code changed, a note beside Refresh says so. The diff is left alone, as you may be reading it. The note stays until Refresh.
- With another tab open and the code changed, the diff is worked out afresh when the Review tab is next shown.
- A turn that changed nothing does neither.
Testing
go test ./...passes, 46 packages, with the Firefox tests running. CI is green on Ubuntu, macOS and Windows.- A sandbox re-composed with
./test-clean:~/.npmis absent after the build and root's cache is in/root/.cache/npm.pnpm,pwsh7.6.9 (withlibicu76) and Playwright all work.make test-depsworks first time as the agent, with nosudoand no--cache, and the memories were restored. - The Review note and the refresh on switching back, tried by hand with a temporary comment in
app.js(since removed). - The real
pwshinstall was also run against the real release and apt in a sandbox that had none. - Each check that guards a rule was shown to fail when the rule is broken: the exact-pin test with a range, the script tests with a step cut out, the engines test with the old wording, and the stale-answer guard with the guard removed.
🤖 Generated with Claude Code
To install:
- Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/fluffynuts/vibe/master/install.sh | sh - Windows:
irm https://raw.githubusercontent.com/fluffynuts/vibe/master/install.ps1 | iex - Manual: download the zip for your platform (below), unzip it anywhere, and run
vibe --installfrom the folder it makes.
To upgrade, run the same command again, or vibe --upgrade once vibe is installed.
| Platform | Zip |
|---|---|
| Linux (x86-64) | vibe-linux-amd64.zip |
| Linux (ARM) | vibe-linux-arm64.zip |
| macOS (Apple Silicon) | vibe-macos-arm64.zip |
| macOS (Intel) | vibe-macos-amd64.zip |
| Windows (x86-64) | vibe-windows-amd64.zip |
| Windows (ARM) | vibe-windows-arm64.zip |
SHA256SUMS holds each zip's checksum. The install scripts and vibe --upgrade check it.
macOS: the binary isn't signed, so if it's blocked after downloading in a browser, run
xattr -dr com.apple.quarantine <folder> once.
What's Changed
- Sandbox fixes: root's npm cache, PowerShell's ICU, page tests that don't skip; the Review tab says when the code has changed by @fluffynuts in #20
Full Changelog: v0.1.205...v0.1.209