Commit Graph
573 Commits
Author SHA1 Message Date
can1357 72e8bc6c8c Merge remote-tracking branch 'origin/farm/d2ef4392/fix-linux-native-addon-load-hang' 2026-06-14 17:26:32 +02:00
roboomp f4216501c4 fix(natives): avoided linux addon load hang
Kept the custom Tokio worker probe on Windows only so Linux source-built addons do not spawn probe threads during Bun module initialization.

Added an import-time regression test and changelog entry for the Linux native addon load path.

Fixes #2553
2026-06-14 08:36:43 +00:00
can1357 4a2417c92f fix(pi-shell): fixed here-document chains to avoid segmented minimizer re-run failures
- Marked heredoc redirects as unsafe for chain segmentation so commands with here-docs run via the single execution path instead of being replayed.
- Added regression tests in minimizer and shell modules covering quoted, escaped, and chained here-doc pipelines.
- Recorded the fix in the natives changelog for multi-command quoted/escaped heredoc handling.
2026-06-14 08:55:35 +02:00
can1357 2ef7b7929b fix(pi-ast): fixed block range resolution for blank-line-starting declarations
- Updated `block_range_at` to query a one-column span from `col` to `col + 1` instead of a zero-width point, preventing zero-width separator nodes from trapping resolution to enclosing scopes.
- Added regression tests for Swift computed properties and top-level declarations after blank lines so the resolver now returns the expected block boundaries.
- Documented the fix in the package changelog under the `Fixed` section for native tooling block-range operations.
2026-06-14 08:06:48 +02:00
lukandcan1357 50ca4cad2c fix(pi-natives): avoid deadlock by deferring tokio runtime install
(cherry picked from commit c1a1cb6149e73b345919dd4cf629b0d9ac74fb57)
2026-06-14 07:48:12 +02:00
can1357 19766762cd chore: bump version to 15.12.6 2026-06-14 02:35:06 +02:00
can1357 cc35258e0e style(natives): apply rustfmt to lib.rs imports and doc comments 2026-06-14 02:34:28 +02:00
can1357 9a26a945a7 fix: dropped unavailable forced toolChoice and added runtime fallback recovery
- Validated queued toolChoice against active tools in agent and coding-agent sessions.
- Rejected queued forced choices with reason "unavailable" when selected tools were inactive.
- Dropped provider toolChoice payloads when requested function tools were not offered.
- Probed Tokio worker-thread support and fell back to current-thread runtime creation.
2026-06-14 01:32:47 +02:00
can1357 e14f7effa7 fix: remove flakey test 2026-06-13 22:14:34 +02:00
can1357 eac1d21f93 chore: bump version to 15.12.5 2026-06-13 21:51:43 +02:00
can1357 15b5c1397f chore: bump version to 15.12.4 2026-06-13 18:04:39 +02:00
can1357 b921b67db7 fix(pi-shell): fixed quoted heredoc execution without trailing newline
- Added `ensure_trailing_newline_for_heredoc` to normalize commands by appending a newline for heredoc inputs missing one.
- Applied the helper in both one-shot and streaming shell execution paths before invoking `run_string`.
- Added a regression test for quoted heredocs at EOF in Unix and documented the fix in the natives changelog.
2026-06-13 14:38:36 +02:00
can1357 2e5b0b5757 fix(brush-core-vendored): fixed async background PID targeting for nohup wrapper
- Added a transparent_background_wrapper flag to builtin registrations and a helper constructor.
- Updated async background job creation to classify transparent wrapper builtins and launch the unwrapped command as the tracked job.
- Marked nohup as a transparent background wrapper and added a test asserting `nohup cmd &` exposes a child PID in `$!`.
2026-06-12 22:37:01 +02:00
can1357 db421bb2ef chore: bump version to 15.12.3 2026-06-12 18:13:09 +02:00
can1357 7975ebea8c chore: bump version to 15.12.2 2026-06-12 17:03:05 +02:00
can1357 ba27bbd3a3 chore: bump version to 15.12.1 2026-06-12 16:27:14 +02:00
can1357 89e0801a5d chore: bump version to 15.12.0 2026-06-12 15:50:06 +02:00
can1357 961e7c10d3 feat(utils): added isMacosMallocStackLoggingEnvName() function
- Added isMacosMallocStackLoggingEnvName() function to identify MallocStackLogging and MallocStackLoggingNoCompact variables. Updated filterProcessEnv() and Bun.env initialization to skip these variables during environment filtering. Added test case to verify malloc stack logging toggles are dropped instead of forwarded.
2026-06-12 15:46:52 +02:00
can1357 e13ad3805f chore: bump version to 15.11.8 2026-06-12 12:16:34 +02:00
can1357 a8e1f636f6 refactor(minimizer): applied #[must_use] annotations and simplified minimizer parsing internals
- Applied #[must_use] annotations across minimizer and process APIs to flag ignored return values.
- Replaced direct serde_json field reads with typed Value helper calls in several filters.
- Simplified filter parsing with chained if-let guards, rfind checks, and related cleanup.
- Updated minimizer tests and fixtures to build outputs via write! and fmt::Write.
2026-06-12 12:16:18 +02:00
can1357 ab40078473 refactor(pi-shell/minimizer): removed redundant wrapper_invokes helper
- Removed the wrapper_invokes helper function from the minimizer filters module.
2026-06-12 12:06:38 +02:00
metaphorics 2c7c7d7b4d style(pi-shell): cargo fmt sweep over review fix commits 2026-06-12 18:48:56 +09:00
metaphorics 376f612ac1 fix(pi-shell): pass glab mr diff through raw
Op: correct
Restores: spec:glab mr diff output passes through unmodified like gh pr diff
2026-06-12 18:48:56 +09:00
metaphorics 64fe4ce0ae fix(pi-shell): mark omitted glab releases past the cap
Op: correct
Restores: spec:truncated glab release list signals the omission count
2026-06-12 18:48:56 +09:00
metaphorics 69cc4648dd test(pi-shell): lift max_capture_bytes in the fixtures harness
Prevent oversized fixtures from silently triggering the size passthrough path
and causing a misleading savings-gate failure instead of a real filter failure.

