Repository navigation
v0.49.14
·
557 commits
to master
since this release
v0.49.14
This patch release makes Pi recover from damaged session files left by a crash, fixes a long-session stall where history compression never started, and fixes memory mapping on OpenCode 2. It also stops Pi from freezing when it opens a long session for the first time. There is no database migration.
Upgrading
- No migration.
context.dbstays at schema 95 andstore.dbat schema 63. Restart OpenCode 1, OpenCode 2, Pi or Oh My Pi after updating.
Changed
- Pi loads a session's tags in the background. When Pi opens a long session, it now reads that session's tags off the main thread instead of blocking the host for up to several seconds. The first turn waits for the load only within its normal time budget.
Fixed
- Pi keeps working after a crash leaves zeros at the end of a session file. Pi records the tag numbers and request fingerprints it has sent in small per-session files. When a crash left zero bytes at the end of one of them, Pi refused every later turn. Pi now skips that empty tail and repairs it before the next write. It never reuses a tag number it has already sent. When Pi does refuse a turn, the message now names the real cause, and "storage is busy" appears only when another process holds the database lock. Thanks to @Zireael for the report in issue 723, the evidence, and the test fixtures from PR 724.
- History compression starts again when queued removals cannot apply. In long sessions, context could stay near 95% because compression was skipped for removals that were queued but could not be applied, such as removals of protected or still-active content. Compression now counts only removals that will really shrink the request. A later step also no longer waits again for a compression run that already ran past its wait time.
- Memory mapping on OpenCode 2 keeps the model's text across tool calls. The mapper's text written between tool calls is no longer lost before the final answer is read. Reasoning variants are now found when OpenCode 2 lists them, as versions 2.0.22 and 2.0.32 do. Thanks to @Sivinho for the detailed report in issue 725.