Skip to content

v11.4.0 — EISDIR fix + regression guards for pre-existing TS errors

Choose a tag to compare

@Ruso-0 Ruso-0 released this 19 May 22:23
· 13 commits to master since this release

Summary

Two user-reported issues addressed:

  1. nreki_code action:"read" / "compress" crashed with EISDIR when the path was a directory. Both handlers now stat the path first and return a structured error pointing to the correct tool. Same fix also catches ENOENT for missing files.
  2. Pre-existing TS errors in an edited file appeared to block unrelated edits. Investigation showed the differential check (count > baseline.get(fingerprint) in src/kernel/backends/ts-compiler-wrapper.ts:611) was already working in v11.3.x — the user's installed binary was likely an older release. v11.4.0 ships regression tests that pin the same-file scenario so a refactor cannot silently break the filter.

Why

The EISDIR was a clean, reproducible bug — fs.readFileSync on a directory throws an opaque error that surfaced as an MCP server crash with no actionable user-facing message.

The pre-existing-error report turned out to be a non-bug in v11.3.x, but the existing test suite only covered the cross-file case (error in bad.ts, edit in good.ts). The user's actual scenario — pre-existing error in fillTemplate.ts, edit a different symbol in fillTemplate.ts — was not pinned by any test. This release adds four explicit tests for that exact case.

Changes

Fixed

  • handleRead / handleCompress now reject directory inputs cleanly with a hint pointing to nreki_navigate action:"outline" / "fast_grep" / "search". ENOENT also gets a structured "Path not found" message.

Added

  • tests/read-compress-directory.test.ts — 4 tests covering directory + missing-file in both handlers.
  • tests/kernel-pre-existing-errors.test.ts — 4 tests pinning same-file pre-existing-error + unrelated-symbol edit (TS2322, TS1192-family, same-symbol no-change, counter-test for genuine new error).
  • docs/furia-v11.4.0-review.md — adversarial Q1-Q5 review covering why Phase 1 added only tests, why Option A (explicit error) beats Option B (auto-redirect), and two residual gaps logged for a future iteration.

Templates

  • templates/CLAUDE.md, templates/AGENTS.md, templates/SKILL.md updated with notes on the differential check semantics and the new directory-input behavior.

Tests

1 423 passed / 3 skipped / 0 failed. +8 tests vs v11.3.1.

Migration

No API change, no file format change, no breaking signature.

🤖 Generated with Claude Code