Repository navigation
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 syncno longer deletes hand-written lines from CLAUDE.md / AGENTS.md. The deterministic repair of the## Skillsand## Behaviorsections 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, andindex.jsonentries broke —extractDomainFromAnyPathreturnednulland silently dropped every domain skill from the Skills section. A newsrc/lib/posix-path.jsnormalizes at the boundary where a filesystem path becomes a logical path. (#53, #54) doc syncoutside 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 rawTypeErrorinstead of the actionableCliErrormessage. (#54)
🔒 Security
- Bumped
vitest4.1.3 → 4.1.11 (lockfile only) to clear the moderate@vitest/mockerpath-traversal advisory (GHSA-82fw-gwwq-j7x9). Dev-only and never shipped in the published package;npm auditnow 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.1Then 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! 🙏