Skip to content

Soul Archive v3.1.1 — silent migration + Windows safety

Choose a tag to compare

@dqsjqian dqsjqian released this 28 May 08:10
· 1 commit to master since this release

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 (🧬 ✓ ⚠️) — the default 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-dir flag and SOUL_DIR env 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_version stays at 3.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.