- Added a new `tokens` module in `crates/pi-natives` using `tiktoken-rs`, exposing `count_tokens` and `count_tokens_batch` through N-API with `Encoding::O200kBase` as the default.
- Exported the `Encoding` enum plus token counting functions in `packages/natives/native` TypeScript declarations and JS runtime bindings.
- Registered `tiktoken-rs` in `crates/pi-natives/Cargo.toml` and updated `Cargo.lock` with its resolved dependency entries.
- Removed `tree-sitter-glimmer` from the workspace, `pi-natives` manifests, and `Cargo.lock`.
- Deleted `SupportLang`'s `Handlebars` variant and parser dispatch wiring from `mod.rs`.
- Removed Handlebars alias and extension mappings so `SupportLang` no longer advertises that language.
- Added AST-based minimizer planning with brush-parser to classify commands before minimization.
- Added original text capture and byte-metric `minimized` telemetry to shell execution results.
- Added minimizer configuration controls, including trust-gated loading via `settingsHash` and limits.
- Added `onMinimizedSave` callback wiring to persist minimized outputs and annotate Bash sinks with artifact IDs.
- Captured inline per-segment checksums in selector parsing and preserved trailing-CRC semantics.
- Allowed multi-CRC edits to resolve when any provided checksum matched an ancestor chunk checksum.
- Added tests for multi-CRC selector parsing and ancestor-match acceptance/rejection.
The published tree-sitter-glimmer v0.0.1 crate has its external scanner
compilation commented out in build.rs. The vendored workaround compiled
scanner.c into a separate static library, which causes a linker symbol
resolution failure on arm64: undefined symbol
tree_sitter_glimmer_external_scanner_create.
Replace the vendored workaround with a [patch.crates-io] pointing to
upstream v1.6.0 (which compiles scanner.c correctly in its own build.rs)
and remove the vendor directory and cc build dependency.
Fixes#651, fixes#727
- Removed `SearchDb` APIs and `searchDb` fields, dropping db-backed state from native and agent sessions.
- Replaced crate export `fff` with `fd`, moving fuzzy-find bindings into `fd.rs`.
- Removed `SearchDb`/picker fast-path logic from `glob` and `grep`, simplifying scan flow and dropping db args.
- Removed `SearchDb`/`getSearchDb` wiring from extension, tool, and task context constructors across coding-agent.
- Added over-indentation validation warnings in chunk-edit normalization for suspicious `~` body line formatting.
- Removed `bytes`, `fff-grep`, `fff-search`, and `blake3` deps, adding `grep-searcher = "0.1"`.
- Reduced default image size limits to 1568px and 500KB to match Anthropic's internal thresholds.
- Optimized screenshot compression with 1024px max dimensions, 150KB budget, and 70% JPEG quality for aggressive payload reduction.
- Added fast-path optimization to skip re-encoding when images fit dimensions and are within 25% of byte budget.
- Refactored image encoding strategy to JPEG-only in quality/dimension reduction loops with improved quality ladder steps.
- Extracted tab width resolution from pi-natives to pi-utils with EditorConfig caching support.
- Made tabWidth parameter required in native text functions (visibleWidth, truncateToWidth, wrapTextWithAnsi, sliceWithWidth, extractSegments).
- Removed process-wide tab width state management from pi-natives text module.
- Consolidated wrapper node promotion logic in chunk classification with abbreviated string representations.
- Removed path-clean and pathdiff dependencies from pi-natives.
- Updated all consuming packages to import tab width functions from pi-utils and pass explicit tabWidth parameters.
- Added support for 16 new programming languages (Astro, CMake, Dockerfile, Erlang, GraphQL, INI, Just, OCaml, Perl, PowerShell, Protocol Buffers, R, SQL, Svelte, Vue, Jupyter notebooks).
- Implemented language-specific AST classifiers for semantic code chunking across all new languages with proper node type handling.
- Added Jupyter notebook (.ipynb) support with virtual source assembly, cell-level chunking, and round-trip JSON serialization.
- Expanded language detection with 40+ new file extension aliases and special filename handling (Justfile, CMakeLists.txt, Dockerfile variants).
- Removed Go language post-processing logic for receiver method and constructor reparenting, simplifying the classifier.
- Migrated native bindings from TypeScript wrappers to NAPI-RS generated modules with auto-generated type definitions and runtime enums.
- Replaced chunk tree API with stateful ChunkState class supporting render, edit, and resolve operations with improved error handling.
- Converted callback signatures to error-first pattern (error, result) for shell, PTY, glob, and grep operations.
- Introduced type-safe enums for MacOSAppearance, GrepOutputMode, KeyEventType, ImageFormat, and AstMatchStrictness replacing string literals.
- Refactored chunk tree implementation with dedicated modules for edit, indent, resolve, and state management with comprehensive validation.
- Moved clipboard utilities from native bindings to coding-agent package with improved OSC 52 and Termux compatibility.