Commit Graph
825 Commits
Author SHA1 Message Date
can1357 b71841c4cc merge PR #5694 via eval/pr-5694: ci: retry flaky workspace tests 2026-07-17 04:39:14 +02:00
can1357 4d7e51413b merge PR #5671 via eval/pr-5671: fix(bash): drained piped output before timeout return 2026-07-17 04:37:11 +02:00
David Andrews (LexGenius.ai) 5cb9533436 fix(shell): parse uv run --extra values 2026-07-16 08:39:37 -04:00
roboomp 3e38a5b514 fix(bash): drained piped output before timeout return
- Delayed reader cancellation so pipeline consumers can flush after producers are terminated.
- Kept the JavaScript watchdog behind bounded native timeout cleanup.
- Added native and executor regressions for timeout-time output draining.

Fixes #5316
2026-07-16 07:22:58 +00:00
can1357 9fd19696e2 chore: bump version to 17.0.1 2026-07-16 04:56:03 +02:00
can1357 2c355102ce chore: applied biome formatting to merged sources 2026-07-16 03:52:48 +02:00
can1357 5e9d03f152 chore: normalized changelog entries misfiled by union merges 2026-07-16 03:52:19 +02:00
can1357 a29627142c fix(natives): verify disk before stale-process diagnosis 2026-07-16 03:32:03 +02:00
can1357 29b6649ff9 merged PR #5423: fix(natives): distinguish process-stale from disk-stale sentinel mismatch 2026-07-16 03:32:03 +02:00
can1357 1c9291b6e6 chore: bump version to 17.0.0 2026-07-15 19:17:34 +02:00
can1357 34bfa9ad50 chore: rewrite changelogs 2026-07-15 18:51:23 +02:00
can1357 d0f2feaa52 docs(natives): logged grep GNU basic alternation fix
- Added an `[Unreleased]` Fixed entry documenting that the in-process `grep` builtin now treats GNU basic-regex `\|` as escaped alternation in default and `-G` modes while `-E`/`-F`/`-P` keep their dialects (code shipped in `fix(pi-uu-grep)`).
2026-07-15 15:15:52 +02:00
can1357 7d02778c60 chore: bump version to 16.5.2 2026-07-15 00:04:32 +02:00
can1357 ff117fd107 chore: cleanup changelogs 2026-07-14 23:32:10 +02:00
can1357 b76f7aeecf fix(launch): scope batch validation to PTYs 2026-07-14 23:11:07 +02:00
roboomp 90c4726bae fix(launch): passed Windows PTY arguments directly
Added a direct-argv PTY entry point and used it for Windows launch sessions so portable-pty no longer re-quotes cmd.exe command text.

Rejected direct .bat and .cmd applications with guidance to use cmd.exe /c.

Fixes #5416
2026-07-14 20:17:03 +00:00
can1357 14b5da76a9 chore: bump version to 16.5.1 2026-07-14 19:21:54 +02:00
roboomp e4a10450ec fix(natives): distinguish process-stale from disk-stale sentinel mismatch
A long-lived process that survives an in-place upgrade keeps the previous
pi-natives NAPI addon resident. A tab worker spawned afterwards runs the
new JS loader, which expects the new version sentinel, but require returns
the resident old exports carrying the prior sentinel. validateLoadedBindings
previously reported "reinstall to re-sync" for this case even though disk was
already consistent, so only a restart helped.

Detect a versioned __piNativesV* export other than the expected one on the
loaded bindings and report that omp was upgraded mid-session and must be
restarted, reserving the reinstall guidance for genuinely disk-stale addons.

