- CI now enabled OIDC publishing in the build matrix, installed Node 24/npm, and added a per-target native addon publish step.
- The release script now accepts `--native-leaf <tag>` and publishes only the matching generated native leaf package.
- Native package generation gained optional tag filtering with validation of requested leaf tags for targeted release publishing.
- Added a workflow `gate` job that marks `main` pushes with a `v*` tag at `HEAD` as duplicate release runs.
- Conditioned native, lint/test, and install CI jobs on that gate so redundant build and publish work is skipped on duplicate tagged pushes.
- Updated `scripts/ci-release-publish.ts` to publish packed tarballs via `npm publish` after `bun pm pack`, handling already-published versions as a no-op.
- sccache silently skips caching when incremental compilation is enabled, making the wrapper a no-op.
- Applied fix to both the shared build-native action and the CI workflow setup step.
- Updated the build-native action to install cargo-zigbuild for non-MSVC targets and cargo-xwin with LLVM tooling for MSVC targets.
- Removed the fixed aarch64 linker variable and narrowed Rust test execution to skip duplicate macOS runs.
- Reworked CI matrices to build win32-x64 artifacts on ubuntu with x86_64-pc-windows-msvc and simplified smoke testing to skip those Windows binaries via matrix gating.
- Updated `rust-hash` to return separate `linux-run-id` and `release-run-id` outputs by checking each prior run for required native artifacts.
- Rewired `native_linux` and `native_release` gating to use those outputs, enabling Linux cache reuse on main and release pre-warm only when all cross-platform artifacts are present.
- Enabled sccache in both the shared native build action and CI setup, and excluded macOS workspace Rust tests from the generic native test step due to duplicated coverage.
- Added a Bun-based `scripts/ci-release-notes.ts` utility that extracts `## [version]` entries from `packages/*/CHANGELOG.md` and writes a combined `release-notes.md` for the release tag.
- Updated the GitHub release workflow to install Bun, run the notes generator, and pass the generated `release-notes.md` to `softprops/action-gh-release` via `body_path`.
Rolled back binary updater replacements when post-install version verification fails instead of deleting the previous working binary first.
Added a release workflow gate that downloads the published macOS arm64 asset and verifies codesign plus --version before npm publishing.
Fixes#1240
- Set `GITHUB_ACTIONS` to an empty value for the `Test workspace (TS)` step so Bun's `::group::` markers are not emitted as log text.
- Kept the override scoped to that step to avoid impacting other workflow steps while preserving normal annotation behavior.
- Added stats sync, browser tab, and JS eval workers as explicit --compile
entrypoints in scripts/ci-release-build-binaries.ts so Bun emits them
into bunfs in published binaries, matching the dev build script and the
AGENTS.md worker spawn contract.
- Switched the release-binary smoke step in .github/workflows/ci.yml to
invoke --smoke-test (in addition to --version) so this regression
cannot ship again.
- Added packages/coding-agent/test/issue-1150-repro.test.ts pinning the
symmetric contract: both build scripts must list every worker entry.
Fixes#1150
- Extracted repeated build steps into a reusable `build-native` composite action.
- Split `native` into `native_linux` (runs on every PR) and `native_release` (tags only).
- Release jobs now always use same-run artifacts, removing cross-run artifact resolution logic.
- Drop the modern (x86-64-v3) native build matrix entries for darwin-x64 and
win32-x64. Linux x64 still ships both variants. Loader fallback chain
(modern -> baseline -> default) means hosts on those platforms now load
baseline; npm install via @oh-my-pi/pi-natives and the embedded standalone
binary both keep working unchanged.
- Stop downloading .node files in scripts/install.sh and scripts/install.ps1.
The standalone omp binary embeds the native at compile time, so the
separate downloads were redundant and were going to 404 on platforms with
no modern variant.
- Stop publishing standalone .node files to GitHub Releases. The npm
registry is the only consumer that needs them.
- Drop the release-archives build entirely (omp-*.tar.gz). Nothing
consumed them. Deleted scripts/ci-release-build-archives.ts and the
ci:release:build-archives package script.
- Split the monolithic release job into release-github (download omp-*
binaries, upload to GitHub Release) and release-npm (download natives,
bun publish). Each job's steps now obviously serve its single output.
- Fixed bash interceptor to check both raw and cwd-normalized commands, catching commands hidden behind leading `cd ... &&` wrappers.
- Fixed LSP client shutdown to await graceful shutdown with a 5s timeout before killing the process, and parallelized `shutdownAll` via `Promise.allSettled`.
- Fixed concurrent bash command tracking by replacing a single abort controller with a Set, preventing premature cancellation of parallel commands.
- Removed `./hooks` and `./hooks/*` export entries from the coding-agent package exports map.
- Updated pinned Rust nightly toolchain from `nightly-2026-03-27` to `nightly-2026-04-29` in `rust-toolchain.toml` and CI workflow.
- Replaced custom already-published detection in `ci-release-publish.ts` with `bun publish --tolerate-republish` flag.
Commit afa4eb71f ("removed turbo-based workspace pipeline") dropped the
affected-script entries from package.json but left .github/workflows/ci.yml
still invoking them on the pull_request branch of the check/test jobs. Every
PR since that commit has failed both jobs with "Script not found".
The push-to-main branch (ci:check:full / ci:test:full) already works. Drop
the dead pull_request-conditional steps and remove the corresponding
'if: github.event_name != pull_request' guard on the :full steps so they
run in both contexts.
fixes#730
- Removed Turborepo cache steps from CI and dropped .turbo from gitignore.
- Migrated root scripts from turbo commands to bun workspace execution for build, test, lint, check, format, and fix.
- Removed turbo dependencies and deleted turbo.json task configuration files from the repository.
- Enhanced chunk-edit tool documentation with clarifications on @decl region behavior and guidance for attribute/decorator modifications.
- Improved chunk edit implementation to handle @body region scanning and markdown blank-line preservation with additional test coverage.
- Added oracle model review synthesis to rate-edit-tool.py for aggregating findings across multiple model reviews.
- Updated test infrastructure to run TypeScript and Rust tests in parallel using cargo nextest with improved logging control.
- Updated TypeScript dependencies including @typescript/native-preview and typescript to latest versions.
- resolveBuiltAddonPath: napi-rs 3.x emits pi_natives.<platformArchABI>.node
where platformArchABI is e.g. darwin-x64 (no ABI). The previous filter
excluded the plain <platform>-<arch>.node form because it was in the
canonicalFilenames set, breaking darwin-x64 tag builds. Only exclude
sibling variant-tagged files (modern/baseline) that do not match our
target canonical name.
- ci.yml: pass matrix.variants as TARGET_VARIANTS so ci-build-native.ts
actually builds both baseline+modern on x64 platforms in tag releases.
- Migrated all package tsconfig files to extend tsconfig.workspace.json for unified TypeScript configuration across monorepo.
- Consolidated build and check scripts across 10+ packages to use biome for linting/formatting with separate type checking via tsgo.
- Renamed build scripts from build:native and build:binary to build for simplified command naming across packages/natives and packages/coding-agent.
- Refactored CI workflow to invoke bun tasks instead of inline shell scripts, reducing workflow complexity by 40+ lines.
- Removed sync-exports.ts and repro-stuck.ts scripts; deleted path aliases from tsconfig.base.json in favor of workspace-based configuration.
- Updated turbo.json with new task definitions (check:types, lint, fmt, fix) and removed build:native/embed:native tasks.
The previous fix (513982b16) only added --external mupdf to the
package.json build:binary script, but the CI release job uses its
own inline build_binary function that was missing the flag. This
caused the release job to fail on tag push v13.17.3 with a
top-level await error from mupdf via markit-ai.
- abortableSleep used Bun.sleep which vitest fake timers do not intercept;
switch to setTimeout via Promise.withResolvers so vi.useFakeTimers() +
vi.advanceTimersByTime() work correctly in the polling loop tests
- getCurrentHeadSha() and GhRunWatchTool session cwd used a hardcoded
/work/pi path; replace with import.meta.dir so the tests resolve the
real repo HEAD on any machine
- add timeout-minutes: 30 to the CI test job as a safety net against
future hangs blocking release runs
Today's nightly produces illegal instructions when compiled with
-C target-cpu=x86-64-v3. Reverts the unnecessary rustc-hash pin from
the previous commit since the real cause is the nightly compiler.
Also lets Cargo.lock return to rustc-hash 2.1.2 (not the culprit).
- Added background model discovery with provider status tracking and 24-hour model caching to improve startup performance.
- Changed model discovery timeout from 3000ms to 250ms and deferred blocking refresh to background operations for faster initialization.
- Fixed model discovery to preserve cached models when providers are unavailable or unauthenticated.
- Added validation in Kitty key formatting to reject unsupported modifiers and improved error handling.
- Reorganized CI workflow to run TypeScript linting in check job and conditional Rust checks in native job matrix.
- Updated system prompt and tool guidance to recommend combined investigation-and-edit workflows and maintainable code practices.
- Added support for resolving internal artifact:// URLs in grep tool to search backing files.
- Fixed grep tool to properly handle internal URL resolution with validation for missing backing files.
- Added comprehensive test suite covering artifact URL resolution, regex patterns, and error handling.
- Optimized CI matrix to conditionally include platform variants based on git tag presence.
- Refactored CI matrix to consolidate variant builds into a single loop per platform-arch combination.
- Simplified build configuration by moving variant-specific RUSTFLAGS into build script logic instead of matrix entries.
- Updated artifact naming to use glob pattern for multi-variant uploads.
ubuntu-latest resolves to 24.04 which links against GLIBC_2.39,
producing native binaries that cannot run on Debian 12 (glibc 2.36).
Ubuntu 22.04 ships glibc 2.35, ensuring compatibility with Debian 12
and other current stable distributions.
- Added CPU variant support for x64 native addons with modern (AVX2/x86-64-v3) and baseline (x86-64-v2) variants, enabling automatic fallback when modern variants are unavailable.
- Added automatic AVX2 CPU detection on Linux, macOS, and Windows platforms to select appropriate native addon variant at runtime.
- Updated native addon filename scheme to include CPU variant suffix (e.g., pi_natives.linux-x64-modern.node) for x64 platforms.
- Updated CLI update mechanism to support downloading and installing multiple native addon variants per platform with fallback support.
- Removed fallback untagged pi_natives.node binary creation; platform and variant-tagged binaries are now required.
- Moved documentation files from packages/coding-agent/docs/ to root docs/ directory to flatten the documentation structure.
- Updated all internal documentation links to account for the new file locations, adjusting relative paths to maintain correct references across the monorepo.
- Updated README.md and issue template configuration to reference documentation at the new root docs/ location instead of packages/coding-agent/docs/.
Generate a tar.gz bundle from stats dist/client during binary builds, embed it into the compiled binary, and extract/serve it at runtime in compiled mode instead of reading //root/client directly.
Updated CI and build:binary flow to generate/reset the embedded bundle around compilation.
Fixes#61
- Added issue templates (bug report, feature request, question) with provider/platform dropdowns
- Added PR template and security policy
- Added /triage Claude command for automated issue classification
- Updated LICENSE to include Can Boluk copyright
- Updated author/contributors across all package.json files
- Added homepage, bugs, keywords, engines to all packages
- Created platform:wsl label for WSL-specific issues
- Added RUSTFLAGS environment variable configuration to CI workflow for x86-64-v3 CPU optimization across multiple build jobs.
- Added per-matrix rustflags configuration for native builds on x64 platforms (Linux, macOS Intel, Windows).
- Updated build-native script to default to native CPU optimization for local builds when not cross-compiling.
- Migrated environment variable access from direct process.env to centralized getEnv() utility function across all packages.
- Renamed environment variable prefix from OMP_ to PI_ throughout codebase (e.g., OMP_CODING_AGENT_DIR -> PI_CODING_AGENT_DIR).
- Removed automatic environment variable migration from PI_ to OMP_ prefixes via migrate-env.ts module.
- Removed env setting from configuration schema and applyEnvironmentVariables() method from settings.
- Updated CI/CD build configuration to use PI_COMPILED flag instead of OMP_COMPILED.
- Changed venvPath property in PythonRuntime from nullable (string | null) to optional (string | undefined).
- Added automatic extraction of embedded native addon payload to ~/.omp/natives/<version> on first run of compiled binaries.
- Added embed:native build script for generating platform-specific native addon payloads embedded in compiled binaries.
- Enhanced native addon loading to prioritize extracted embedded addon over downloaded versions.
- Improved error messages with platform-specific guidance for compiled vs npm-installed binaries.
- Refactored CI workflow to use reusable build_binary() function for cross-platform binary compilation.
- Added support for cross-compilation via CARGO_BUILD_TARGET environment variable, enabling builds for non-native targets like ARM64 Linux.
- Added support for overriding platform and architecture detection via TARGET_PLATFORM and TARGET_ARCH environment variables.
- Modified native build script to search for release artifacts in target-specific directories when cross-compiling.
- Updated CI workflow to use cross-compilation toolchain for ARM64 Linux builds instead of native ARM64 runners.
- Created comprehensive porting guide documenting how to port hot paths to pi-natives with anatomy, checklist, and troubleshooting sections.
- Added native addon distribution and installation support to the CLI update mechanism, enabling platform-specific native modules to be downloaded and installed alongside the main binary.
- Added platform validation in native addon loader to verify supported platforms (linux-x64, linux-arm64, darwin-x64, darwin-arm64, win32-x64) with helpful error messages for unsupported configurations.
- Enhanced native addon loading error messages to provide platform-specific troubleshooting guidance for both npm/bun installations and local development environments.
- Updated installation scripts (install.sh, install.ps1) to download and install native addon files alongside the main binary during CLI installation.
- Migrated native bindings from WebAssembly (wasm-bindgen) to Node.js N-API architecture for improved performance and platform support.
- Replaced worker pool-based async architecture with synchronous native addon calls, eliminating thread overhead and simplifying the API.
- Added new grep module with ripgrep-backed filesystem search supporting parallel processing, glob filtering, and context line extraction.
- Updated build system to compile Rust crates to platform-specific .node binaries instead of WASM modules.
- Removed WASI implementation and worker pool infrastructure no longer needed with N-API native bindings.
- Updated CI/CD pipeline to build native addons for multiple platforms (Linux x64/arm64, macOS x64/arm64, Windows x64) and include them in releases.