Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 0.0.13-beta.3 — 2026-07-13

### Fixes
- Fix the Pi live `pi list` roundtrip e2e tests against pi-coding-agent ≥0.80: newer Pi no longer trusts project-local `.pi/settings.json` by default, so the tests now pass `pi list --approve` to include the project-scope package failproofai's installer writes (previously `pi list` printed "No packages installed." — failing the install roundtrip and making the uninstall roundtrip pass vacuously). Gated behind `piIsAvailable()`, so it only runs where `pi` is installed. (#TBD)
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
Comment thread
hermes-exosphere marked this conversation as resolved.
Outdated

## 0.0.13-beta.2 — 2026-07-10

### Fixes
Expand Down
9 changes: 9 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,15 @@ v0.72.1):
Note: `~/.pi/settings.json` does NOT exist on a fresh install; user-scope
settings live one level deeper under `~/.pi/agent/`.

**Project-local trust (pi ≥0.80).** Newer Pi (verified against pi-coding-agent
v0.80.3) no longer trusts a **project-local** `.pi/settings.json` by default:
`pi list` gained a `--approve`/`-a` flag ("Trust project-local files for this
command"), and without it project packages are silently ignored (`pi list`
prints `No packages installed.`). User-scope packages
(`~/.pi/agent/settings.json`) are always trusted. The live `pi list` roundtrip
tests in `__tests__/e2e/hooks/pi-integration.e2e.test.ts` pass `--approve` so
they see the project-scope package failproofai's installer writes.

**Schema** is a flat string array — `{"packages": ["./relative/path", ...]}`.
Each entry is a path Pi resolves relative to the directory containing
`settings.json` (so `<cwd>/.pi/` for project scope). For dogfood we write
Expand Down
12 changes: 9 additions & 3 deletions __tests__/e2e/hooks/pi-integration.e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,8 +444,10 @@ describePi("E2E: Pi integration — live `pi list` roundtrip (real binary)", ()
{ cwd: env.cwd, env: { ...process.env, HOME: env.home, FAILPROOFAI_TELEMETRY_DISABLED: "1", FAILPROOFAI_BINARY_OVERRIDE: BINARY_PATH } },
);
// Run `pi list` under the fixture HOME so it doesn't pick up the
// developer's real ~/.pi/agent/settings.json state.
const result = spawnSync("pi", ["list"], {
// developer's real ~/.pi/agent/settings.json state. pi ≥0.80 no longer
// trusts project-local .pi/settings.json by default — `--approve`
// opts in per-command so `pi list` includes the project package we wrote.
const result = spawnSync("pi", ["list", "--approve"], {
Comment thread
NiveditJain marked this conversation as resolved.
Outdated
Comment thread
NiveditJain marked this conversation as resolved.
Outdated
cwd: env.cwd,
encoding: "utf8",
env: { ...process.env, HOME: env.home },
Expand All @@ -469,7 +471,11 @@ describePi("E2E: Pi integration — live `pi list` roundtrip (real binary)", ()
`bun ${BINARY_PATH} policies --uninstall --cli pi --scope project`,
{ cwd: env.cwd, env: baseEnv },
);
const result = spawnSync("pi", ["list"], {
// --approve: pi ≥0.80 needs explicit per-command trust to read the
// project-local .pi/settings.json (see the install roundtrip above).
// Without it `pi list` prints "No packages installed." unconditionally,
// making this negative assertion pass vacuously.
const result = spawnSync("pi", ["list", "--approve"], {
cwd: env.cwd,
encoding: "utf8",
env: { ...process.env, HOME: env.home },
Expand Down