Fixes #4812
2026-07-14 16:32:04 +00:00
can1357 a3960bb4e1 chore: bump version to 16.5.0 2026-07-14 01:32:16 +02:00
can1357 01d3fc9b6b chore: bump version to 16.4.8 2026-07-12 20:48:09 +02:00
can1357 f933f02fcf chore: bump version to 16.4.7 2026-07-12 13:06:27 +02:00
can1357 12466ecf40 chore: bump version to 16.4.6 2026-07-12 02:50:43 +02:00
can1357 a9adf20af2 fix: prevented false overlap errors by deduplicating identical edits
- Enabled deduplication of byte-identical edits in `apply_edits` to prevent false overlap errors.
- Added logic in `ast_edit_blocking` to filter out duplicate rewrite matches before staging.
- Updated `apply_edits` to collapse multiple identical replacements into a single deterministic operation.
- Added regression tests for both `apply_edits` and `ast_edit_blocking` to ensure identical matches resolve cleanly.
2026-07-12 00:16:09 +02:00
can1357 0ae8efd649 feat: integrated coreutils as in-process shell builtins
- Integrated 17 new coreutils-based shell builtins including `diff`, `date`, `ln`, `stat`, `seq`, `touch`, and others.
- Refactored vendored utilities to execute as in-process shell builtins by routing I/O, environment access, and path resolution through `pi_uutils_ctx`.
- Disabled process-level modifications (e.g., clock setting, hostname modification) to ensure safety and scope adherence within the shell environment.
- Implemented shell-specific features such as cancellation polling, custom exit code management, and efficient output streaming for all new builtins.
2026-07-11 20:37:52 +02:00
can1357 3d1f9a4a3c chore: bump version to 16.4.5 2026-07-11 19:50:41 +02:00
can1357 d618577da2 chore: update changelogs 2026-07-11 19:11:13 +02:00
can1357 e889572cf0 test(pi-shell): added integration tests for shell builtins
- Verify `sed` correctly streams stdin and performs in-place directory-relative edits.
- Validate `xargs` behavior regarding stdout piping, argument batching, and GNU-compatible exit codes.
- Ensure `jq` correctly filters JSON input, resolves relative file paths, and propagates exit status.
2026-07-11 19:10:55 +02:00
can1357 5a73d65b7a feat(shell): integrated additional coreutils into shell builtins
- Added base64, checksum utilities (md5, sha1, sha224, sha256, sha384, sha512, b2sum), path utilities (basename, dirname), and text processing tools (cut, tee, tr, paste, comm) to the shell.
- Registered new utility builtins in crates/pi-shell/src/coreutils.rs and crates/pi-shell/src/shell.rs.
- Updated Cargo.toml to include the necessary dependencies for the new core utilities.
2026-07-11 19:07:01 +02:00
can1357 cf1b3fc3fb chore: bump version to 16.4.4 2026-07-11 12:30:26 +02:00
can1357 6bc4302f61 chore: update changelogs 2026-07-11 12:30:03 +02:00
can1357 08571de3ce Merge remote-tracking branch 'origin/farm/e44a23a5/fix-windows-install-launch' 2026-07-11 12:29:39 +02:00
roboomp bc7a143c1e fix(setup): used portable native install artifacts
- Built the generic Windows release binary with Bun's baseline x64 runtime so older Windows 10 CPUs do not hit the AVX2-only modern executable.

- Forced pi-natives release builds to link PCRE2 statically so macOS installs do not depend on Homebrew's libpcre2 dylib.

- Added release dry-run and native-build regression coverage for the portable artifact contracts.

Fixes #5172
2026-07-11 09:47:37 +00:00
can1357 3272b65742 feat(pi-natives): prioritized shallow paths for fuzzy search ties
- Implemented path_depth as a tie-break mechanism for fuzzy search results.
- Updated fuzzy_find_sync sorting logic to surface shallow matches before deeper ones during score ties.
- Added a regression test confirming that root-level directories rank above nested ones when scores are identical.
2026-07-11 10:57:25 +02:00
can1357 f7930048d5 chore: bump version to 16.4.3 2026-07-11 07:55:17 +02:00
can1357 056fc5f694 chore: update changelogs 2026-07-11 07:42:53 +02:00
can1357 5a4a6670b1 feat(pi-walker): ignored parent rules that cover explicitly rooted walks
- Updated gitignore loading to filter out ancestor ignore rules that match the current explicit walk root.
- Retained unrelated parent ignore rules and processed local ignore files within the root normally.
- Added a regression test to ensure ignored roots still respect nested ignore rules.
2026-07-11 07:33:18 +02:00
can1357 45143e8c75 feat(natives): restricted traversal depth for glob pattern matching
- Added `walk_depth_bound` to calculate the maximum file path depth based on glob pattern segments.
- Configured the glob walker to restrict traversal depth for non-recursive patterns, preventing unnecessary scanning of subtrees that cannot match.
- Improved response times for narrow globs over large directories by pruning the search space earlier.
- Added test cases to verify depth-bounded matching behavior and pattern edge cases.
2026-07-11 05:47:54 +02:00
can1357 fd2d4616a6 chore: bump version to 16.4.2 2026-07-11 00:17:35 +02:00
can1357 395e4a5fcf chore: bump version to 16.4.1 2026-07-10 20:50:59 +02:00
can1357 a0f7266fbc chore: bump version to 16.4.0 2026-07-10 14:11:05 +02:00
can1357 e8d0a93db6 chore: bump version to 16.3.15 2026-07-09 22:44:35 +02:00
can1357 46b8ee737f feat(catalog): added Grok 4.5 model support
- Added Grok 4.5 to the model catalog and identity helper.
- Updated pricing and configuration settings for existing Grok models.
2026-07-09 22:43:34 +02:00
can1357 5ddb0719ad chore: bump version to 16.3.14 2026-07-09 20:37:29 +02:00
can1357 dd67447a03 chore: bump version to 16.3.13 2026-07-09 19:39:55 +02:00
can1357 4f8c341745 test(natives): pinned bash timeout output-bridge crash contract
Regression test for the WSL crash where a timed-out bash command got OMP
OOM-killed: an output-heavy command (in-process 'yes | cat') with a short
timeoutMs must resolve near its deadline with bounded RSS, on both
executeShell and Shell.run. On the pre-fix bridge the same harness measured
~4 GiB RSS growth and minutes-late resolution (JS event loop starved by the
unbounded callback flood); with the bounded backpressured bridge it resolves
at the deadline with flat memory. Also added the user-facing changelog entry
for the crash symptom.

