IWE can now remember across Claude Code sessions: iwe init offers to switch memory on when it finds a .claude/ directory, session transcripts are digested into a queue, and an agent distills each one into your markdown store under the policy your MEMORY.md defines.
One thing to check before upgrading — unknown keys in .iwe/config.toml are now a parse error instead of being silently ignored, so a config with a typo or a stale setting that used to work will stop the LSP server from starting.
iwe
Added
iwe internal— hidden commands backing the Claude Code memory integration: enabling memory, session hooks, transcript digests, and the capture queue an agent works through- Capture chunks — the raw transcript digests the memory queue serves — live under
.iwe/claude-sessions/at the workspace root (or$IWE_MEMORY_STATE), ignored by git and outside the graph; only theMEMORY.mdpolicy and thesessions/<id>records are store documents iwe initoffers to enable Claude memory when a.claude/directory is present, defaulting to noiwe delete -k <key>— the same key flagretrieveandupdatetake, alongside the existing positionaliwe internal claude prompt <init|distill|reflect|distill-agent>prints the instructions the memory plugin's skills and agent follow, so the plugin ships only frontmatter and the text always matches the installed binaryiwe docs agent— the policy an agent follows to use this CLI, served by the binary so the published skill never lags the release
Changed
iwe initasks a separate question before adding theAGENTS.mdsection and registering the.mcp.jsonserver, defaulting to no (previously confirming the detected settings wrote both files)- The
AGENTS.mdsectioniwe initwrites explains the graph principles and points atiwe helpandiwe docs(previously it listed specific commands and detected store conventions) schema validatewarns on stderr when its bindings match no documents (previously a silent exit 0)- Unknown keys in
.iwe/config.tomlare rejected with a parse error (previously silently ignored)
Fixed
- The
unknown projection sourceerror names the fix: frontmatter fields are bare names (type, not$type)
iwes
Changed
- The server refuses to start when
.iwe/config.tomlcontains unknown keys, reporting the parse error (previously unknown keys were silently ignored)
iwec
Fixed
- Schemas are read from the project root, so
iwe_createandiwe_updatevalidate against.iwe/schemas/next to.iwe/config.toml(previously the server looked under the library directory and every write failed with a schema-not-found error wheneverlibrary.pathwas set)
Library crates (liwe, diwe)
liwe
Changed
MarkdownOptions,DjotOptions, andFormattingOptionsreject unknown fields when deserialized (previously unknown keys were silently ignored)
diwe
Added
library_path_in— resolves the library directory from a project root and aConfiguration
Changed
- The
validate_documentsfamily returnsValidationRun— the reports plus counts of validated documents and distinct schemas (wasVec<KeyReport>) Configurationand its nested option types reject unknown fields when deserialized (previously unknown keys were silently ignored)