Repository navigation
v0.7.3
pb-php shipped a security release (2.1.4) that pins patched Guzzle versions and strips response bodies and credential-bearing query strings from its exception messages. This release adopts it and re-attaches the server's own error explanation on the pb-migrate side, so API failures stay readable. It also lands two sync-safety changes: pull no longer overwrites files edited since the last sync, and push refuses local trees whose files would collide under Pandorabots' flat remote namespace.
Security
- Require
spontena/pb-php ^2.1.4, which in turn requiresguzzlehttp/guzzle ^7.15.2andguzzlehttp/psr7 ^2.12.3.composer auditon the previous lock reported 13 advisories against Guzzle (one high); the updated lock reports none. - Action required for existing installs: run
composer update— a lock file is not updated by this change alone.
Added
pullprotects un-pushed local edits. Before writing a file it compares the local SHA-256 with the hash recorded in the cache at the last sync. A mismatch skips the file with a warning and a per-bot summary count. No cache entry (first pull, manually dropped-in file) falls through and writes, preserving first-pull behaviour.pull --forcerestores the old unconditional overwrite.FileScannerrefuses colliding remote names. Local trees where two files map to the same remote name (e.g.ja/greet.aimlanden/greet.aimlboth upload asfile/greet) now raise aConfigExceptionlisting every colliding path. Same basename across different kinds (foo.set/foo.map) is still fine.- Server error detail is shown everywhere an
ApiExceptionsurfaces. Themessagefield of the API's JSON error body is appended in the REPL error line,batchfailure line,testFAIL line, the error block of a direct CLI run (as a trailingServer message:line), and thepull/pushskip lines for HTTP 4xx / 412 on system-managed files. Bodies without a usable message render exactly as before. - README (English and Japanese): new "Error handling" and "Pull semantics" sections.
Changed
composer analyseruns PHPStan with--memory-limit=1G..gitignoreexcludes local AI-agent instruction files (CLAUDE.md,AGENTS.md,.claude/,.codex/).
Full changelog: v0.7.2...v0.7.3