Skip to content

v0.2.0 — The Workspace Release

Latest

Choose a tag to compare

@riponcm riponcm released this 08 Jul 01:23

The Workspace Release

projectmem lifts memory from one project to your whole machine — and closes the gap between what happened (memory) and what your code is (structure). No new required dependencies, and the six core event types (issue, hypothesis, attempt, fix, decision, note) are unchanged — your existing events.jsonl just gains new ways to be seen.

pip install -U projectmem

🌐 Cross-project global dashboard — pjm dashboard

One page over every repo you've pjm init-ed: total issues captured, fixes confirmed, dead-ends prevented, tokens saved, a grade per project, and a "needs attention" list. Click any card to open that repo's own dashboard, generated fresh.

It's a global view, not a global store — each repo's .projectmem/ is aggregated at read time and never leaves its folder. A tiny registry at ~/.projectmem/projects.json only records where your projects are.

  • Serverless by default — writes a self-contained static snapshot and opens it; the page honestly labels itself a snapshot, so it never overclaims.
  • --serve for live — a tiny, ephemeral local server where the Refresh button re-reads your files and each card renders on demand. No background daemon; Ctrl+C stops it cleanly.

🧬 Code structure & relations — pjm map --build

Memory knew your history; now projectmem also reads your structure. pjm map --build (run automatically at pjm init) walks the codebase and, for Python, resolves imports into a real dependency graph — written to a derived, gitignored structure.json cache (code is only ever read, never modified). The Project Map's Graph and Flow views now render your actual files and the import edges between them.

🔥 Failure heat on structure — the combo

The one view a pure code-grapher can't draw and a pure memory tool can't either: files with repeated failed attempts glow red, laid directly over the real import graph. Structure comes from the code, heat comes from your memory, and they meet only in the renderer.

🗂️ plan.md — intent, kept separate from memory

pjm init now scaffolds a .projectmem/plan.md: your ideas and plans — what you mean to do — deliberately not the event log. events.jsonl → summary.md records what happened; plan.md records what you intend. The AI reads it at session start via the new get_plan() MCP tool and edits it directly, like PROJECT_MAP.md; a plan never becomes an event. pjm plan prints it, pjm plan "idea" appends one. Committed, so intent is shared with your team.

Also

  • 15 MCP tools now (get_plan added) — 10 read, 5 write.
  • No schema changes, no new required dependencies.
  • New tests cover the registry, the global dashboard (static + --serve), the structure extractor, and plan.md135 total.

Full changelog: https://github.com/riponcm/projectmem/blob/main/CHANGELOG.md · Docs: https://projectmem.dev/guide · Verified end-to-end on Claude Desktop, Cursor, Antigravity, and Codex.