Skip to content

vibe 0.1.209

Choose a tag to compare

@github-actions github-actions released this 09 Nov 14:02
075d89c

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 install and npm ci failed for the agent with EACCES. The playwright and pnpm install steps run npm as root with the agent's home, so they filled ~/.npm with root's files.
  • The pwsh feature installed PowerShell, found it wouldn't start (Couldn't find a valid ICU package), and removed it again. The sandbox had no pwsh.
  • A full go test ./... printed ok with the real-Firefox test skipped (25 s instead of ~100 s). Nothing said so. After a branch switch, a stale node_modules also failed the page tests with virtualConsole.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 npm has a cache of its own, /root/.cache/npm, in the playwright and pnpm steps. ~/.npm is never touched, whatever order the steps run in. A first fix (give ~/.npm back to the agent after the Playwright step) was not enough: the pnpm step filled it again afterwards. A test now requires an own cache of every install step that runs npm.
  • The pwsh step installs the newest libicu<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.sh and make.ps1: npm ci and npx playwright install firefox in uitest). A test fails if any Go test file that runs node contains t.Skip, found by glob, not listed by name.
  • They also fail when what is installed isn't what uitest/package.json pins. A test requires every devDependencies pin to be a plain version, naming any that isn't.
  • The node versions in the messages are read from engines in uitest/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: ~/.npm is absent after the build and root's cache is in /root/.cache/npm. pnpm, pwsh 7.6.9 (with libicu76) and Playwright all work. make test-deps works first time as the agent, with no sudo and 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 pwsh install 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 --install from 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