11# Changelog
22
3+ ## [ 1.4.4] - 2026-03-14
4+
5+ ### Performance
6+
7+ - Optimized HTML snippet rendering hot path:
8+ - file snippets now reuse cached full-file lines and slice ranges without
9+ repeated full-file scans
10+ - Pygments modules are loaded once per importer identity instead of
11+ re-importing for each snippet
12+ - Optimized block explainability range stats:
13+ - replaced repeated full ` ast.walk() ` scans per range with a per-file
14+ statement index + ` bisect ` window lookup
15+
16+ ### Tests
17+
18+ - Preserved existing golden/contract behavior for ` 1.4.x ` and kept report output
19+ semantics unchanged while improving runtime overhead.
20+
21+ ### Contract Notes
22+
23+ - No baseline/cache/report schema changes.
24+ - No clone detection or fingerprint semantic changes.
25+
326## [ 1.4.3] - 2026-03-03
427
528### Cache Contract
@@ -328,57 +351,57 @@ codeclone . --update-baseline
328351
329352### Overview
330353
331- This release focuses on security hardening, robustness, and long-term maintainability.
354+ This release focuses on security hardening, robustness, and long-term maintainability.
332355No breaking API changes were introduced.
333356
334357The goal of this release is to provide users with a safe, deterministic, and CI-friendly
335358tool suitable for security-sensitive and large-scale environments.
336359
337360### Security & Robustness
338361
339- - ** Path Traversal Protection**
362+ - ** Path Traversal Protection**
340363 Implemented strict path validation to prevent scanning outside the project root or
341364 accessing sensitive system directories, including macOS ` /private ` paths.
342365
343- - ** Cache Integrity Protection**
366+ - ** Cache Integrity Protection**
344367 Added HMAC-SHA256 signing for cache files to prevent cache poisoning and detect tampering.
345368
346- - ** Parser Safety Limits**
369+ - ** Parser Safety Limits**
347370 Introduced AST parsing time limits to mitigate risks from pathological or adversarial inputs.
348371
349- - ** Resource Exhaustion Protection**
372+ - ** Resource Exhaustion Protection**
350373 Enforced a maximum file size limit (10MB) and a maximum file count per scan to prevent
351374 excessive memory or CPU usage.
352375
353- - ** Structured Error Handling**
376+ - ** Structured Error Handling**
354377 Introduced a dedicated exception hierarchy (` ParseError ` , ` CacheError ` , etc.) and replaced
355378 broad exception handling with graceful, user-friendly failure reporting.
356379
357380### Performance Improvements
358381
359- - ** Optimized AST Normalization**
382+ - ** Optimized AST Normalization**
360383 Replaced expensive ` deepcopy ` operations with in-place AST normalization, significantly
361384 reducing CPU and memory overhead.
362385
363- - ** Improved Memory Efficiency**
386+ - ** Improved Memory Efficiency**
364387 Added an LRU cache for file reading and optimized string concatenation during fingerprint
365388 generation.
366389
367- - ** HTML Report Memory Bounds**
390+ - ** HTML Report Memory Bounds**
368391 HTML reports now read only the required line ranges instead of entire files, reducing peak
369392 memory usage on large codebases.
370393
371394### Architecture & Maintainability
372395
373- - ** Strict Type Safety**
396+ - ** Strict Type Safety**
374397 Migrated all optional typing to Python 3.10+ ` | None ` syntax and achieved 100% ` mypy ` strict
375398 compliance.
376399
377- - ** Modular CFG Design**
400+ - ** Modular CFG Design**
378401 Split CFG data structures and builder logic into separate modules (` cfg_model.py ` and
379402 ` cfg.py ` ) for improved clarity and extensibility.
380403
381- - ** Template Extraction**
404+ - ** Template Extraction**
382405 Extracted HTML templates into a dedicated ` templates.py ` module.
383406
384407- Added a ` py.typed ` marker for downstream type checkers.
@@ -420,13 +443,13 @@ support for Python 3.10–3.14 across the test matrix.
420443
421444### Fixed
422445
423- - ** CFG Exception Handling**
446+ - ** CFG Exception Handling**
424447 Fixed incorrect control-flow linking for ` try ` /` except ` blocks.
425448
426- - ** Pattern Matching Support**
449+ - ** Pattern Matching Support**
427450 Added missing structural handling for ` match ` /` case ` statements in the CFG.
428451
429- - ** Block Detection Scaling**
452+ - ** Block Detection Scaling**
430453 Made ` MIN_LINE_DISTANCE ` dynamic based on block size to improve clone detection accuracy
431454 across differently sized functions.
432455
@@ -436,7 +459,7 @@ support for Python 3.10–3.14 across the test matrix.
436459
437460### BREAKING CHANGES
438461
439- - ** CLI Arguments**
462+ - ** CLI Arguments**
440463 Renamed output flags for brevity and consistency:
441464 - ` --json-out ` → ` --json `
442465 - ` --text-out ` → ` --text `
0 commit comments