Releases: cv/pit
Release list
pit v0.16.0
Pit 0.16.0
Breaking release — manual function and configuration changes are required.
Install with the existing Git package workflow:
pi install git:github.com/cv/pit@v0.16.0Restart Pi after updating native addons. Wasmtime prebuilds are available for Linux, macOS, and Windows on ARM64 and x64; the installer verifies release checksums.
Added
- Inspect native globals, shadowed definitions, provenance, signatures,
$next, and effect closures through one paginated registry API and read-only-aware function manager. - Enforce signature-compatible layered overrides and support typed
$nextin session, user, and project definitions, including named execution, promotion, reload, and safe fallback removal. - Add
functionIdfor namespaced session definitions, preserving full identifiers through replay, promotion, catalogs, and traces. - Build and smoke-test Linux, macOS, and Windows ARM64/x64 Wasmtime addons in CI, attach them to tagged releases, and install only the matching checksum-verified prebuild during Git package installation.
- Propagate external cancellation into Wasmtime through race-safe execution IDs and epoch interruption.
Breaking changes
- Require explicit method-level dependency injection for built-ins and saved functions; lexical saved-function calls and whole-namespace capture are removed.
functions.listAll()now returns a paginated registry result;getSaved()includes native globals and may have no authored source.- User-owned functions use
userscope and${PI_CODING_AGENT_DIR}/functions/, loaded automatically without enablement configuration. - Remove legacy user/project path readers and user-global management aliases; user APIs are
listUser,getUser, andremoveUser, with promotion{ to: "user" }. - Ignore pre-upgrade
pit-functionssession entries. New definitions use branch-localpit-function-definitionsentries. - Discover documented functions recursively by canonical path, with bounded reads and collision/symlink checks. Invalid definitions block affected calls instead of silently falling back.
- No automatic migration: old files remain untouched. See the migration guide.
Changed
- Make Wasmtime the default TypeScript function executor.
- Retain the deprecated permission-restricted Node fallback for unavailable or unloadable implicit prebuilds; explicit Wasmtime requests remain strict.
Security
- Run each submitted program in a fresh fuel-, time-, memory-, call-, and protocol-bounded Wasmtime store with a non-inheriting WASI Preview 2 context.
Known limitations
- Function-viewer metadata can have low contrast on dark themes; tracked for a follow-up release in #90.
What's Changed
- docs: describe current runtime architecture by @cv in #81
- feat: unify functions and add opt-in Wasmtime execution by @cv in #83
- feat: make Wasmtime the default function executor by @cv in #84
- ci: deliver cross-platform Wasmtime prebuilds by @cv in #85
- feat: adopt canonical user function persistence by @cv in #86
- feat: support namespaced session function identifiers by @cv in #87
- feat: validate compatible overrides and persist next chains by @cv in #88
- feat: inspect and browse the complete layered function registry by @cv in #89
- release: prepare 0.16.0 by @cv in #91
Full Changelog: v0.15.1...v0.16.0
pit v0.15.1
Fixed
- Increased the bounded Vitest per-test timeout to 15 seconds so compile-heavy project function integration cases remain deterministic under CI coverage instrumentation.
- Preserved the existing workflow-level timeout and all coverage thresholds.
This patch follows the v0.15.0 release workflow retry; runtime behavior is unchanged.
Dependency maintenance
All newly opened Dependabot pull requests were evaluated:
- Merged Oxfmt 0.67, checkout 7, setup-node 7, Vitest 5, coverage 5, Oxlint, tsx, TypeBox, and Node type updates.
- Rejected TypeScript 7 because it no longer exports the compiler API required by Pit's validation and source analysis.
Full changelog: v0.15.0...v0.15.1
pit v0.15.0
Highlights
- Project functions now live in
.pi/functions/. - Legacy
.pi/pit/functions/files remain readable, with new-path definitions taking precedence. - Persistent scope now comes from storage location or explicit promotion APIs instead of
@pit projectand@pit globalmarkers. - Direct named submissions remain session-scoped until promoted with
functions.promote()or the/functionsTUI. - Updating a legacy function writes the new path and removes the old copy; removal clears both paths.
- Pit's own trusted workflow helpers moved to
.pi/functions/.
Compatibility
Existing marked project and global files continue to load. Scope tags are ignored, and ordinary JSDoc summaries and parameter descriptions remain part of function metadata. .pi/pit.json remains the project configuration file.
Tooling
- Updated Oxfmt, Oxlint, tsx, TypeBox, Node types, Vitest, coverage, checkout, and setup-node after full CI evaluation.
- TypeScript 7 was evaluated but not adopted because it no longer exposes the compiler API Pit requires.
- Dependabot now groups compatible minor and patch updates while keeping Pi and Oxfmt updates isolated for review.
Full changelog: v0.14.1...v0.15.0
pit v0.14.1
Fixed
- Timed-out streaming processes now return exit code 124 instead of false success.
- Aborted streaming processes now return exit code 130.
- Process results include bounded timeout or abort diagnostics.
- Children that ignore SIGTERM are escalated to SIGKILL.
- Other signal-only child exits now remain failures.
This patch fixes a defect discovered during the exact-tag v0.14.0 release smoke test.
Full changelog: v0.14.0...v0.14.1
pit v0.14.0
Highlights
- Public GitHub distribution with pinned install and upgrade instructions; npm publication remains disabled.
- Pi 0.85.1 compatibility work, including model refresh diagnostics, cancellation, and provider-scoped model selection.
- Theme-safe saved-function source viewing and multiline syntax highlighting across TUI line boundaries.
- A decomposed execution dashboard model with lower complexity.
- A sanitized adaptive-music case study showing Pit workflows in practice.
Security and dependencies
- Resolved all reported npm dependency advisories.
- Added runtime dependency auditing, Dependabot, secret scanning, push protection, and private vulnerability reporting.
- Scanned all 244 commits with Gitleaks v8.30.1; no leaks were found.
Project and CI
- Added CHANGELOG, security, contribution, conduct, issue, pull-request, and release documentation.
- Added Node.js 22 and 24 CI coverage and immutable GitHub Action revisions.
- Added automated validation and GitHub release creation for version tags.
Compatibility
Pit v0.14.0 requires Node.js 22.19 or newer and is tested with Pi 0.85.1. Other Pi versions may work but are not part of this release's compatibility guarantee.
Full changelog: v0.13.3...v0.14.0
pit v0.13.3
Highlights
- Finish the feature-oriented source reorganization by moving process execution into
src/process/and GitHub/npm command preparation into capability handlers. - Remove saved-function imports through sandbox compatibility facades; function modules now depend directly on source, graph, and validation leaves.
- Restrict sandbox entry points to sandbox-owned APIs and generalize persistent-function metadata naming across project and global scopes.
- Extract shared atomic persistent-function storage mechanics while keeping project trust and global configuration policies separate.
- Split neutral argument decoding from process-result semantics and align their tests with source ownership.
- Strengthen
structure:checkto detect self-imports, enforce saved-function and renderer dependency boundaries, verify generated-contract placement, and limit root source files to five. - Update architecture documentation and move graph/source tests into the saved-function feature suite.
Validation
Static checks, structure enforcement, 163-rule Oxlint, Oxfmt, full tests, coverage thresholds, package verification, two successful GitHub Actions runs, reload-based process and sandbox execution, project/global registry loading, saved-function persistence and reinvocation, validation diagnostics, rendering, and cleanup all passed.
pit v0.13.2
Changes
- Reorganize the flat source tree into cohesive
capabilities,execution,functions,renderers,sandbox,shared,tool, andworkspaceboundaries. - Group tests by feature and split the largest sandbox, extension, and tool-rendering suites into focused files.
- Extract TypeScript validation from sandbox compilation, removing the previous saved-function/sandbox import cycle.
- Add
npm run structure:checkto reject internal source cycles and excessive root-level source files. - Move the generated capability contract under
src/generated/with a generated-file header. - Move the sandbox runner under
src/sandbox/and update package verification. - Add packaged architecture documentation describing boundaries, dependency rules, generated artifacts, and test organization.
Validation
Static checks, structural checks (7 root source files and 0 import cycles), 163-rule Oxlint, Oxfmt verification, 49 test files and 354 tests, 98.11% branch coverage, package verification, two GitHub Actions CI runs, reload-based sandbox execution, expected TypeScript rejection, reconstructed saved-function invocation, scoped metadata inspection, global registry access, and cleanup passed.
pit v0.13.1
Changes
- Split saved-function removal planning and source metadata parsing into focused modules.
- Simplify scoped project reconciliation and persistent function capability handlers.
- Separate TypeScript diagnostic rendering from validation setup.
- Respect
PI_CODING_AGENT_DIRin global-function configuration, promotion, and removal messages instead of displaying hardcoded default paths. - Reduce Pit maintainability audit findings from 13 to 7, eliminating all oversized saved-function file and function findings.
Validation
Static checks, 163-rule Oxlint, Oxfmt verification, 351 tests, coverage thresholds, package verification, GitHub Actions CI, reload-based global state inspection, live global promotion, invocation, scoped inspection, removal planning, confirmed removal, and empty-registry cleanup passed.
pit v0.13.0
Highlights
- Add user-global saved functions stored as readable TypeScript under
~/.pi/agent/pit/functions/, with explicit opt-in through~/.pi/agent/pit.jsonand support forPI_CODING_AGENT_DIR. - Resolve direct calls with session → project → global precedence while binding dependencies by definition scope: globals use global dependencies, projects use project then global, and sessions use session then project then global.
- Add typed
functions.listGlobal(),getGlobal(), confirmedremoveGlobal(), scopedgetSaved()andplanRemoval(), and confirmedpromote(..., { to: "global" })workflows. - Extend
/functionswith Save globally, global inspection, override labels, and confirmed global removal. - Add project-level global opt-out, global signatures in the system prompt, global context metadata, runtime trace attribution, dependency blockers, capacity enforcement, and machine-local security documentation.
- Update
/pit-reflectto distinguish stable project-specific promotion from project-independent global promotion.
Validation
Static checks, 163-rule Oxlint, Oxfmt verification, 351 tests, coverage thresholds, package verification, GitHub Actions CI, reload-based global opt-in, live promotion and persistence, direct precedence, simultaneous scoped dependency isolation, metadata inspection, blocked removal, confirmed cleanup, and empty-registry verification passed.
pit v0.12.0
Highlights
- Add the packaged
/pit-reflect [focus]prompt template for reviewing work completed in the current session and identifying high-confidence saved-function additions or improvements. - Guide reflection through the effective function registry, dependency and dependent metadata, existing-function extension, composition, bounded outputs, typed inputs, safe validation, and intentional project promotion.
- Decline temporary, trivial, overlapping, overly specific, or unsafe candidates instead of manufacturing helpers.
- Register prompt resources explicitly for installed packages and add project-local discovery for direct source development.
- Extend package verification and workflow tests to ensure the reflection prompt ships and remains discoverable.
Validation
Static checks, 163-rule Oxlint, Oxfmt verification, the full test suite, coverage thresholds, package verification, GitHub Actions CI, repeated reload checks, and live /pit-reflect command discovery passed.