Op: correct
2026-06-12 18:48:56 +09:00
metaphorics 84df078fc4 fix(pi-shell): pass pip list --format=json through unmodified
The --format=json / --format json flag forms were not recognised by the
machine-readable opt-out; the output was parsed and rewritten as a text summary.
Extend the opt-out to cover both flag forms.

Op: correct
Restores: spec:any pip list --format=<machine-readable> output passes through unchanged
2026-06-12 18:48:56 +09:00
metaphorics 0ff2311c98 fix(pi-shell): require a non-space rule char in is_horizontal_rule
Whitespace-only lines are not markdown horizontal rules. Current callers trim
first so no live bug, but the invariant should be enforced in the function.

Op: correct
2026-06-12 18:48:56 +09:00
metaphorics a8096aadb1 test(pi-shell): cover command_has_ordered_tokens and command_has_any_token
Reversed-order negative, first==second edge case, --flag=value match and
non-match, and substring-of-value non-match.

Op: extend
2026-06-12 18:48:56 +09:00
metaphorics b211824227 fix(pi-shell): rebuild routed ctx for eslint/tsc/biome JS wrappers
Op: correct
Restores: spec:npx eslint -f json and similar formatter flags preserved through JS wrapper
2026-06-12 18:48:56 +09:00
metaphorics 0cce82cfef fix(pi-shell): route attached docker-compose up through the log filter
Op: correct
Restores: spec:docker-compose up attached output is preserved as log output, not stripped as build progress
2026-06-12 18:48:56 +09:00
metaphorics 50fec8a0f9 fix(pi-shell): bypass the worktree condenser for porcelain/null output
Op: correct
Restores: spec:git worktree list --porcelain output passes through unmodified
2026-06-12 18:48:55 +09:00
metaphorics 41789c84b9 fix(pi-shell): keep go -json benchmark rows out of the pass aggregator
Op: correct
Restores: spec:go test -json -bench runs are not collapsed to a package-count summary
2026-06-12 18:48:55 +09:00
metaphorics 3771d285d1 fix(pi-shell): skip option values when classifying jvm build goals/tasks
Op: correct
Restores: spec:detect_phase and detect_task return last recognised lifecycle
goal/task, not the value of a value-taking option like -pl or -p
2026-06-12 18:48:55 +09:00
metaphoricsandGitHub 8be62619d2 Merge branch 'can1357:main' into feat/minimizer-rtk-snip-port 2026-06-12 17:06:25 +09:00
can1357 10d577e301 chore: bump version to 15.11.7 2026-06-12 10:02:58 +02:00
can1357 3fc086eca8 perf: narrowed indexed PNG palettes and selected frame-specific bit depth
- Used per-frame palette usage statistics to remap global indices into a compact local palette before PNG encoding.
- Encoded indexed outputs with dynamic 1-, 2-, and 4-bit depths based on used color count.
- Raised PNG compression from Balanced to High for indexed and RGB paths and updated parity and decode tests for variable-bit palette decoding.
2026-06-12 09:36:46 +02:00
can1357 a9229b0f26 feat(snapcompact): clipped snapcompact PNG frame height to rendered text rows
- Adjusted snapcompact rendering to compute used rows from text, dim toggles, and doc line breaks, then derive output height from usedRows x lineRepeat x cellHeight.
- Updated indexed and RGB PNG encoders to accept explicit canvas width and height so native renders now emit non-square frames matching actual content.
- Expanded Rust and TypeScript tests and updated docs/changelogs to assert and describe variable-height frame behavior.
2026-06-12 09:11:41 +02:00
can1357 d06429dbb1 feat(natives): added 6x12/8x13 fonts and doc-layout options to the snapcompact renderer
- Vendored the public-domain X.org misc `6x12` and `8x13` BDF fonts under `crates/pi-natives/src/fonts/` and registered them in `crates/pi-natives/src/snapcompact.rs`.
- Added `stretch: false` (natural-size glyphs on a larger cell pitch, keeping the 4-bit indexed encoder) and `columns: 2` (two newspaper columns with a 3-cell gutter) options to `renderSnapcompactPng`, typed in `packages/natives/native/index.d.ts`.
- Made `U+2588` FULL BLOCK a line-break marker that fills its cell box with pitch-black ink in grid and doc layouts, ignores sentence hue and dim state, and counts as a sentence boundary after a `.`/`!`/`?` terminator; doc mode also advances sentence hues across a terminator followed by a newline.
- Recorded the natives changelog entries.
2026-06-12 07:36:24 +02:00
can1357 1eb7cbe3fe chore: bump version to 15.11.6 2026-06-12 06:31:58 +02:00
can1357 f80cf7d584 chore: bump version to 15.11.5 2026-06-12 05:58:26 +02:00
can1357 0cb3cb6b9d chore: bump version to 15.11.4 2026-06-12 04:26:57 +02:00
can1357 cfeaee0105 feat(coding-agent): add shimmer to running jobs and refine ID display
- Running job labels now shimmer in the TUI to provide a dynamic visual indicator of activity.
- Adjusted cache key to account for shimmer animation, ensuring it updates at 30fps instead of the 12.5fps spinner cadence.
- Suppressed job ID display when the job label is identical to its ID, avoiding redundant information.
2026-06-12 04:01:10 +02:00
bling 79fe2134e9 fix(natives): resolved bash for extensionless shell rc files
blockRangeAt inferred no language for files like `zshrc`/`.zshrc`/`.bashrc`
because `Path::extension` returns `None` for bare and dotfile names alike,
so the edit tool's `replace block` / `insert after block` ops were
permanently unresolvable on them — an agent retrying the block op would
loop on the same "could not resolve a syntactic block" error.

