- Added renderCall and renderResult methods to MCPTool and DeferredMCPTool classes for TUI rendering of tool calls and results.
- Created new mcp/render.ts module providing JSON tree rendering functionality with configurable depth and line limits for terminal display.
- Updated renderResult signature in custom tool and extension types to accept optional args parameter for accessing original tool arguments during result rendering.
- Fixed method binding in extension and hook tool wrappers by applying .bind(tool) to renderCall and renderResult methods to preserve correct 'this' context.
- Added filter to skip .git directories in fuzzy_find_sync function to improve search performance.
- Fixed timeout handling in LSP write-through operations to properly clear formatter and diagnostics results when operations exceed the 10-second timeout threshold.
- Added timeout detection mechanism in LSP index that sets a flag when the timeout signal is aborted.
- Added nonAbortable property to EditTool and WriteTool classes to prevent these operations from being aborted during execution.
- Externalized subagent submit reminder prompt to a separate template file for improved maintainability and dynamic retry tracking.
- Applied semantic compression rules to system prompt and skill documentation, removing grammatical scaffolding while preserving meaning-carrying content.
- Updated semantic-compression skill documentation with more aggressive compression stance, expanded deletion tiers, and clarified preservation rules.
- Refactored system prompt for brevity using fragments, label:value pairs, and direct phrasing without sacrificing clarity or instruction fidelity.
- Added semantic-compression skill documentation with deletion tiers, preservation rules, and compression examples.
- Enhanced system prompt with explicit assumption-stating guidance, pre-finishing checklist, and conflict resolution procedures.
- Added verification guidance for test-first approach and naive-before-optimizing pattern for algorithmic work.
- Clarified commitment to high-reliability contexts and user stamina constraints in stakes section.
Added #[cfg(not(windows))] to stubs/fs.rs PathExt implementation.
On Windows, both stubs (not unix) and windows modules were compiled,
causing duplicate impl PathExt for Path. Now Windows uses only
windows/fs.rs while WASM still uses stubs.
On Windows, TUI width calculations can sometimes be slightly off due to Unicode/emoji rendering differences. Instead of crashing the entire agent when a rendered line exceeds the calculated terminal width, this change gracefully truncates the line to fit.
Co-authored-by: ou23h4rfuiyh3e5rg <ou23h4rfuiyh3e5rg@users.noreply.github.com>
- Reorganized settings tabs from 8 to 10 tabs with improved categorization: Display, Agent, Input, Tools, Config, Services, Bash, LSP, TTSR, and Status.
- Moved behavior-related settings (thinking level, steering mode, retry attempts) from Behavior tab to new Agent tab.
- Moved input/interaction settings (escape action, collapse changelog, notifications) to new Input tab.
- Moved tool configuration settings (line numbers, fuzzy matching, patch mode) from Tools tab to new Config tab.
- Moved provider and external service settings (web, image, exa) to new Services tab.
- Removed type guard functions (isBashToolResult, isReadToolResult, isEditToolResult, isWriteToolResult, isGrepToolResult, isFindToolResult, isLsToolResult) from public API exports.
- Consolidated directory listing functionality from dedicated `ls` tool into the `read` tool.
- Removed the `ls` tool and all related exports, types, and configurations from the public API.
- Updated `read` tool to return formatted directory listings with modification times instead of redirecting to `ls` tool.
- Removed `bashInterceptor.simpleLs` setting and related interception logic from bash tool.
- Removed `ls.enabled` setting and related tool registration logic.
- Removed test cases for the `ls` tool and updated tool type definitions to remove `LsToolResultEvent`.
- Added enable/disable settings for specialized tools (find, grep, ls, notebook, fetch, web_search, lsp, calc) allowing fine-grained control over tool availability.
- Implemented conditional tool documentation in system prompt that dynamically lists only enabled specialized tools based on configuration.
- Updated tool filtering logic to respect enable/disable settings, preventing unavailable tools from being exposed to the agent.
- Reorganized todo-related settings from `todoCompletion.*` namespace to `todo.*` namespace with separate `todo.enabled` and `todo.reminders.*` properties.
- Updated settings access pattern in agent session from grouped settings object to flat dot-notation keys for improved consistency.
- Refactored todo_write tool availability check to independently gate on both `todo.enabled` setting and absence of submit_result.
- Fixed tool parameter schemas displaying internal TypeBox metadata fields in system prompt.
- Removed project tree snapshot generation from system prompt as unused feature.
- Removed unused imports and constants related to project tree scanning functionality.
- Condensed prompt documentation throughout by removing articles, auxiliary verbs, and redundant explanations for improved clarity and conciseness.
- Simplified system prompts by replacing multi-line explanations with terse, semicolon-separated fragments and removing verbose motivational language.
- Reformatted tool documentation to use abbreviated language, removing 'the', 'a', and 'is' throughout for more direct technical writing.
- Removed blank lines and consolidated spacing in prompt files to reduce vertical whitespace and improve document density.
- Exported getWorkProfile function and WorkProfile type from main package index for work profiling capabilities.
- Updated coding-agent debug module imports to use new main package exports instead of subpath imports.
- Removed 'strippedRedirect' field from NormalizedCommand interface returned by normalizeBashCommand().
- Removed automatic stripping of '2>&1' stderr redirections from bash command normalization.
- Updated bash-normalize function to only extract head/tail patterns and no longer process stderr redirection.
- Removed test cases for 2>&1 stripping and combined pattern handling in bash-normalize tests.
- Introduced new task scheduling system with CancelToken for cooperative cancellation, replacing Rayon-based work scheduling with libuv thread pool integration.
- Added Cancellable interface with timeoutMs and signal properties for unified timeout and abort signal handling across all async operations.
- Converted async functions (clipboard, html, image, shell, grep, glob) to synchronous functions returning task::Async wrappers for consistent cancellation semantics.
- Removed abortShellExecution() function and executionId tracking in favor of centralized CancelToken-based cancellation.
- Simplified htmlToMarkdown() signature by removing RequestOptions parameter and delegating cancellation to Cancellable interface.
- Replaced heap-allocated Vec with stack-allocated SmallVec in grep module for context lines and type filters to reduce allocations.
- Optimized process tree data structure in ps module from Vec to SmallVec with capacity 4 for typical process child counts.
- Changed shell module to use SmallVec for process IDs collection, reducing heap allocations in abort operations.
- Refactored text module to use SmallVec for token and line collections, avoiding heap allocations for typical text wrapping scenarios.
- Increased work profiler stack capacity from 2 to 4 elements and optimized stack collection using iterator copy.
- Added work profile capture to debug report bundle for improved profiling insights.
- Added work scheduling profiler with always-on circular buffer sampling to track CPU scheduling patterns and task execution times.
- Added `getWorkProfile()` native function to retrieve profiling data including folded stacks, markdown summary, SVG flamegraph, and metrics for the last N seconds.
- Added work profile debug menu item to visualize CPU scheduling patterns via flamegraph in the coding agent.
- Added work profile support to report bundles with folded stacks, summary, and flamegraph visualization.
- Updated `launch_blocking()` and `launch_async()` functions to accept task name tags for profiling instrumentation.
- Added dependencies on inferno, smallvec, and heapless crates for profiling infrastructure.
- Refactored shell session management to use per-instance sessions instead of global session map.
- Changed execution and shell identifiers from strings to u64 for improved performance and type safety.
- Simplified ExecutionControl struct to remove session_key field and use shell_id instead.
- Extracted ShellConfig struct to consolidate session configuration parameters.
- Refactored read_output function to use async I/O with improved UTF-8 handling and buffer management.
- Removed global SESSIONS map and session counter in favor of per-instance Arc-wrapped session storage.
- Added job-level status checking in CI watcher to fail fast on first job failure with detailed error reporting.
- Added automatic log tailing for failed CI jobs showing last 20 lines of output.
- Added process cancellation support via optional CancellationToken parameter to wait() methods across process execution layers.
- Implemented platform-specific process termination using SIGKILL on Unix and TerminateProcess on Windows when cancellation is triggered.
- Added ProcessWaitResult::Cancelled variant to represent cancelled process execution with exit code 130.
- Added windows-sys dependency with Win32_Foundation and Win32_System_Threading features for Windows process termination support.
- Removed process_id_tracker and process_group_id_tracker fields from ExecutionParameters struct to simplify process tracking.
- Added Windows PATH configuration to automatically detect and include Git's usr/bin directory in the shell environment.
- Added winreg dependency for Windows registry access to locate Git installations.
- Added interactive shell console subcommand to coding-agent CLI with support for working directory, timeout, and snapshot configuration.
- Added cancellation token support to ExecutionContext and ExecutionParameters for graceful shell execution interruption.
- Implemented cancellation checks throughout AST execution pipeline (Program, CompoundList, AndOrList, Pipeline, and all command types) to enable responsive interruption.
- Replaced process tracking mechanism with tokio_util CancellationToken for improved async cancellation handling.
- Added tokio-util 0.7.16 dependency to pi-natives crate for cancellation token support.
- Vendored brush-core crate locally to enable local development and patching.
- Added patch.crates-io section in Cargo.toml to redirect brush-core dependency to vendored version at crates/brush-core-vendored.
- Updated pi-natives Cargo.toml to use local path dependency for brush-core instead of external crate version.
- Fixed `find` tool to return a single match when given a file path instead of failing with 'not a directory' error.
- Added `hasGlobChars` helper function to detect glob patterns and distinguish file paths from glob patterns.
- Extended `FindOperations` interface with optional `stat` method for distinguishing files from directories.
- Added test case verifying that `find` tool correctly returns a single file when given a file path.
- Reformatted fuzzy_find function body to single line with consistent indentation.
- Wrapped PhotonImage::new documentation comment to approximately 80 characters.
- Reordered import statement for brush_builtins to appear before brush_core imports.
- Moved SAFETY comment in text.rs to immediately precede the unsafe block it documents.
- Updated string formatting from positional arguments to inline variable syntax.
- Added automatic extraction of embedded native addon payload to ~/.omp/natives/<version> on first run of compiled binaries.
- Added embed:native build script for generating platform-specific native addon payloads embedded in compiled binaries.
- Enhanced native addon loading to prioritize extracted embedded addon over downloaded versions.
- Improved error messages with platform-specific guidance for compiled vs npm-installed binaries.
- Refactored CI workflow to use reusable build_binary() function for cross-platform binary compilation.