v1.20.0 — root-named project slugs + ADR relations at registration
- #294 root-named project slugs (PR #295): Project slugs are now named after the project ROOT (
.gitdominant,UM_PROJECT_MARKERSrespected). Existing subdir-named layers are NOT migrated and age out. The only operator action is the normal plugin/install-cli refresh.um-previewfrom a subdirectory now needs--project. Success hook.log lines carryproject=<slug>. Recall reads the same slug capture writes (session-start adopts the guard). Live-verified post-merge from fresh sessions in a repo subdirectory and in a.git-less marker project: session-start and session-end both logged the root slug; no subdir-named layer minted. - #271 ADR relations at registration (PR #293):
/adr syncnow carriessupersedes/superseded_byfrom the ADR's frontmatter into the registered point (label-only — status still derives from the file's ownstatus:; omitted when empty; follows the file on every re-sync). - Zero server runtime changes; the image is rebuilt for the version stamp only.
Deploy notes: the slug change lives in the hooks and CLI, not the server — every consumer machine keeps the old cwd-basename derivation until it refreshes the plugin (claude plugin marketplace update universal-memory + reinstall) and the installed CLI (installer/install-cli.sh). Until then, old-derivation junk layers re-firing LAYERS-STALE is the alert working. The install-cli refresh also clears the #271 installed-copy residual (create-adr lib).
Artifact verification: ghcr.io/goldenwo/universal-memory-server:1.20.0 pulled and booted per-arch (amd64 + arm64 under QEMU) against a throwaway qdrant with the real provider key — /health 200 on both, mem0ai/oss resolves on both (node v22.23.2).