|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [1.3.0] - 2026-02-08 |
| 4 | + |
| 5 | +### Overview |
| 6 | + |
| 7 | +This release improves detection precision, determinism, and auditability, adds |
| 8 | +segment-level reporting, refreshes the HTML report UI, and hardens baseline/cache |
| 9 | +contracts for CI usage. |
| 10 | + |
| 11 | +**Breaking (CI):** baseline contract checks are stricter. Legacy or mismatched baselines |
| 12 | +must be regenerated. |
| 13 | + |
| 14 | +### Detection Engine |
| 15 | + |
| 16 | +- Safe normalization upgrades: local logical equivalence, proven-domain commutative |
| 17 | + canonicalization, and preserved symbolic call targets. |
| 18 | +- Internal CFG metadata markers were moved to the `__CC_META__::...` namespace and emitted |
| 19 | + as synthetic AST names to prevent collisions with user string literals. |
| 20 | +- CFG precision upgrades: short-circuit micro-CFG, selective `try/except` raise-linking, |
| 21 | + loop `break`/`continue` jump semantics, `for/while ... else`, and ordered `match`/`except`. |
| 22 | +- Deterministic traversal and ordering improvements for stable clone grouping/report output. |
| 23 | +- Segment-level internal detection added with strict candidate->hash confirmation; remains |
| 24 | + report-only (not part of baseline/CI fail criteria). |
| 25 | +- Segment report noise reduction: overlapping windows are merged and boilerplate-only groups |
| 26 | + are suppressed using deterministic AST criteria. |
| 27 | + |
| 28 | +### Baseline & CI |
| 29 | + |
| 30 | +- Baseline format is versioned (`baseline_version`, `schema_version`) and legacy baselines |
| 31 | + fail fast with regeneration guidance. |
| 32 | +- Added tamper-evident baseline integrity for v1.3+ (`generator`, `payload_sha256`). |
| 33 | +- Added configurable size guards: `--max-baseline-size-mb`, `--max-cache-size-mb`. |
| 34 | +- Behavioral hardening: in normal mode, untrusted baseline states are ignored with warning |
| 35 | + and compared as empty; in `--fail-on-new` / `--ci`, they fail fast with deterministic exit codes. |
| 36 | + |
| 37 | +Update baseline after upgrade: |
| 38 | + |
| 39 | +```bash |
| 40 | +codeclone . --update-baseline |
| 41 | +``` |
| 42 | + |
| 43 | +### CLI & Reports |
| 44 | + |
| 45 | +- Added `--version`, `--cache-path` (legacy alias: `--cache-dir`), and `--ci` preset. |
| 46 | +- Added strict output extension validation for `--html/.html`, `--json/.json`, `--text/.txt`. |
| 47 | +- Summary output was redesigned for deterministic, cache-aware metrics across standard and CI modes. |
| 48 | +- User-facing CLI messages were centralized in `codeclone/ui_messages.py`. |
| 49 | +- HTML/TXT/JSON reports now include consistent provenance metadata (baseline/cache status fields). |
| 50 | +- Clone group/report ordering is deterministic and aligned across HTML/TXT/JSON outputs. |
| 51 | + |
| 52 | +### HTML UI |
| 53 | + |
| 54 | +- Refreshed layout with improved navigation and dashboard widgets. |
| 55 | +- Added command palette and keyboard shortcuts. |
| 56 | +- Replaced emoji icons with inline SVG icons. |
| 57 | +- Hardened escaping (text + attribute context) and snippet fallback behavior. |
| 58 | + |
| 59 | +### Cache & Security |
| 60 | + |
| 61 | +- Cache default moved to `<root>/.cache/codeclone/cache.json` with legacy path warning. |
| 62 | +- Cache schema was extended to include segment data (`CACHE_VERSION=1.1`). |
| 63 | +- Cache integrity uses constant-time signature checks and deep schema validation. |
| 64 | +- Invalid/oversized cache is ignored deterministically and rebuilt from source. |
| 65 | +- Added security regressions for traversal safety, report escaping, baseline/cache integrity, |
| 66 | + and deterministic report ordering across formats. |
| 67 | +- Fixed POSIX parser CPU guard to avoid lowering `RLIMIT_CPU` hard limit. |
| 68 | + |
| 69 | +### Documentation & Packaging |
| 70 | + |
| 71 | +- Updated README and docs (`architecture`, `cfg`, `SECURITY`, `CONTRIBUTING`) to reflect |
| 72 | + current contracts and behaviors. |
| 73 | +- Removed an invalid PyPI classifier from package metadata. |
| 74 | + |
| 75 | +--- |
| 76 | + |
3 | 77 | ## [1.2.1] - 2026-02-02 |
4 | 78 |
|
5 | 79 | ### Overview |
|
0 commit comments