from_extension now maps known shell rc/profile basenames (zshrc, zshenv,
zprofile, zlogin, zlogout, zsh_aliases, bashrc, bash_profile, bash_login,
bash_logout, bash_aliases, profile, kshrc, mkshrc, shrc; with or without a
leading dot) to the bash grammar, alongside the existing Makefile/Dockerfile
basename handling. Adds a block-resolution regression test over a zsh
`if [[ … ]]; then … fi` block in `zshrc`/`.zshrc`/`.bashrc`.
2026-06-11 20:36:54 -04:00
metaphorics 42d7f1e40c style(pi-shell): cargo fmt sweep over workflow-committed files
Workflow worktree agents committed without running cargo fmt; main
working tree carried the correctly-formatted versions. No functional
change.
2026-06-12 04:59:56 +09:00
metaphorics c81e6d8a42 fix(pi-shell): gate rsync success shortcut on exit 0
The match_output 'ok (synced)' shortcut was not exit-gated: a rsync run
that exits non-zero but happens to emit 'total size is' without the
(?i) unless keywords would silently succeed. Add only_on_exit = [0] at
the filter level so the entire rsync def is bypassed on failure exits,
passing the raw diagnostic output through.

Op: correct
2026-06-12 04:53:51 +09:00
metaphoricsandGitHub 513f661b3b Merge branch 'can1357:main' into feat/minimizer-rtk-snip-port 2026-06-12 04:51:06 +09:00
can1357 37faeb6a6d chore: bump version to 15.11.3 2026-06-11 21:28:47 +02:00
metaphorics 2219269eb4 refactor(pi-shell): hoist shared gh/glab helpers to primitives
Five byte-identical private helpers across gh.rs and glab.rs
(command_has_ordered_tokens, command_has_any_token, head_tail_dedup,
is_markdown_badge_or_image, is_horizontal_rule) are now pub fn in
primitives.rs. Both callers updated to use primitives::.

Op: compress
2026-06-12 04:26:48 +09:00
metaphorics c5e96e24d3 fix(pi-shell): keep JUnit5 assertion messages in gradle failure output
The failure-block parser in the Gradle test filter only kept exception lines
starting with 'java.' or 'kotlin.', silently dropping JUnit5 assertion messages
(org.opentest4j.AssertionFailedError: expected...). Now any non-stack non-blank
line inside a failure block is treated as exception/message and kept.

Op: correct
2026-06-12 04:22:47 +09:00
metaphorics 5404fa3b1e fix(pi-shell): classify jvm build tasks by last recognized goal/task
detect_phase (Maven): was picking the LAST non-flag token, so 'mvn test -pl
module-a' resolved to Passthrough. Now picks the last RECOGNIZED lifecycle goal,
ignoring option-value tokens.

detect_task (Gradle): was picking the LAST non-flag non-clean token, so 'gradle
test --tests FooSpec' resolved to Other (Foo not recognized). Now picks the FIRST
recognized task token, since tasks precede option-values in gradle command lines.

Op: correct
2026-06-12 04:20:59 +09:00