v0.6.0
⚠️ Heads up before you update
Two things worth doing first:
- Let your queue drain — this release retires several ceremony phases that were in-flight-able. An update mid-queue could leave orphaned work.
- Back up your data —
EI_DATA_PATH. Nothing should corrupt, but this release changes how people are matched and how personas evolve. Worth a snapshot before you find out I'm wrong.
People got a brain
The old person-matching pipeline used an LLM as the judge. It was slow, it was expensive, and it made duplicates. A lot of duplicates.
New pipeline: identifier-based matching. When Ei discovers someone you know, it records structured identifiers — Full Name, Nickname, GitHub handle, whatever makes sense. No LLM in the loop for matching. Just lookup.
The big one: you can now link a Person record to a Persona. If you've set up an Ei persona for your partner, your collaborator, whoever — tie it to the Person record and Ei knows they're the same entity. The identifier type is called Ei Persona and it works in both the web editor and /me people in the TUI.
Bonus: every data item now tracks learned_on — when Ei first discovered it. Shows up in card footers and YAML.
Personas stopped changing behind your back
This one I'm... actually a little embarrassed took this long.
The old ceremony was quietly rewriting persona traits, topics, and descriptions in the background. You'd come back and your persona had shifted. No notification. No ask. Just different.
That's gone.
Descriptions, traits, and topics are now static. You write them, they stay. The ceremony is simplified — the Expire, Explore, and DescriptionCheck phases are retired.
What replaces them: drift detection. If you've linked a Persona to a Person record and that person record diverges significantly from the persona's identity, Ei will ask you about it in the conversation. Not rewrite it. Ask. You decide what's true.
Also: long_description is now required when creating a persona. It was always the backbone of the persona's voice — I just never enforced it. Fixed.
Personas got more expressive
Responses switched from a strict JSON schema to Markdown. This sounds like an implementation detail, but it's not.
Your personas can now use code blocks, emphasis, headers, lists, natural action text. And critically — this dramatically improves compatibility with local LLMs that were choking on the JSON format requirement. If you run Ollama or LM Studio, this release should feel noticeably better.
General QoL
Groups are now editable. Every People, Topics, and Facts card has inline group chips. Click to toggle, + to add a new group. Previously they were display-only.
The People card got a layout redesign while we were at it — group chips sit right under the name like issue labels, identifiers section is collapsed by default (it's set-once, it shouldn't dominate). Topics and Facts got the same chip treatment.
Fixed
- Quote capture rewrote itself with word-boundary selection and a proper
contentfield. It should have always worked this way. - MAP/CYP rooms: sibling awareness injection now correctly scoped to FFA rooms only.
- Person description limit raised for the Rewrite handler.
- Various person-matching edge cases: zero-match cosine similarity fallback, relationship string fallback when name is unknown, identifier hygiene on upsert.