Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 04:59
· 84 commits to main since this release
v1.4.0
9f8db23

Lint

  • 21 new CLOS, condition-system, and iteration lint rules (#81).
  • 8 new REPL-debug-leftover lint rules catching stray print/describe/trace-style debugging calls (#78).
  • Macro hygiene checks are now enforceable (not just report-only) across all eight dialects, with 4 new checks and a scoped auto-fix (#71, #79).
  • lint-custom (defrule) gained dialect scoping, pattern fragments, self-collision detection, and per-rule timing (#68).
  • defrule's pattern language is now unified with the --query/--rewrite engine — the same pattern syntax works in both places (#62).
  • inspect lint --suggest-severity advises when a rule's observed finding density disagrees with its configured severity (#57).
  • Custom-rule parity: --test-rules JSON, --docs, and --explain now cover custom rules the same as built-in ones (#58); loaded custom rules are recognized by lint.enable/disable/deny/warn (#61); config check detects custom-rule severity conflicts (K7).
  • 9 additional lint rules from Section C, part 1 of 13 (#66).

Format

  • paredit.toml gained a project-overridable indent table, width profiles, and quote style (#74).
  • Section J: numeric-case normalization, clause alignment, auto-width, and .editorconfig support (#77).
  • Trailing-comment alignment and blank-line normalization (#69).
  • Fixed width counting, added diff-stat aggregation, and block-comment reindent (#67).

New commands and surfaces

  • inspect data-check and edit kill-ring (Phase 0), with a --format flag and 5 format-specific detectors added to data-check (Phase 1).
  • edit canonicalize normalizes alist/plist data files, refusing files that carry a comment to avoid silently dropping it (K10, plus a follow-up fix).
  • A schema namespace with a defschema DSL (Phase 4); config check rejects duplicate spec keywords and documents :optional.
  • Named checkpoints for refactor state (FR-008).
  • --explain-error and inline ambiguous-selector candidates on refusal (FR-001, FR-002).
  • refactor plan/apply gained a risk aggregate, next-command chaining, a compact headline, and grouped apply output (FR-003–007).
  • PAREDIT_CACHE_DIR and cache.dir config layering (FR-012).

Semantic analysis

  • Type inference widened to Emacs Lisp, Scheme, and Racket (FR-002, FR-003).
  • Effects analysis widened to Emacs Lisp (FR-005); contradiction detection widened to Elisp/Scheme/Racket (FR-007).
  • Value-layer constant folding/propagation widened to Emacs Lisp and fed into effect purity (FR-004, FR-008/A11).
  • Per-dialect --fail-under-dialect coverage thresholds (semantic-coverage).
  • The six semantic introspection commands report per-layer dialect granularity in inspect capabilities (FR-001).
  • defmethod binds its parameters, not its specializers, in the semantic model (FR-009).
  • Read-time-eval handling made cross-dialect (Phase 2).

Agent/MCP experience

  • MCP now surfaces write outcome and carries trimmed tool descriptions (FR-009/FR-010).
  • inspect capabilities reports a per-command writes flag and each command's possible error codes (FR-011).
  • Closed a gap where two newer write commands were missing from MCP's --read-only gate; fixed an apply/diff conflict.

Accessibility

  • Output-wide accessibility: NO_COLOR consistency, verbosity levels, plain-language errors (#54).
  • TERM=dumb/FORCE_COLOR handling, an HTML palette, screen-reader-friendly structure, JSON envelope pinning, and CJK-aware clipping (#60).

Performance

  • Dynamic scheduling, a Node struct size reduction, and a redundant-parse fix for the highest-risk performance/scale items (#76).
  • Lower-risk performance/scale gap fixes across the engine (#64).

Fixes

  • config's custom_conflicts reads now go through the bounded reader.
  • data-check no longer misclassifies typed/racket-flavored files as racket-data.

No commands, flags, or JSON fields were removed or renamed since v1.3.0 — this is a purely additive minor release.