Files
project-lyra/CHANGELOG.md
T
serversdown dfb6425395 feat: session modes (Talk/Cash) + live session HUD
Lyra now switches register based on what she's doing at the table instead of
being a wishy-washy companion mid-session.

Modes (lyra/modes.py):
- Talk (default companion) + Cash (live cash copilot); a mode = prompt card +
  tool allow-list. Tool gating via tools.specs(allow=).
- Two-register Cash voice: act-first one-line logging when fed facts; full warm
  companion voice for strategy / tilt / mental game.
- mode persisted per chat session (new sessions.mode column); auto-switch into
  Cash when start_session fires; UI forces cloud backend in Cash (tools only
  fire there).

Stack tracking + HUD:
- log_stack tool + poker_stack_log table; live net while sitting (stack - buy-in).
- poker.hud() bundle; /session HUD page (stack sparkline, hands, villains, notes,
  stats) polling /session/data every 5s; Talk/Cash switcher + Session nav.

Endpoints: /session, /session/data, GET/POST /sessions/{id}/mode, /modes.
tests/test_modes.py (gating, mode roundtrip, stack/HUD); 36 tests green. v0.3.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:28:15 +00:00

85 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Changelog
## 0.3.0 — session modes + live HUD
Lyra stopped being a wishy-washy companion during live poker. She now switches
register based on what she's actually doing at the table.
### Conversation modes
- **Two modes** — 💬 **Talk** (the companion, default) and ♠ **Cash** (live cash
copilot). A mode bundles a prompt card + a tool allow-list (`lyra/modes.py`).
- **Two-register Cash voice** — quiet, act-first logging when Brian feeds facts
(stack, hand, read → logged in one line, no narration); full warm companion
voice when he asks for strategy or signals tilt/card-dead/steaming. Mental game
and strategy never get clipped.
- **Tool gating by mode** — Talk offers journaling + read-only poker lookups;
Cash unlocks the full live toolset. `tools.specs(allow=…)` does the filtering.
- **Auto-switch** — opening a session (`start_session`) flips the chat into Cash
mode automatically; the UI badge/HUD follow. Manual switch overrides anytime.
- Mode persists per chat session (new `mode` column); Cash mode forces the cloud
backend, since tools only fire there.
### Session HUD
- **Live HUD** at `/session` (bottom-nav tab on mobile, header link on desktop) —
polls every 5s: header (venue/stakes/elapsed/live net), stack with
**stack-over-time sparkline**, hands this session (tap → replay), villains seen,
her notes, and session stats.
- **Stack tracking** — new `log_stack` tool + `poker_stack_log` table → current
stack, **live net while still sitting** (stack buy-in), and the sparkline series.
### Next
- Strategy RAG (poker books/notes) plugs into Cash's coaching register.
## 0.2.0 — first working system
The leap from "chat + memory baseline" to a working, persistent companion with a
real poker copilot. Highlights:
### Self & inner life
- **Autonomy Core** — evolving self-state (mood, valence/energy/confidence/curiosity,
self-narrative, relationship), injected into every turn.
- **Dream cycle** — unattended loop driven by four drives (continuity, coherence,
curiosity, stability); consolidates memory and reflects on its own. Runs as a
systemd service on the MI50 (free/local).
- **Two-step metacognitive reflection** — draft → examine own draft for flattery /
sycophantic drift / repetition → revise; what she catches is stored as metacognition.
- **Time awareness** — perceives the current moment, time since Brian last spoke, and
time since her own last reflection.
- **Permanent journal** — every reflection + a deliberate "knowing" journal note kept
forever (the capped lists are just a working window).
- **Accurate self-model** — knows her own architecture (memory tiers, dream cycle);
won't recite stale specs or confabulate how she works.
- **Anti-repetition** — idle reflections draw varied grist (resurfaced memories /
"wander" prompts) and are permitted non-Brian interiority.
### Memory & consolidation
- Tiered memory: exchanges → session gists → profile → monthly eras → narrative.
- Map-reduce consolidation; gists dated by the real conversation, not the run.
### Poker copilot
- Structured **session / hand / villain** tracking + stats ($/hr by stake/venue/game).
- **Hand-history reconstruction** from rough shorthand → replayable table viewer with
live stacks, progressive board, step-through; `x` for unknown cards (never invented).
- **Auto-accumulating villain dossiers** + player lookup; stats emerge with sample size.
- **Deterministic equity tool** (`analyze_spot`, treys) — exact equity / made hands /
outs; mandated over LLM eyeballing.
- **Session recap** generation (`.md`, Brian's format) + export; `/hands` browser.
- **Backfill** of historical sessions/villains from curated `.md` logs.
### Tools & web
- **Tool-calling** in chat (cloud): poker tools, `journal_write`, `note`.
- Web UI: Markdown chat, **cloud model selector**, live **/logs**, **/self** (read her
mind), **/journal**, **/hands** + **/hand/{id}** replayer, **/recap/{id}**.
- **👍/👎 rating system** — feedback on replies and thoughts stored as
`(context, content, rating)`; `/ratings/export` (JSONL) seeds future fine-tuning.
- RTO black-and-orange theme across all pages.
### Ops
- Role-based backends (cloud / MI50 / local Ollama); MI50 OpenAI-compatible backend.
- systemd user services for `lyra-web` and `lyra-dream`, with bounded stop timeouts.
- SQLite WAL + busy-timeout so the dream process and web server coexist.
## 0.1.0 — scaffold
- uv project, SQLite memory with cosine recall, LLM router (local/cloud), persona +
chat loop, web UI baseline, ChatGPT history import.