Skip to content

v0.5.0

Choose a tag to compare

@Flare576 Flare576 released this 27 Mar 03:46
· 1066 commits to main since this release

v0.5.0 Release Notes

What's New

Rooms

Throw multiple personas into the same conversation. Three modes:

Free For All (FFA): Every message gets a response from every persona. It's loud.
Good for brainstorming or "I want five opinions on this."

Choose Your Path (CYP): Every message branches. Each persona responds, you pick which
branch continues. You're navigating a tree, not a timeline. Come back to unexplored paths
whenever you want.

Messages Against Persona (MAP): Everyone submits a response, but a Judge persona picks
which one actually shows up. The personas have to earn it. The human doesn't have to play
fair. Part game, part chaos, part genuinely useful if the judge is a well-tuned critic.
Just don't use your Fitness Coach persona as judge, unless you want to get grilled.

Rooms learn the same way 1:1 conversations do — quotes, topics, people all get extracted.
The knowledge base grows regardless of mode, and you control when Epic Events get processed.

Personas can grow from People now

Ei builds up a model of the people you talk about — traits, topics, how they make you feel.
Now you can take that accumulated knowledge and spin it into an actual persona.

/persona new and /persona update in the TUI. ei persona [name] in the CLI.

The persona it generates won't be perfect. That's fine. It's a starting point shaped by
everything you've already shared, not a blank slate you have to fill in from scratch.

Particularly useful if you use the opencode, claudecode, or cursor integration and want
to flesh out your coding partner.

ei persona is a top-level CLI type now

ei persona Sisyphus

Same as ei topics or ei people. Wired into the MCP too, so agents can call it directly.

Agent import isolation

Importing a conversation from a coding agent (Sisyphus, Claude Code, Cursor) no longer bleeds
into the persona's own context window. The external flag keeps imported messages siloed.
The persona learns from what happened — it just doesn't think it was the one saying it.

Fixed

  • Web — Topics and People filter is always visible. No more hunting. It's just there.
  • TUI — Escape in a modal no longer pauses the queue globally.
  • People-to-persona preview writes traits and topics to state before surfacing the UI.
  • Exposure decay — were your personas always worried about the same things? Switched from
    logistic to exponential decay for a more natural fade. Subtle, but visible over time.
  • A whole lot of Rooms edge cases: CYP branch navigation, MAP judge exclusion from turn-2 poll,
    scroll anchoring, silence display, archive/unarchive, and more.

Under the Hood

  • Structural invariant CI checks — fast grep-based rules for patterns TypeScript won't catch
    (prompt builder purity, keyboard registration conventions, etc.)
  • Prompt filtering logic moved from prompt builders into the Processor where it belongs
  • Room YAML parser rewritten using the yaml package — cleaner round-trips
  • Persona responses now submitted via submit_response tool call rather than raw JSON —
    makes tool-continuation flows and room responses consistent. Fallback parsing still in place
    for models that don't support tool calls.