Skip to content
DocumentationProjectv1.2.1

Changelog

Source-verified 1.2.1 hardening for snapshot detail, MCP serialization/errors, workspace discovery and journaled apply, with historical release context.

These docs describe published 1.2.1 / schema 1.4. The upstream changelog has the full release narrative; this summary is scoped to verified runtime behavior, not every broad promise in those notes.

The tool count remains 13, native check schema 1.4, and Node floor 22.12.0. This patch changes contracts that clients should review:

  • Explicit detail lookup: get_issue_detail requires checkId; no mutable latest-issue/check fields in handler context. Stored snapshots are deep-cloned/frozen and retrieved copies are detached. Check IDs are still content-derived, not unique invocations.
  • JSON fallback: both/structured first text mirrors the structured object, including the issue-detail wrapper. Structured mode adds a second user-facing summary and is larger than both on the audited fixtures. Literal-pong remains an exception; text-only detail stays an array.
  • Classified thrown failures: engine/provider errors carry actionable classification and sanitized wire messages. Ordinary settled engine failures, other refusal paths and local stderr retain their separate behavior. Do not infer universal secret redaction or per-return server-side Ajv validation.
  • Workspace hardening: real YAML parsing, common recursive/include/negative patterns, canonical directories/references and better local dependency edges. Strict rejects graph cycles; the remaining glob/semver/root-compiler limits are documented.
  • Safer explicit apply: path/hash preflight, adjacent temp-file replacement and in-memory reverse rollback journal. Optional explicit baseline is validated before writes; unknown/expired baselines refuse without consuming active preparation. Omitted baseline requests no delta.
  • Release checks: upstream action SHAs are pinned, metadata/tarball checks precede publishing, and the development lockfile upgrades Vitest for advisories. The independent production/development audits reported zero known advisories on October 13.

Multi-file atomicity, persistent crash recovery, complete compiler/glob semantics and every schema-failure path are not certified. Read the current guides/limits rather than copying broad upstream closure labels.

The following is historical release context; 1.2.1’s detail/serialization/storage/apply semantics above supersede the original behavior.

The native check schema remains 1.4; the MCP catalog expands from 5 to 13 tools.

  • Package-derived MCP initialize version fixes the old hardcoded metadata. Unknown tools/non-object argument containers now throw protocol -32602; other caught input/path refusals remain tool results.
  • SIGNALINT_STATE_DIR redirects supported cache/session/normal TypeScript build-info paths.
  • Adds retained snapshots, get_diagnostic_snapshot, compare_diagnostics and after_edit_check, with coarse check progress and native cancellation propagation.
  • Adds hook preview/install/run and four runtime event emitters; host compatibility and policy gaps remain explicit.
  • Adds opt-in pnpm workspace discovery, dependency/reference planning, per-project TypeScript partitions and supplied dependency-directory fingerprints.
  • Adds caller-supplied LSP ingestion/live queries and library report normalizers for Ruff, Mypy, Cargo/Clippy and golangci-lint. No new external-language subprocess engines or editor subscription is launched.
  • Adds caller-provided full-file preview, explicit apply and discard. Apply writes source, uses sequential writes/best-effort rollback, and does not undo successful writes after failed verification.

These capabilities are not blanket guarantees of immutable snapshots, complete workspace discovery, clean-project hooks or filesystem-atomic apply. Independent probes found coverage/identity/buffer/transaction limits. Read snapshots, hooks, monorepos, live diagnostics, transactions and known limitations.

  • Sets SQLite busy_timeout = 5000 to wait for lock contention. This reduces immediate lock failures; it does not guarantee success when a lock lasts longer than the wait.
  • Isolates cache fixtures and adds cleanup retries/test timeout changes for Windows testing.
  • Dispatches recognized CLI verbs from signalint-mcp, including doctor, check, stats, help, and version.
  • A bare interactive TTY launch prints actionable guidance and exits 2 instead of starting a waiting stdio server.
  • Normal non-TTY MCP startup remains supported.

Use CLI reference for exact command behavior.

  • Groups of 2+ same-rule issues become clusters; single occurrences and overflow groups use flat remainingIssues.
  • Returns up to 10 clusters and 100 flat records, with omittedIssueCount, truncated, and guidance when needed. This is not pagination or a fixed-byte guarantee.
  • Uses 12-character summary issue prefixes, extended for different full hashes sharing a prefix. Full detail hashes remain supported; equal full hashes and prefix ambiguity are still documented.
  • Minifies normal MCP JSON text, omits inactive warning fields, omits message-less disabled engine entries where possible, and trims unnecessary cluster fields.
  • Adds optional compact check keys (--compact, SIGNALINT_COMPACT=1), which also omit the check root.
  • check_files now filters returned diagnostics to requested paths, with filtered-count aliases and project-check guidance.
  • Adds a sorted source-file size/mtime fingerprint to TypeScript cache state. This catches some unrequested source changes, not every compiler dependency/configuration or same-size/restored-mtime edit.
  • Adds both, text, and structured payload modes, selected by environment/config. Host compatibility must be verified; structured-mode summaries and compact keys have a current combination caveat.
  • Reclassifies Oxlint and TypeScript as optional peers, so a default install no longer supplies those toolchains. Biome remains optional; ESLint is project-local.
  • Adds missing-tool guidance to init/doctor. Doctor now inspects ESLint and reports payload mode, but still does not fully validate configuration or a client connection.
  • Adds stats --json, benchmark-mode tooling.

Read installation, schema, payload modes, and limitations before upgrading a 1.0 consumer.

First stable release. Requires Node >=22.12, uses built-in SQLite, adds flat-config ESLint, introduces schema 1.3 with project-root/status/checksum context, and adds the seven-client setup registry. Structured loop/churn warnings were retained from the 0.4 line, not invented in this release.

The 1.0 edition had required Oxlint/TypeScript runtime dependencies and different cluster-cap behavior. Its historical audit is not presented as current 1.2.1 semantics.

  • 0.4.2: bounded TypeScript config-chain hashing and process-lifetime --showConfig inspection cache.
  • 0.4.1: shared MCP tool annotations.
  • 0.4.0: independent file-rule churn detection and schema 1.2 warning fields.

The audited main and dereferenced annotated v1.2.1 tag both identify 6327008dbfdfa7112254dd89e330c7df97090575. Registry SHA512/SHA1 were verified and all 75 published runtime JavaScript files byte-match this source build. Upstream tests: 340 passed / 47 files; those counts do not replace independent runtime probes or establish universal guarantees.