v0.5.2
v0.5.2 (2026-08-15)
Fixed (P0)
- Incremental-lint fingerprint instability: paragraph-level fingerprints previously used the +/-60/80-char context snippet - editing other words in the same paragraph turned an unfixed issue into a false "resolved+added" pair and re-injected it on every write. Fingerprints now use the matched text itself; state fingerprint version bumped to 3 (old baselines rebuilt once).
- maxAutoInjectPerTurn silently degraded to a per-agent lifetime cap: ToolExecution has no urn field, so the per-turn counter never reset - in long paper-writing sessions, new issues stopped being injected after the first two notifications. The counter now resets at �gent/turn-stopping (the real DSH turn boundary).
Fixed (P1/P2)
- isPaperFile substring false positives:
ewspaper-notes.md, synthesis-draft.md, coverage-report.md, paperwork.md were auto-audited as papers - English hints now use character-boundary matching. - Profile detection alignment:
evision_notes.md/Supplementary_revision_notes.md -> manuscript,
eviewer2_comments.md/
eviewer 2 comments.md -> review, my_notes.md/draft_notes.md -> notes,
evision_response.md -> rebuttal (previously unknown, running the full rule set on the wrong document type). - we-have-changed missed "we have now updated";
ule-of-three missed sentence-initial capitals. - State write failures are no longer silently swallowed (queueSave reports via ctx.logger.warn).
- Same-paragraph duplicate hits are now all reported (capped by maxHits), using a cloned regex so shared
ule.pattern.lastIndex is never mutated. - An Appendix / Supplementary section after References is scanned again (previously swallowed as reference).
- writing_audit gains the projectResidueTerms parameter (per-call project vocabulary), matching what the rule message already told users.
- Section detection derives the base heading level, so # Title + ## Sections layouts support cross-section detection; sub-headings never split a top-level section.
- Plugin version single-sourced (PLUGIN_VERSION); developer-process residue ("GPT P0/P1") removed from comments.
Tests & infrastructure
- 68 -> 105 assertions: fingerprint-stability regression (the P0), isPaperFile word boundaries, profile edge cases, multiple hits per paragraph, # Title + ## Sections, Appendix-after-References, "we have now updated", capitalized rule-of-three.
- GitHub Actions CI (build + 105 tests on push/PR), npm publish workflow (tag-triggered, needs NPM_TOKEN secret).
epository/homepage/�ugs/packageManager/engines metadata; full English README with a real writing_audit output demo; CHANGELOG.md; SECURITY.md.
Full changelog: https://github.com/xmutfyh/dsh-plugin-writing-guard/blob/master/CHANGELOG.md