Skip to content

Releases: cv/pit

pit v0.16.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 03:48
Immutable release. Only release title and notes can be modified.
v0.16.0

Pit 0.16.0

Breaking release — manual function and configuration changes are required.

Migration guide

Install with the existing Git package workflow:

pi install git:github.com/cv/pit@v0.16.0

Restart 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 $next in session, user, and project definitions, including named execution, promotion, reload, and safe fallback removal.
  • Add functionId for 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 user scope 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, and removeUser, with promotion { to: "user" }.
  • Ignore pre-upgrade pit-functions session entries. New definitions use branch-local pit-function-definitions entries.
  • 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

Choose a tag to compare

@github-actions github-actions released this 17 Sep 00:33
Immutable release. Only release title and notes can be modified.
v0.15.1
d809e42

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

Choose a tag to compare

@github-actions github-actions released this 16 Sep 22:24
Immutable release. Only release title and notes can be modified.
v0.15.0
91ede24

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 project and @pit global markers.
  • Direct named submissions remain session-scoped until promoted with functions.promote() or the /functions TUI.
  • 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

Choose a tag to compare

@github-actions github-actions released this 16 Sep 21:18
Immutable release. Only release title and notes can be modified.
v0.14.1
f29a940

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

Choose a tag to compare

@github-actions github-actions released this 16 Sep 20:35
Immutable release. Only release title and notes can be modified.
v0.14.0
f6a2a95

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

Choose a tag to compare

@cv cv released this 06 Aug 05:36
Immutable release. Only release title and notes can be modified.

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:check to 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

Choose a tag to compare

@cv cv released this 06 Aug 03:06
Immutable release. Only release title and notes can be modified.

Changes

  • Reorganize the flat source tree into cohesive capabilities, execution, functions, renderers, sandbox, shared, tool, and workspace boundaries.
  • 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:check to 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

Choose a tag to compare

@cv cv released this 06 Aug 00:26
Immutable release. Only release title and notes can be modified.

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_DIR in 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

Choose a tag to compare

@cv cv released this 06 Aug 00:01
Immutable release. Only release title and notes can be modified.

Highlights

  • Add user-global saved functions stored as readable TypeScript under ~/.pi/agent/pit/functions/, with explicit opt-in through ~/.pi/agent/pit.json and support for PI_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(), confirmed removeGlobal(), scoped getSaved() and planRemoval(), and confirmed promote(..., { to: "global" }) workflows.
  • Extend /functions with 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-reflect to 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

Choose a tag to compare

@cv cv released this 05 Aug 22:06
Immutable release. Only release title and notes can be modified.

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.