Soul Archive v3.1.1 — silent migration + Windows safety
What changed
Silent auto-migration
Soul Archive's data directory is now ~/.agent-commons/skills_data/soul-archive/ — that's it, one path, no fallback story to explain.
If you previously had data under ~/.skills_data/soul-archive/, it is silently moved to the canonical location the next time you trigger any Soul Archive entrypoint. No prompt, no flag, no manual step. The data just ends up where the docs say it is.
The migration is best-effort and atomic-ish (uses shutil.move, which falls back to copy+remove across filesystem / drive-letter boundaries). On any error, the user's data is never made worse than it was.
The standalone scripts/soul_migrate.py CLI is removed — it's redundant now that migration is transparent.
Windows safety
All 8 entrypoint scripts now reconfigure sys.stdout and sys.stderr to UTF-8 at startup. On Windows PowerShell / cmd, this prevents UnicodeEncodeError when printing Chinese text or emoji (🧬 ✓ cp936 codec previously couldn't encode them.
This is a no-op on POSIX terminals that are already UTF-8.
The codebase was also re-audited for Windows compatibility: no fcntl / pwd / grp imports, no shell=True calls, no hardcoded POSIX separators, every open() call carries an explicit encoding="utf-8".
Backwards compatibility
--soul-dirflag andSOUL_DIRenv var still override the canonical location.- Users with data still at
~/.skills_data/soul-archive/see a one-time silent move on the next invocation. - No protocol-version bump for soul-archive's own data —
soul_versionstays at3.0.
Files
- New: silent auto-migration logic in
scripts/soul_paths.py - Removed:
scripts/soul_migrate.py(replaced by silent migration) - Docs simplified: README / SKILL / PRIVACY / docs/multi-device-sync no longer document dual locations
License: MIT.