Fixes #4866
2026-07-09 18:39:56 +02:00
can1357 606c51a7b7 fix(natives): decoded CF_DIB directly when arboard rejects an image
arboard's Windows reader feeds Qt-style CF_DIBV5 payloads (BI_RGB plus
alpha mask, rewritten to BI_BITFIELDS by its header tweak) to a
header-less BMP decode that mis-places the pixel offset for V4/V5
bitfield headers, so PixPin/Snipaste screenshots failed with
ConversionFailure. read_image_from_clipboard now falls back to reading
the raw CF_DIB clipboard bytes and decoding them through the BMP file
path with an explicit bfOffBits, keeping native Windows image paste off
the PowerShell bridge.

Fixes #3426
2026-07-09 18:33:44 +02:00
can1357 5d1e25f834 fix(shell): bounded backpressured native bash output bridge
The non-PTY bash streaming bridge queued every decoded chunk into
flume::unbounded and fired ThreadsafeFunction callbacks NonBlocking
with no budget, so a producer outrunning the JS event loop grew the
native queue (and the napi queue behind it) without bound — measured
33.5 MB queued for a 32 MiB stream with a stalled consumer, and
multi-GB RSS on longer runs. The downstream OutputSink caps sit after
the N-API boundary and cannot bound either queue.

Bound the pipeline end to end without dropping data:

- pi-natives: bridge_chunks now creates flume::bounded(64) and the
  drain task (extracted as pump_chunks) awaits on_chunk.call_async per
  coalesced <=64 KiB batch, so at most one batch sits in the napi
  queue and the JS event loop's real consumption rate backpressures
  the whole pipeline. If the JS side is gone, the pump exits and
  drops the receiver so senders fail fast.
- pi-shell: emit_chunk sends with send_async().await — a full bridge
  queue parks the pipe reader, which parks the child on its
  stdout/stderr pipe (ordinary pipe backpressure) instead of
  buffering; a disconnected receiver fails immediately so child pipes
  always keep draining.

Unlike a drop-after-cap design, every byte still reaches JS: the
rolling tail view, lossless [raw output: artifact://…] capture, and
totalBytes accounting keep working for outputs past the display cap.

E2E (darwin-arm64 addon): 32 MiB through a JS callback stalling 1 ms
per call — lossless, 472 coalesced callbacks, peak RSS +21.8 MiB.

Fixes #4078
2026-07-09 18:30:48 +02:00
can1357 f25ab54c59 chore: bump version to 16.3.12 2026-07-08 19:40:13 +02:00
can1357 259078d9df merge PR #4606: fix(pi-shell): pin spawn observer identity against Windows pid reuse 2026-07-08 15:19:41 +02:00
Brit d48d15a74c fix(natives): use path.delimiter for napi PATH lookup in build script
The build script joined PATH entries with ':' (Unix), so Bun.which could not
locate the @napi-rs/cli napi binary on Windows where the separator is ';'.
This blocked native builds and every test importing countTokens (its import
chain eager-loads the .node).
2026-07-07 11:04:22 +02:00