Skip to content

v0.9.1 — sync no longer eats your edits

Latest

Choose a tag to compare

@mvoutov mvoutov released this 10 Sep 17:21
· 8 commits to main since this release
2100a20

aspens v0.9.1 — sync no longer eats your edits

A small patch release that fixes a data-loss bug in doc sync and a set of Windows path issues. No breaking changes — upgrade in place.

🔧 Fixed

  • doc sync no longer deletes hand-written lines from CLAUDE.md / AGENTS.md. The deterministic repair of the ## Skills and ## Behavior sections rewrote each section wholesale, so any rule you added by hand disappeared on the next sync — including the silent post-commit hook sync. Both sections now merge: generated entries are refreshed in place while every other line is preserved in order, with its own line ending. Repeated syncs are byte-stable on LF, CRLF, and mixed-ending files. (#52, #54)
  • Windows skill paths are normalized to forward slashes. path.join() / path.relative() produced \-separated logical paths on Windows, so skill references, import-graph nodes, and index.json entries broke — extractDomainFromAnyPath returned null and silently dropped every domain skill from the Skills section. A new src/lib/posix-path.js normalizes at the boundary where a filesystem path becomes a logical path. (#53, #54)
  • doc sync outside a Git repository now shows a clear error. The project prefix was computed before the "Not a git repository" guard ran, so a non-Git directory failed with a raw TypeError instead of the actionable CliError message. (#54)

🔒 Security

  • Bumped vitest 4.1.3 → 4.1.11 (lockfile only) to clear the moderate @vitest/mocker path-traversal advisory (GHSA-82fw-gwwq-j7x9). Dev-only and never shipped in the published package; npm audit now reports 0 vulnerabilities.

📝 Docs

  • README logo now uses an absolute URL so it renders on the npm package page.

⬆️ Upgrade

npm install -g aspens@0.9.1

Then re-run aspens doc sync to pick up the fixed merge behavior. If you'd previously lost hand-written lines from CLAUDE.md / AGENTS.md, re-add them — they'll now survive future syncs.

Full changelog: https://github.com/aspenkit/aspens/blob/main/CHANGELOG.md

Thanks to @edfarrow for this fix — their first contribution to aspens! 🙏