31 KiB
31 KiB
Changelog
[Unreleased]
[15.0.1] - 2026-05-14
Breaking Changes
- Raised the minimum required Bun runtime version to >=1.3.14
- Removed
PhotonImageclass,ImageFormatenum, andSamplingFilterenum from native exports. General-purpose image decode/resize/encode now usesBun.Image, which ships in Bun 1.3.14+ with statically-linked libjpeg-turbo, libspng, and libwebp plus SIMD geometry kernels — same operations, zero native-addon footprint.encodeSixelstays (no Bun equivalent for the SIXEL terminal protocol). - Removed
webpRust workspace dependency along withPhotonImage's WebP encoder.
[14.9.9] - 2026-05-12
Breaking Changes
- Removed
projfsOverlayProbe,projfsOverlayStart, andprojfsOverlayStopoverlays APIs andProjfsOverlayProbeResulttype from the public natives interface
Added
- Added unified isolation APIs
isoBackend,isoProbe,isoResolve,isoStart,isoStop,isoDiff, andisoIsUnavailableErrorfor selecting, probing, resolving, starting, stopping, and diffing isolated filesystems - Added
IsoBackendKind,IsoChangeKind,IsoDiff,IsoFileChange,IsoProbeResult, andIsoResolveResulttype exports to describe isolation backend capabilities and diff outcomes
Changed
- Changed
nativeexports to remove the platform-specific ProjFS-only overlay surface in favor of generic isolation controls
[14.9.5] - 2026-05-12
Fixed
- Fixed shell cancellation occasionally killing the harness. The
pi_shelldescendant tracker harvested every descendant'spgidinto the kill set, so any subprocess that inherited the harness's pgid (any helper spawned via APIs that do not callsetpgid— sibling LSP/MCP processes, etc.) draggedharness.pgidinto the list and the follow-upkill(-harness.pgid, SIGTERM)terminated the harness alongside the targets. The classifier now only adopts apgidwhen its leader is itself one of the new descendants, andkill_process_grouprefuses the harness's own process group as a last-line defense. - Fixed macOS process-tree termination silently doing nothing. The descendant walk relied on
proc_listchildpids, which on recent darwin kernels (25.4+) returns no entries when a process queries its own children, soProcess::descendantscame back empty and tree-kill cleanup never reached grandchildren. The walk now builds a one-shotppid → [pid]map fromproc_listallpids+proc_pidinfo, matching the approach already used byfind_by_pathand the Windows Toolhelp path.
Changed
- Removed the 20 Hz background descendant tracker that scanned the harness's process tree for the entire lifetime of every shell command. Cancellation now does a small rescan-and-signal loop on demand (up to three waves — SIGTERM, then SIGKILL, then SIGKILL — with early exit as soon as no descendants remain). The previous tracker existed to pin process identities against PID reuse races, but
Process::from_pidalready pins identity by kernel start time / pidfd, so the constant scanning paid for nothing and added meaningful syscall load on macOS where each scan now doesproc_listallpids+proc_pidinfoper pid.
[14.9.3] - 2026-05-10
Added
- Added
idle,system, anduseroptions toMacOSPowerAssertionso callers can request specific macOS sleep-prevention modes (caffeinate -i,-s, and-u) in addition to the existingdisplayoption - Added support for combining multiple macOS power assertion flags in a single
MacOSPowerAssertionhandle
Changed
- Changed
MacOSPowerAssertion.stop()documentation to indicate it releases all held assertions and is safe to call repeatedly as a no-op
[14.9.2] - 2026-05-10
Added
- Added
listWorkspace, a native single-pass workspace walker that returns bounded tree entries and AGENTS.md directory-context candidates together.
[14.7.1] - 2026-05-06
Added
- Added
sizeproperty toGlobMatchfor regular files to expose their byte size
Changed
- Sped up native
grepfiles-with-matches searches by stopping after the first match per file, reading small files without mmap overhead, and relying on grep-searcher binary detection instead of a separate full-file NUL scan.
Fixed
- Fixed native
grepfilesWithMatchesmode sototalMatchesreports the number of matching files rather than line-match totals - Fixed native
grepcount-mode limits applying to files instead of matches, and restored timeout/abort cancellation checks for small native filesystem scans.
[14.7.0] - 2026-05-04
Added
- Added
summarizeCodefunction to expose native code summarization withkind,startLine,endLine, and optionaltextsegments plus parse/elision metadata - Added
minBodyLinesandminCommentLinesoptions tosummarizeCodeto control when function/body and multiline comment elision is applied - Added
SummaryOptionsandSummaryResultTypeScript definitions for typedsummarizeCodeinput and output
[14.6.1] - 2026-05-02
Changed
- Changed the native package loader from CommonJS analyzer-visible assignments to a template-rendered ESM entry point with explicit named exports
[14.5.13] - 2026-05-01
Changed
- Stopped overriding
CARGO_TARGET_DIRwith an internaltarget/napi-build/...directory during native builds, so Cargo now uses the default or caller-provided target directory - Simplified native build profile suffix formatting without changing
localandcivalues - Changed the native build output behavior to avoid setting an isolated Cargo target directory automatically
Removed
- Removed the host Zig CPU contract wrapper (
zig-safe-wrapper.ts) and itsZIG/PI_NATIVE_REAL_ZIG/PI_NATIVE_ZIG_TARGET/PI_NATIVE_ZIG_CPUenv handling, since thezlobRust dependency that required Zig is gone - Removed the
ci-release-verify-nativesscript and its AVX-512 marker scan from the release pipeline
[14.5.12] - 2026-04-30
Breaking Changes
- Changed
waitForExitto accept a single options object instead of a numeric timeout argument
Added
- Added a
signaloption toterminatefor cancelling termination while waiting for process shutdown - Added abort
signalsupport towaitForExitviaProcessWaitOptions - Added a
ProcessWaitOptionstype and updatedwaitForExitto accept an options object
[14.5.9] - 2026-04-30
Fixed
- Fixed shell minimizer output so successful commands whose noise is fully stripped still return
OKinstead of an artifact-only result
[14.5.6] - 2026-04-29
Added
- Added shell minimizer support for CMake, CTest, Ninja, GoogleTest binaries, and Bun/Bunx wrappers that run those tools
[14.5.2] - 2026-04-26
Changed
- Changed local native build profile from
devtolocalfor non-CI builds, updating the profile used by the build and local build output label
[14.4.2] - 2026-04-26
Removed
- Removed the
chunknapi module (ChunkState, chunk schema, chunk rendering, chunk edit) and droppedgenerate_chunk_schema()from the build script
[14.3.0] - 2026-04-25
Added
- Added
texttoMinimizerResultso consumers can replace rewritten output with the minimized replacement text - Added
settingsHashtoMinimizerOptionsto verify the minimizersettingsPathcontents against a xxHash64 digest before applying them - Added
minimizedoutput telemetry viaMinimizerResultonShellExecuteResultandShellRunResult, exposing the applied minimizer filter and original/minimized byte counts when output is rewritten - Added a new
minimizeroption toShellExecuteOptionsandShellOptionsto configure per-command output minimization - Added the
MinimizerOptionsAPI with controls for enabling minimization, overriding settings viasettingsPath, allow/deny lists (only,except), andmaxCaptureBytescapture limits
Changed
- Changed the shell output minimizer to more aggressively compact successful test runs, git output, large listings, grep/find results, source reads, and dependency manifests
- Changed compound and piped shell commands to bypass output minimization entirely, keeping minimization limited to eligible whole-command output after the command exits
Fixed
- Fixed chunk edit batches so later operations can reuse an initially validated checksum after an earlier operation changes that same chunk
Removed
- Removed
PI_DEVloader diagnostic env var and associated console logging in the native addon loader
Security
- Added trust-gated loading for minimizer settings by requiring a matching
settingsHashbefore accepting a settings file
[14.2.0] - 2026-04-23
Added
- Added Dart support to
astGrepandastEditthrough the native tree-sitter Dart grammar (#748 by @0fflineuser)
[14.1.1] - 2026-04-14
Added
- Added support for honoring the
ZIGenvironment variable when resolving the Zig executable for native builds
Removed
- Removed the
SearchDbAPI from the natives type declarations - Removed the optional
dbparameter fromfuzzyFind,glob, andgrep - Removed the
fuzzyFind,glob, andgrepcache database argument previously used for search state
[14.0.5] - 2026-04-11
Breaking Changes
- Made
tabWidthparameter required (no longer optional) forvisibleWidth,truncateToWidth,wrapTextWithAnsi,sliceWithWidth, andextractSegments - Removed
getIndentation,getDefaultTabWidth, andsetDefaultTabWidth(moved to@oh-my-pi/pi-utils) visibleWidth,truncateToWidth,wrapTextWithAnsi,sliceWithWidth, andextractSegmentsnow require an explicittabWidthargument
[14.0.4] - 2026-04-10
Added
- Added
normalizeIndentoption toEditParamsto control indentation normalization for response rendering and inserted content - Added
hasConflicts()method to detect unresolved merge conflicts in parsed files - Added
conflictCount()method to count unresolved merge conflicts in the chunk tree
[14.0.2] - 2026-04-09
Added
- Added
Declvariant toChunkRegionenum for accessing semantic declarations without leading trivia - Added
check:typesscript for explicit TypeScript type checking - Added
lintscript for running Biome linter - Added
fmtscript for code formatting with Biome - Added package exports field with typed entry point configuration
- Added turbo.json configuration for build task caching and optimization
Changed
- Renamed
build:nativescript tobuildfor simpler invocation - Updated
checkscript to separately callcheck:typesfor type checking - Modified tsconfig.json to extend
tsconfig.workspace.jsoninstead oftsconfig.base.json
[14.0.0] - 2026-04-08
Breaking Changes
- Changed
ChunkRegion.Innerenum value toChunkRegion.Bodyto align with region semantics - Changed
ChunkRegionenum values fromContainer,Prologue,Body,EpiloguetoHead,Inner,Tailwith updated semantics for region targeting - Replaced
ChunkEditOpenum values —AppendChild,PrependChild,AppendSibling,PrependSibling, andReplaceBodyare nowBefore,After,Prepend, andAppendwith updated semantics for region-scoped operations - Removed
ReplaceBodyoperation — useReplacewithregion: ChunkRegion.Bodyto replace only chunk body content - Moved package entry point from
src/index.tstonative/index.js— consumers must update imports to use the new native module path - Removed TypeScript source files from
src/directory — all APIs now exported from auto-generatednative/index.jswith types innative/index.d.ts - Changed enum exports to runtime objects —
const enumvalues are now available at runtime via generated enum exports innative/index.js
Added
- Added
ChunkRegionenum withContainer,Prologue,Body, andEpiloguevalues for targeting specific regions within chunks - Added
regionparameter toEditOperationto specify which chunk region to target (defaults toContainer) - Added
UnsupportedRegionstatus toChunkReadStatusenum to indicate when a chunk does not support the requested region - Added
normalizeIndentparameter toRenderParamsandReadRenderParamsto normalize displayed indentation to canonical tabs - Added
ReplaceBodychunk edit operation to replace only the inner body of a chunk while preserving signature and closing delimiter - Added
ChunkFocusModeenum withExpanded,Collapsed, andContainermodes for controlling chunk participation in focus-scoped render passes - Added
FocusedPathinterface to pair paths with focus modes for the N-API boundary - Added
focusedPathsparameter toRenderParamsto restrict rendering to specified chunks with their focus modes - Generated native module bindings in
native/index.jsandnative/index.d.tsfrom napi-rs build output - Added
gen-enums.tsscript to extract and export runtime enum values from TypeScript const enums - Added
embedded-addon.jsfor managing embedded native addon variants and metadata - Added
MacOSPowerAssertionfor session-scoped macOS idle-sleep prevention without shelling out
Changed
- Changed
ChunkInfo.namefield to optionalidentifierfield — now provides bare chunk identifier without kind prefix instead of display name - Updated
regionparameter documentation inEditOperationto clarify full chunk targeting when omitted instead of container-scoped default - Updated
ChunkEditOpdocumentation to reflect region-scoped semantics — operations now target specific regions rather than chunk structure positions - Changed
ChunkEditOp.Replacedocumentation to clarify substring replacement viafindparameter instead of line-based replacement - Changed
EditOperationinterface to usefindparameter for scoped find/replace operations instead oflineandendLineparameters - Changed
EditParamsdocumentation to remove mention of scheduling reordering for line-scoped groups - Simplified native build pipeline by removing
--devflag support; debug builds no longer available through npm scripts - Updated native module loader to check
XDG_DATA_HOMEenvironment variable for native addon location before falling back to~/.omp/natives - Removed native binding validation function that checked for required exports at load time
- Refactored build pipeline to use napi-rs generated bindings instead of hand-written TypeScript wrappers
- Updated
build-native.tsto generate runtime enum exports after native compilation - Updated
embed-native.tsto output JavaScript instead of TypeScript for embedded addon metadata
Removed
- Removed
dev:nativenpm script — usebuild:nativefor all build scenarios - Removed inline pi-utils helpers and dependency on
@oh-my-pi/pi-utilsfrom native module loader - Removed
logger.time()wrapper calls from native module loading - Removed all TypeScript wrapper modules from
src/directory (appearance, ast, chunk, clipboard, glob, grep, highlight, html, image, keys, projfs, ps, pty, shell, text, work) - Removed
src/bindings.tsandsrc/index.tsentry points - Removed
src/search-db.tsandsrc/search-db-types.ts
[13.16.1] - 2026-03-27
Added
- Exported
SearchDbclass from main package entry point for direct instantiation - Added
SearchDbclass for stateful shared search database instances to improve performance across multiple search operations - Added optional
dbparameter togrep(),glob(), andfuzzyFind()functions to enable database-backed searching
Changed
- Updated
grep(),glob(), andfuzzyFind()function signatures to accept optionaldbparameter for database-backed searching
[13.12.0] - 2026-03-14
Breaking Changes
- Changed
abort()method signature: removed optionalreasonparameter and changed return type fromvoidtoPromise<void>
[13.4.0] - 2026-03-01
Breaking Changes
- Changed
AstFindOptions.patterntopatterns(now accepts array of strings instead of single string) - Replaced
AstReplaceOptions.patternandrewritewith singlerewritesoption (Record<string, string>)
Added
astGrepnow accepts multiple patterns in a single call; results from all patterns are merged and sorted by file path then position before offset/limit are appliedastEditnow accepts arewritesmap (Record<string, string>) and applies all patterns per file in a single pass, compiling them once upfront- Result ordering in
astGrepis now deterministic: sorted by path, line, column usingBTreeSet/BTreeMap
[13.3.8] - 2026-02-28
Added
- Added
astGrep()function for structural code search using AST patterns with support for language-specific matching, selectors, and meta-variable extraction - Added
astEdit()function for structural code rewriting with dry-run mode, replacement limits, and parse error handling - Added
./astexport path for accessing AST search and rewrite functionality
[12.18.0] - 2026-02-21
Changed
- Replaced custom
TextDecoderusage with nativetoString('utf-8')for buffer decoding - Replaced custom debug logging with structured
logger.time()calls for startup performance tracking
[12.17.1] - 2026-02-21
Added
- Expanded package exports to support subpath imports for clipboard, glob, grep, highlight, html, image, keys, ps, pty, shell, text, and work modules
- Added wildcard export patterns (
./*) for all submodules to enable flexible import paths
Changed
- Updated package description to clarify native bindings for grep, clipboard, image processing, syntax highlighting, PTY, and shell operations
- Expanded package keywords to include clipboard, image, pty, shell, and syntax-highlighting for better discoverability
- Added README.md to package distribution files
[12.10.0] - 2026-02-18
Changed
- Updated addon filename resolution to include default filename fallback in both modern and baseline variant paths
[12.8.2] - 2026-02-17
Breaking Changes
- Removed
getSystemInfo()andSystemInfofrom package exports, breaking consumers that imported system info APIs from this package
[12.8.0] - 2026-02-16
Added
- Added support for x64 CPU variant selection with
TARGET_VARIANTenvironment variable (modern/baseline) during build to optimize for specific ISA levels - Added automatic AVX2 detection on Linux, macOS, and Windows to select optimal native addon variant at runtime
- Added
PI_NATIVE_VARIANTenvironment variable to override CPU variant selection at runtime - Added support for multiple native addon variants per platform (modern with AVX2, baseline without AVX2) for improved performance portability
Changed
- Changed native addon filename scheme to include CPU variant suffix for x64 builds (e.g.,
pi_natives.linux-x64-modern.node) - Changed embedded addon structure to support multiple variant files per platform instead of single file
- Changed native addon loader to automatically select appropriate variant based on CPU capabilities or explicit override
- Changed build output to include variant information in console messages
Removed
- Removed fallback untagged
pi_natives.nodebinary creation for native builds; platform-tagged variants are now required
Fixed
- Fixed regex patterns containing literal braces (e.g.
${platform}) failing with "repetition quantifier expects a valid decimal" by escaping{/}that don't form valid repetition quantifiers
[12.5.0] - 2026-02-15
Added
- Added
recursiveoption toGlobOptionsto control whether simple patterns match recursively (defaults to true)
Changed
- Changed default glob pattern behavior to always use recursive matching for simple patterns instead of requiring explicit
**/prefix - Updated
fileTypefilter documentation to clarify that symlinks match file/dir filters based on their target type
[12.4.0] - 2026-02-14
Added
- Exported
sanitizeTextfunction to strip ANSI codes, remove binary garbage, and normalize line endings in text output
[12.1.0] - 2026-02-13
Added
- Added
cacheoption toglob(),grep(), andfuzzyFind()to enable shared filesystem scan caching - Added
invalidateFsScanCache()function to manually invalidate filesystem scan cache entries
[11.14.0] - 2026-02-12
Added
- Added
PtySessionclass for PTY-backed interactive command execution with streaming output - Added
PtyStartOptionsinterface to configure pseudo-terminal sessions with command, working directory, environment variables, and terminal dimensions - Added
PtyRunResultinterface to report command exit code, cancellation, and timeout status - Added
write()method to send raw input to PTY stdin - Added
resize()method to dynamically adjust PTY column and row dimensions - Added
kill()method to force-terminate active commands
[11.3.0] - 2026-02-06
Added
- OSC 52 fallback for clipboard operations over SSH/mosh connections
- Termux support with
termux-clipboard-setintegration - Headless environment guards to prevent clipboard errors when no display server is available
- Async clipboard API with improved error handling and fallback strategies
Changed
- OSC 52 clipboard emission now only occurs in real terminal environments (when stdout is a TTY), preventing unnecessary output in piped or headless contexts
- Improved error handling for OSC 52 writes to gracefully handle EPIPE errors when stdout is closed or piped to processes that exit early
- Clipboard functions now return promises for better async handling
- Native clipboard operations are now best-effort with graceful degradation
[11.0.0] - 2026-02-05
Removed
- Removed legacy type aliases
WasmMatchandWasmSearchResult
[10.6.0] - 2026-02-04
Changed
- Added separate grep context before/after options in bindings
[10.2.2] - 2026-02-02
Added
- Exported
getWorkProfilefunction andWorkProfiletype for work profiling capabilities
[10.2.0] - 2026-02-02
Breaking Changes
- Replaced
find()withglob()- update imports and function calls - Changed file type filtering from string values to
FileTypeenum - Removed
abortShellExecution()function - useShell.abort()method instead - Removed
RequestOptionsparameter fromhtmlToMarkdown()- pass options directly
Added
- Added
glob()function for file discovery with glob pattern matching and .gitignore support - Added
Cancellableinterface for timeout and abort signal support across async operations - Added
FileTypeenum to filter glob results by file type (File, Dir, Symlink) - Added
signalparameter to shell operations for cancellation via AbortSignal
Changed
- Renamed
find()toglob()for file discovery operations - Renamed
FindMatchtoGlobMatchandFindOptionstoGlobOptions - Moved timeout and abort signal handling into unified
Cancellableinterface across grep, glob, and shell modules - Updated
Shell.abort()to accept optional abort reason parameter - Simplified
htmlToMarkdown()signature by removingRequestOptionsparameter
Removed
- Removed
RequestOptionstype andwrapRequestOptions()utility function - Removed
abortShellExecution()function; useShell.abort()instead - Removed
executionIdparameter fromShellExecuteOptions
[10.1.0] - 2026-02-01
Breaking Changes
- Changed
executionIdparameter type fromstringtonumberinabortShellExecution()andShellExecuteOptions - Removed
sessionKeyfield fromShellExecuteOptions
Added
- Added
getWorkProfile()function to retrieve work scheduling profiling data from a circular buffer of recent activity - Added
WorkProfiletype with folded stack format, markdown summary, SVG flamegraph, and sample metrics for profiling results
[9.8.0] - 2026-02-01
Breaking Changes
- Removed
resize()function; usePhotonImage.resize()method instead - Removed
terminateImageWorker()function - Changed
PhotonImage.new_from_byteslice()toPhotonImage.parse() - Changed
PhotonImage.get_bytes()toencode(ImageFormat.PNG, 100) - Changed
PhotonImage.get_bytes_jpeg(quality)toencode(ImageFormat.JPEG, quality) - Removed
get_width()andget_height()methods; usewidthandheightproperties instead - Removed manual resource management via
free()andSymbol.dispose
Added
- Added automatic extraction of embedded native addon to
~/.omp/natives/<version>on first run for compiled binaries - Added
embed:nativebuild script to embed platform-specific native addon payloads into compiled binaries - Exported
Shellclass for creating persistent shell sessions withrun()method and session options - Exported
ShellOptions,ShellRunOptions, andShellRunResulttypes for shell session management - Exported
find()function for file discovery with glob patterns and .gitignore support - Exported
FindOptions,FindMatch, andFindResulttypes for file search operations - Exported
ImageFormatenum for specifying output formats (PNG, JPEG, WEBP, GIF) in image encoding - Added
ImageFormatenum for specifying output format (PNG, JPEG, WEBP, GIF) inencode()method - Added
SamplingFilteras exported enum instead of object - Added
Shellclass with persistent session options (sessionEnv,snapshotPath) and arun()command API - Exported
getSystemInfo()function andSystemInfotype for retrieving system information including distro, kernel, CPU, and disk details - Exported
copyToClipboard()andreadImageFromClipboard()functions for clipboard operations - Exported
ClipboardImagetype for clipboard image data with MIME type information - Added
wrapTextWithAnsi()function to wrap text to a visible width while preserving ANSI escape codes across line breaks - Added native clipboard helpers for copying text and reading images via arboard
Changed
- Enhanced native addon loading to prioritize extracted embedded addon for compiled binaries before falling back to system paths
- Improved error messages to provide platform-specific guidance for addon loading failures, including manual download instructions for compiled binaries
- Reorganized native bindings into modular type files with declaration merging via
NativeBindingsinterface - Moved type definitions from implementation files to dedicated
types.tsmodules for better separation of concerns - Enhanced
SystemInfotype with additional fields:os,arch,hostname,shell,terminal,de,wm, andgpu - Refactored module exports to use direct destructuring from native bindings instead of wrapper functions
- Changed
PhotonImageAPI to use instance methods (resize(),encode()) instead of standalone functions - Changed
PhotonImageto use property accessors forwidthandheightinstead of getter methods - Embedded native addon payload for compiled binaries and extract to
~/.omp/natives/<version>on first run
[9.7.0] - 2026-02-01
Added
- Exported
killTreefunction to kill a process and all its descendants using platform-native APIs - Exported
listDescendantsfunction to list all descendant PIDs of a process - Added
dev:nativenpm script to build debug native binaries with--devflag - Added
OMP_DEVenvironment variable support for loading and debugging development native builds - Exported keyboard parsing and matching functions:
parseKey,parseKittySequence,matchesLegacySequence, andmatchesKeyfor terminal input handling - Exported
KeyEventTypeenum andParsedKittyResulttype for Kitty keyboard protocol support - Added
parseKeyfunction to parse terminal input and return normalized key identifiers (e.g., "ctrl+c", "shift+tab") - Added
parseKittySequencefunction to parse Kitty keyboard protocol sequences with codepoint, modifier, and event type information - Added
matchesLegacySequencefunction to match legacy escape sequences for specific keys - Added
matchesKeyfunction to match input against key identifiers with support for modifiers and Kitty protocol
Changed
- Modified native binary build process to support both debug and release builds via
--devflag - Updated native binary search to prioritize platform-tagged builds and separate debug/release candidates
- Changed debug builds to output to
pi_natives.dev.nodeinstead of mixing with release artifacts - Improved native binary installation to use atomic rename operations and better fallback handling for Windows DLLs
- Reordered native binary search candidates to prioritize platform-tagged builds and avoid loading stale cross-compiled binaries
- Enhanced cross-compilation detection to prevent installing wrong-platform fallback binaries during cross-compilation builds
Fixed
- Fixed potential issue where cross-compiled binaries could overwrite platform-specific native builds with incorrect architecture binaries
[9.6.4] - 2026-02-01
Breaking Changes
- Changed callback signature for
find()andgrep()streaming callbacks to receive(error, match)instead of(match)for proper error handling
[9.6.2] - 2026-02-01
Breaking Changes
- Renamed
EllipsisKindenum toEllipsis - Changed
TextInputtype parameter tostringintruncateToWidth(),visibleWidth(),sliceWithWidth(), andextractSegments()functions—Uint8Array is no longer accepted - Removed
TextInputtype export from public API
Added
- Added
visibleWidth()function to measure the visible width of text, excluding ANSI codes
Changed
- Reordered native module search paths to prioritize repository build artifacts
- Improved JSDoc documentation for
truncateToWidth()with clearer parameter descriptions and behavior details - Added early return optimization in
truncateToWidth()to skip native call when text fits within maxWidth and padding is not requested - Added early return optimization in
sliceWithWidth()to return empty result when length is zero or negative
Removed
- Removed validation checks for
PhotonImageandSamplingFilternative exports - Removed early return optimization in
truncateToWidth()when text fits within maxWidth
[9.6.1] - 2026-02-01
Added
- Added
matchesKittySequencefunction to match Kitty protocol sequences for codepoint and modifier
Removed
- Removed
visibleWidthfunction from text utilities
[9.6.0] - 2026-02-01
Added
- Support for cross-compilation via
CARGO_BUILD_TARGETenvironment variable - Support for overriding platform and architecture detection via
TARGET_PLATFORMandTARGET_ARCHenvironment variables
Changed
- Native build script now searches for release artifacts in target-specific directories when cross-compiling
[9.5.0] - 2026-02-01
Added
- Added
sortByMtimeoption toFindOptionsto sort results by modification time (most recent first) before applying limit - Added streaming callback support to
grep()function via optionalonMatchparameter for real-time match notifications - Exported
RequestOptionstype for timeout and abort signal configuration across native APIs - Exported
fuzzyFindfunction for fuzzy file path search with gitignore support - Exported
FuzzyFindOptions,FuzzyFindMatch, andFuzzyFindResulttypes for fuzzy search API - Added
fuzzyFindexport for fuzzy file path search with gitignore support
Changed
- Changed
grep()andfuzzyFind()to support timeout and abort signal handling viaRequestOptions - Updated
GrepOptionsandFuzzyFindOptionsto extendRequestOptionsfor consistent timeout/cancellation support - Refactored
htmlToMarkdown()to support timeout and abort signal handling
Removed
- Removed
grepDirect()function (usegrep()instead) - Removed
grepPool()function (usegrep()instead) - Removed
terminate()export from grep module - Removed
terminateHtmlWorkerexport from html module
Fixed
- Fixed potential crashes when updating native binaries by using safe copy strategy that avoids overwriting in-memory binaries