Skip to content

Releases: kaijen/kaicrit

v0.10.0

09 Jun 19:20
6eeb02a

Choose a tag to compare

Maintenance release closing 19 review issues — correctness, robustness, security hardening, config scoping and build/CI tooling.

🐞 Fixed

  • Accept/Reject could corrupt the document on a stale (debounced) cache (#52). Resolutions now flush any pending parse and verify the cached marker text before editing.
  • Split view decorated only one pane (#56) — now every visible editor of the document.
  • Changes-view group/flat toggle was inert under a workspace override (#57) — now writes into the scope that defines the setting.
  • Comment date used UTC (#58) — now the local calendar date.
  • Cursor jumped after a failed authoring edit (#59) — caret correction gated on the applied flag.
  • Git author ignored multi-root workspaces (#60) — resolved per the active document's folder.
  • Word diff fragmented non-ASCII words (#55) — Unicode-aware tokenizer (\p{L}/\p{N}), so umlauts, ß and accents stay inside their word.
  • Track Changes shadow hardened against external mutations (#68) — resyncs instead of producing a malformed marker.

🔄 Changed

  • Track Changes coupled to the enablement gate (#53, #54). Turning it on in a disabled document now enables kaicrit for that file; the normal-mode paste-flatten gets a cheap early-out and stays inert in disabled documents.
  • Configuration read with a resource scope (#61) — folder-/language-specific overrides ("[markdown]": { … }, multi-root) are honoured.

✨ Added

  • kaicrit.edit.maxParseLength (#63, default 2 000 000) — size guard bounding the marker regex's O(n²) worst case on pathological input.

🔒 Security

  • Hardened the change-action hover (#62). isTrusted scoped to kaicrit's own accept/reject commands instead of every command: URI; document-sourced comment author/date is escaped so it can't render a link.

🛠 Internal / build

  • CI now runs lint + tests on every push/PR; release workflow runs the suite before packaging (#51).
  • ESLint flat config (typescript-eslint recommended), wired into CI (#69).
  • Extension bundled with esbuild for packaging — single ~40 KB .vsix module; dev/F5 loop unchanged (#65).
  • Packaging cleanups: dev-only files excluded from the .vsix (#64), out/ cleaned before tests (#67), docs unified on @vscode/vsce (#66).

Full changelog: v0.9.0...v0.10.0

v0.9.0

03 Jun 12:29

Choose a tag to compare

v0.9.0: Group/flat layout toggle for the Changes sidebar

- Chronological (flat) layout for the Changes sidebar: a group/flat
  toggle in the view title lists changes either grouped by type
  (default) or flat in document order, each leaf prefixed with its
  type symbol
- New kaicrit.changes.grouping setting (type | chronological) to
  persist the layout choice

v0.8.0

03 Jun 06:50

Choose a tag to compare

v0.8.0: Double-Pane view (Original | New)

- Double-Pane view (Original | New): split the active CriticMarkup
  document into side-by-side Original (reject result) and New (accept
  result) editors via Alt+K Alt+P, title-bar icon, or right-click (#46)

v0.7.5

02 Jun 17:44

Choose a tag to compare

v0.7.5: Fix spurious deletion when wrapping in Track Changes

- Wrapping a selection in a highlight/comment while Track Changes is on
  no longer prepends a spurious deletion; the insert/wrap commands now
  apply their edit through the recorder's re-entrancy guard so authored
  markup lands verbatim. Affects all five insert commands (#44).

v0.7.4

02 Jun 15:28

Choose a tag to compare

v0.7.4: Hover Accept/Reject popup closes after resolving

- Hover Accept/Reject popup now closes after resolving a change;
  it previously stayed open over the removed marker (#42)

v0.7.3

02 Jun 14:54

Choose a tag to compare

v0.7.3: Fix accept/reject undoing itself with Track Changes on

- Accept/Reject while Track Changes is on no longer undoes itself;
  resolutions now bypass the recorder's re-entrancy guard (#42)

v0.7.2

02 Jun 09:09

Choose a tag to compare

v0.7.2: Prevent nested CriticMarkup on paste in normal mode

- Nesting guard on paste even with Track Changes off: pasting
  CriticMarkup into the content of an existing marker flattens the
  pasted markers to plain text instead of producing nested,
  spec-invalid markup. Plain text and standalone pasted markup are
  left verbatim. New setting kaicrit.edit.preventNestingOnPaste
  (default true).

v0.7.1

02 Jun 08:07

Choose a tag to compare

v0.7.1: Fix nested markup when pasting inside a Track Changes marker

- Pasting CriticMarkup inside an existing marker no longer nests
  (e.g. {++any++} into an addition). Inner markers are flattened to
  their accept-form before being absorbed, so the marker just grows
  by plain text. Counterpart to the #40 plain-text paste fix.

v0.7.0

01 Jun 18:19
8bfa4a7

Choose a tag to compare

v0.7.0

Two new nesting-prevention rules for Track Changes mode.

Changed

  • Track Changes: editing a marker's delimiter now rejects that change (#38).
    Deleting or replacing any part of a marker's opener/closer — e.g. backspacing
    the leading { of {++a++} — resolves the whole marker with Reject semantics
    (addition → removed, deletion → text kept, substitution → original, etc.)
    instead of leaving broken or nested markup like {--{--}++a++}. Edits inside
    a marker's content are still absorbed (#34); a selection spanning content and a
    delimiter rejects the entire marker.
  • Track Changes: pasting text that is already CriticMarkup is kept verbatim
    (#40). Inserting complete marker(s) no longer re-wraps them into nested markup
    ({++a++} stays {++a++}, not {++{++a++}++}). A paste that mixes plain text
    with markers wraps only the plain runs as additions
    (foo {++a++} bar{++foo ++}{++a++}{++ bar++}), and pasting markup over a
    selection tracks the replaced text as a leading {--…--} deletion.
    Unterminated input (e.g. {++a) still falls through to a normal addition wrap.

Full changelog: v0.6.2...v0.7.0

v0.6.2

01 Jun 11:11

Choose a tag to compare

Release v0.6.2

Add MIT license (LICENSE file, package.json license field, README section).