Files
oh-my-pi/packages/natives/CHANGELOG.md
T
2026-02-13 15:43:23 +01:00

12 KiB

Changelog

[Unreleased]

[12.1.0] - 2026-02-13

Added

  • Added cache option to glob(), grep(), and fuzzyFind() to enable shared filesystem scan caching
  • Added invalidateFsScanCache() function to manually invalidate filesystem scan cache entries

[11.14.0] - 2026-02-12

Added

  • Added PtySession class for PTY-backed interactive command execution with streaming output
  • Added PtyStartOptions interface to configure pseudo-terminal sessions with command, working directory, environment variables, and terminal dimensions
  • Added PtyRunResult interface 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-set integration
  • 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 WasmMatch and WasmSearchResult

[10.6.0] - 2026-02-04

Changed

  • Added separate grep context before/after options in bindings

[10.2.2] - 2026-02-02

Added

  • Exported getWorkProfile function and WorkProfile type for work profiling capabilities

[10.2.0] - 2026-02-02

Breaking Changes

  • Replaced find() with glob() - update imports and function calls
  • Changed file type filtering from string values to FileType enum
  • Removed abortShellExecution() function - use Shell.abort() method instead
  • Removed RequestOptions parameter from htmlToMarkdown() - pass options directly

Added

  • Added glob() function for file discovery with glob pattern matching and .gitignore support
  • Added Cancellable interface for timeout and abort signal support across async operations
  • Added FileType enum to filter glob results by file type (File, Dir, Symlink)
  • Added signal parameter to shell operations for cancellation via AbortSignal

Changed

  • Renamed find() to glob() for file discovery operations
  • Renamed FindMatch to GlobMatch and FindOptions to GlobOptions
  • Moved timeout and abort signal handling into unified Cancellable interface across grep, glob, and shell modules
  • Updated Shell.abort() to accept optional abort reason parameter
  • Simplified htmlToMarkdown() signature by removing RequestOptions parameter

Removed

  • Removed RequestOptions type and wrapRequestOptions() utility function
  • Removed abortShellExecution() function; use Shell.abort() instead
  • Removed executionId parameter from ShellExecuteOptions

[10.1.0] - 2026-02-01

Breaking Changes

  • Changed executionId parameter type from string to number in abortShellExecution() and ShellExecuteOptions
  • Removed sessionKey field from ShellExecuteOptions

Added

  • Added getWorkProfile() function to retrieve work scheduling profiling data from a circular buffer of recent activity
  • Added WorkProfile type 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; use PhotonImage.resize() method instead
  • Removed terminateImageWorker() function
  • Changed PhotonImage.new_from_byteslice() to PhotonImage.parse()
  • Changed PhotonImage.get_bytes() to encode(ImageFormat.PNG, 100)
  • Changed PhotonImage.get_bytes_jpeg(quality) to encode(ImageFormat.JPEG, quality)
  • Removed get_width() and get_height() methods; use width and height properties instead
  • Removed manual resource management via free() and Symbol.dispose

Added

  • Added automatic extraction of embedded native addon to ~/.omp/natives/<version> on first run for compiled binaries
  • Added embed:native build script to embed platform-specific native addon payloads into compiled binaries
  • Exported Shell class for creating persistent shell sessions with run() method and session options
  • Exported ShellOptions, ShellRunOptions, and ShellRunResult types for shell session management
  • Exported find() function for file discovery with glob patterns and .gitignore support
  • Exported FindOptions, FindMatch, and FindResult types for file search operations
  • Exported ImageFormat enum for specifying output formats (PNG, JPEG, WEBP, GIF) in image encoding
  • Added ImageFormat enum for specifying output format (PNG, JPEG, WEBP, GIF) in encode() method
  • Added SamplingFilter as exported enum instead of object
  • Added Shell class with persistent session options (sessionEnv, snapshotPath) and a run() command API
  • Exported getSystemInfo() function and SystemInfo type for retrieving system information including distro, kernel, CPU, and disk details
  • Exported copyToClipboard() and readImageFromClipboard() functions for clipboard operations
  • Exported ClipboardImage type 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 NativeBindings interface
  • Moved type definitions from implementation files to dedicated types.ts modules for better separation of concerns
  • Enhanced SystemInfo type with additional fields: os, arch, hostname, shell, terminal, de, wm, and gpu
  • Refactored module exports to use direct destructuring from native bindings instead of wrapper functions
  • Changed PhotonImage API to use instance methods (resize(), encode()) instead of standalone functions
  • Changed PhotonImage to use property accessors for width and height instead 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 killTree function to kill a process and all its descendants using platform-native APIs
  • Exported listDescendants function to list all descendant PIDs of a process
  • Added dev:native npm script to build debug native binaries with --dev flag
  • Added OMP_DEV environment variable support for loading and debugging development native builds
  • Exported keyboard parsing and matching functions: parseKey, parseKittySequence, matchesLegacySequence, and matchesKey for terminal input handling
  • Exported KeyEventType enum and ParsedKittyResult type for Kitty keyboard protocol support
  • Added parseKey function to parse terminal input and return normalized key identifiers (e.g., "ctrl+c", "shift+tab")
  • Added parseKittySequence function to parse Kitty keyboard protocol sequences with codepoint, modifier, and event type information
  • Added matchesLegacySequence function to match legacy escape sequences for specific keys
  • Added matchesKey function 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 --dev flag
  • Updated native binary search to prioritize platform-tagged builds and separate debug/release candidates
  • Changed debug builds to output to pi_natives.dev.node instead 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() and grep() streaming callbacks to receive (error, match) instead of (match) for proper error handling

[9.6.2] - 2026-02-01

Breaking Changes

  • Renamed EllipsisKind enum to Ellipsis
  • Changed TextInput type parameter to string in truncateToWidth(), visibleWidth(), sliceWithWidth(), and extractSegments() functions—Uint8Array is no longer accepted
  • Removed TextInput type 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 PhotonImage and SamplingFilter native exports
  • Removed early return optimization in truncateToWidth() when text fits within maxWidth

[9.6.1] - 2026-02-01

Added

  • Added matchesKittySequence function to match Kitty protocol sequences for codepoint and modifier

Removed

  • Removed visibleWidth function from text utilities

[9.6.0] - 2026-02-01

Added

  • Support for cross-compilation via CARGO_BUILD_TARGET environment variable
  • Support for overriding platform and architecture detection via TARGET_PLATFORM and TARGET_ARCH environment 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 sortByMtime option to FindOptions to sort results by modification time (most recent first) before applying limit
  • Added streaming callback support to grep() function via optional onMatch parameter for real-time match notifications
  • Exported RequestOptions type for timeout and abort signal configuration across native APIs
  • Exported fuzzyFind function for fuzzy file path search with gitignore support
  • Exported FuzzyFindOptions, FuzzyFindMatch, and FuzzyFindResult types for fuzzy search API
  • Added fuzzyFind export for fuzzy file path search with gitignore support

Changed

  • Changed grep() and fuzzyFind() to support timeout and abort signal handling via RequestOptions
  • Updated GrepOptions and FuzzyFindOptions to extend RequestOptions for consistent timeout/cancellation support
  • Refactored htmlToMarkdown() to support timeout and abort signal handling

Removed

  • Removed grepDirect() function (use grep() instead)
  • Removed grepPool() function (use grep() instead)
  • Removed terminate() export from grep module
  • Removed terminateHtmlWorker export from html module

Fixed

  • Fixed potential crashes when updating native binaries by using safe copy strategy that avoids overwriting in-memory binaries