You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Supported Languages section in README.md (Rust, TypeScript, Python, C++)
Multi-root fallback for resolveFilePath(): relative paths without cwd now scan all allowed roots — unique match auto-resolves, multiple matches produce disambiguation error (6 new tests)
6 new tests for resolveFilePath multi-root fallback (total 300, up from 294)
Tool Annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) for all 17 tools per MCP spec
tsconfig.json: exclude test fixtures from compilation
Changed
resolveFilePath() now checks file existence on disk before falling back to scan other allowed roots — prevents silent misresolution when multiple projects share common filenames (e.g. index.ts, README.md)
README.md: added cwd parameter to extract_code_block documentation, updated test badge to 300, described multi-root path resolution in batch_apply_edits and Typical workflow section
PROJECT_CONTEXT.md: added language support entry, updated test count to 300
index.ts refactored — extracted src/commands.ts (safetyCheck, executeCommand, executeGrep, resolveToolCwd) and src/helpers.ts (temp paths, audit log, line parsing); index.ts reduced from 1349 to 950 lines (-30%)
Audit logging removed from list_tools and help_tool (discovery tools are now truly read-only)
Upgraded @modelcontextprotocol/sdk from 1.29.0 to 1.30.0
Refactored extract_code_block to use shared resolveFilePath() (replaced inline ad-hoc path resolution with safety validation)
Fixed
README.md: test count badge updated from 294 to 300
Closed feedback: batch_apply_edits relative paths now resolve across allowed roots
Closed feedback: list_tools raw JSON envelope — identified as Cline client display issue, not server bug
batch_apply_edits: added cwd parameter + resolveFilePath() — now resolves relative paths (was returning "Cannot read file" for files in newly created subdirectories)
split_file_by_declarations & generate_module_skeleton: multi-line use/import blocks now collected completely (was truncated at first line, breaking generated imports)
extract_code_block & split_file_by_declarations: removed # → line comment handling from tokenizer — Rust #[derive(...)]/#[allow(...)] attributes no longer cause missing closing braces in extracted functions
split_file_by_declarations: now includes top-level use/import statements in generated modules
split_file_by_declarations: detects and appends impl blocks associated with extracted types (Rust)
split_file_by_declarations & generate_module_skeleton: relative file paths now resolve correctly via shared resolveFilePath() helper (was returning "Cannot read file")
split_file_by_declarations: finds private declarations (fn, const, struct) and pub(crate)/pub(super) items
generate_module_skeleton: filters extractCodeBlock matches to declaration-only — no more garbled output from usage sites
generate_module_skeleton: imports now only collected from top-level (no indented use statements)
split_file_by_declarations: cross-module references now generate use super::TypeName; imports
split_file_by_declarations: cfg-aware cross-module imports — wraps with #[cfg(...)] when symbol is only used in cfg-gated code, falls back to #[allow(unused_imports)]
split_file_by_declarations: mod blocks (e.g. #[cfg(test)] mod tests) now extractable
batch_apply_edits: multiple edits to same file now accumulate correctly (was overwriting previous edits)
batch_apply_edits: CRLF line endings now handled — normalizes to LF for comparison, preserves original endings in output
extract_code_block: added cwd parameter — relative paths now resolved against cwd or primary root
universal_find_references: without cwd, now searches ALL allowed roots (was defaulting to primary root only)
LICENSE restructured — standard GPL text first, project copyright as appendix