Skip to content

v2.2.2

Choose a tag to compare

@enriquephl enriquephl released this 16 Oct 08:41
· 54 commits to main since this release
v2.2.2
0ad6994

Features

  • Life events v2 (#417).
    • Four categories. short and mid are incidents (within an hour, within four hours); body and trip are backgrounds that last days, during which incidents still happen. One incident and one background at a time.
    • 28 kinds, 23 of them new: incidents (grocery_shopping, showering, bathing, in_class, on_the_way, sudden_desire, hit_someone, got_hit, breakup, working_out, reading, gaming, away_from_phone, unwell, irritable), body states (sick, period, hospitalized, post_surgery) and trips (business_trip, short_trip, long_trip, hometown_visit). police_encounter now lasts 30 minutes.
    • A two-stage draw: a category by weight, then a kind within it. A trip starts at most once a week and a body state once a fortnight; in hospital or after surgery, no incident that needs her out and about. New gates: breakup from rung 2, sudden_desire at rung 3, period only for gender: "female".
    • Persona settings in art_metadata: prefer_events (mid kinds come up three times as often), health (weak / normal / strong scales body), prefer_trip (trips three times as often).
    • away_from_phone is drawn without a message. While it lasts, text turns ghost without the judge and without ghost accounting, and /open returns null; action turns, which are interaction in person, and forced-image turns are still answered. It is never drawn with ghosting = false or in a session with fewer than 10 user messages. Afterwards the persona's next message in a session she ghosted explains it.
    • The judge's [近期事件] and the reply's 正在经历 line list the background, then the incident; /open greetings and event messages carry them too. An incident during a background is told from inside it.

Docs

  • The away-from-phone exemption for action turns states its reason, and the v2.2.2 migrating guide (#418).

Compatibility

  • HTTP: EventView gains category, and message_id is nullable: a drawn away_from_phone returns event with message: null. GET /v2/comp/session/{session_id}/effects gains background_event. With kinds absent, every new kind can be drawn, away_from_phone included; a caller that wants to phase them in sends an allowlist. See docs/migrating/v2-2-2-life-events.md.
  • Store: migration 0072 creates engine.persona_events and backfills it from the v1 event messages; new event messages no longer carry metadata.event / metadata.event_key. The v1 metadata and chat_messages_event_key_uidx stay, so the v2.2.1 image, deployed without running migrate, works after a rollback; it does not see events v2.2.2 wrote. The next release removes them.
  • Crates: eros-engine-core: events::draw takes Rolls and returns Drawn { kind, lasts }, DrawInput gains persona, duration() and longest_cooldown() are removed, and EventKind gains 23 variants, which breaks exhaustive matches. eros-engine-store: the event methods on ChatRepo and chat::EventRecord / chat::CurrentEvent are removed; events live in the new events module (EventRepo).

Docker: ghcr.io/etherfunlab/eros-engine:2.2.2