Describe the bug
The Memory Workflow generates a file like /Users/<user>/.openloomi/sessions/<session-id>/TN-Alpha-memory.md. To make it retrievable across sessions, the user has to manually copy that file into the long-term memory directory. Workflow success does not equal memory saved.
To Reproduce
- Ask OpenLoomi to remember project TN-Alpha.
- Run the memory workflow (or the
memorize skill).
- Inspect the long-term project memory directory:
data/memory/projects/ is empty.
- The file lives only under
sessions/<id>/ and is invisible to future sessions.
- Restart / start a new session; the project memory is not retrieved.
Expected behavior
The workflow's "save" step should atomically promote its output to data/memory/projects/<slug>.md — the canonical long-term directory defined by apps/web/lib/ai/memory/fs-sync.ts:30. The slug is derived from the project name (stable, lowercase, ASCII-safe). Promotion should be part of the workflow's contract, not a separate manual action.
Screenshots
N/A
Desktop
- OS: any
- App: OpenLoomi desktop (Tauri) and web
Additional context
getMemoryFsPath() already returns the canonical long-term path; only the workflow's writer path is wrong.
- Related:
apps/web/lib/ai/memory/chat-sync.ts and the session-scoped helpers in the same folder need to be unified into one save flow that distinguishes "session draft" from "long-term memory".
Describe the bug
The Memory Workflow generates a file like
/Users/<user>/.openloomi/sessions/<session-id>/TN-Alpha-memory.md. To make it retrievable across sessions, the user has to manually copy that file into the long-term memory directory. Workflow success does not equal memory saved.To Reproduce
memorizeskill).data/memory/projects/is empty.sessions/<id>/and is invisible to future sessions.Expected behavior
The workflow's "save" step should atomically promote its output to
data/memory/projects/<slug>.md— the canonical long-term directory defined byapps/web/lib/ai/memory/fs-sync.ts:30. The slug is derived from the project name (stable, lowercase, ASCII-safe). Promotion should be part of the workflow's contract, not a separate manual action.Screenshots
N/A
Desktop
Additional context
getMemoryFsPath()already returns the canonical long-term path; only the workflow's writer path is wrong.apps/web/lib/ai/memory/chat-sync.tsand the session-scoped helpers in the same folder need to be unified into one save flow that distinguishes "session draft" from "long-term memory".