Calendar¶
Her schedule as a month grid — what she's done (past) and what she's planning (future). Sidebar label: Schedule. URL: /persona/{id}/calendar.
The screen is built entirely from GET /api/persona/{id}/calendar, which returns a window of her history (past events she's archived) and her destiny (future events she's scheduled). It's a read-only view of her files — there are no controls to add or edit events here.
What it shows¶
A standard month grid (weeks start Monday). Today is highlighted; the selected day is outlined. Each day cell shows up to three events; more collapse to a "+N more". Below the grid, a popover lists every event for the selected day in full.
Events come from two halves of the calendar response, distinguished visually by origin:
| Origin | Source in the response | Meaning |
|---|---|---|
| you added | history |
Past events — conversations, reminders, things from your side. |
| she set up | destiny |
Future events she's scheduled for herself. |
Each event shows a time, a title, and (for recurring ones) the recurrence — e.g. "daily", "weekly".
How titles are derived¶
The response gives each event a body (the file's markdown), not a clean title, so the screen derives one:
- Conversations are always titled "Conversation" — their body is the raw chat log, never a usable title.
- Schedules and reminders take the first heading line of the body (a leading
#is stripped); if there isn't a usable one, the kind name is capitalized ("Schedule", "Reminder").
The recurrence shown in the day popover is the recurrence field from a destiny entry. It's informational — Eternego does not project recurring events forward; you only see what's actually on disk for that window. (See the Calendar endpoint.)
Navigation¶
| Control | Action |
|---|---|
| ‹ / › | Previous / next month. |
| Today | Jump back to the current month and select today. |
| Click a day | Select it; its events fill the popover below. |
Changing the month refetches: the screen requests GET .../calendar?start=<iso>&end=<iso> with that month's bounds — start is the first of the month, end the first of the next (the window is start <= event_time < end). On first open it loads the current month the same way.
Both query params are ISO dates; the endpoint accepts a bare date (2026-06-01) or a full timestamp. Out-of-range or malformed dates return 400 — but the screen always sends well-formed month bounds.
Related¶
- Calendar — the endpoint, its query params, and the exact
history/destinyresponse shape. - Her files: runtime — where
history/anddestiny/live on disk, and what writes them. - Vocabulary —
destiny, the day-arc the persona lives on.