v0.37.0 — Book of the Exile
📖 Book of the Exile
Every character's story, written as it happens.
Your character now keeps a running journal. Level-ups, boss kills, deaths, and notable drops all land as dated entries in a per-character on-disk book — one file per character, appended in real time as you play. Open the dashboard and turn to any page in the book: today, yesterday, this week, any earlier chapter you want to revisit.
Added — 📓 Character Codex (per-character auto-written journal)
Every session, POE2GPS quietly writes four kinds of events to config/codex/<character>.jsonl:
- 🌟 Level-ups — captured at the exact tick your character advances
- 🐉 Boss kills — attributed via the boss encounter catalog, strict allowlist (unknown uniques never logged, so the codex stays clean)
- 💀 Deaths — with zone, area level, and character level at the moment of death
- 💎 Notable drops — unique-rarity items on their first sighting per character
Character-name stability gate (30 ticks of unchanged name at 30 Hz) prevents opening a codex file during the login flicker window, so events never get attributed to the wrong character. Switch characters and the codex swaps files cleanly after the new name settles.
Added — 📚 Dashboard Codex tab
A new tab in the dashboard renders your character's book:
- Per-day chapter groupings (jump straight to Today / Yesterday / This Week)
- Per-kind filter chips (level / boss / death / drop) — click to narrow the view
- Icons per event kind, chronological within each day
Everything is served over the new /api/codex?character=<name> endpoint, loopback-gated so the character-name query param never leaks past your machine. /state continues to strip character identity per the existing privacy posture.
Under the hood
- New
POE2Radar.Core.Session.CodexEventpolymorphic type hierarchy with JSONL round-trip viaSystem.Text.Json[JsonPolymorphic](base +LevelUpEvent,BossKillEvent,DeathEvent,NotableDropEvent). - New
SessionEventLog— mirrors DropTimeline's mature load-on-construct + append + flush-on-dispose pattern, adds character-name stability gating and stateless per-character reads (SnapshotForCharacter) for cross-character API queries without disturbing live tracking. - Observers wired into
RadarApp's render-thread world tick:CodexBossObserver(unique alive→dead + catalog hit),CodexDropForwarder(subscribes to a newDropTimeline.Recordedevent),SessionTracker.CodexEmitfor level-ups and deaths.
Known limitation
The boss-attribution validation test (D1 in the plan — a playtest-derived xUnit theory that asserts zero false positives on ~30 non-boss uniques) will ship in v0.37.1 once we've captured the metadata paths from a live PoE2 session. The runtime attribution logic is already strict-allowlist (unknown uniques dropped silently), so the risk of a false-positive boss entry in your codex is low; the follow-up formalizes the guarantee.
Install / Upgrade
- New install? Grab
POE2GPS-v0.37.0-win-x64.zipbelow and unzip anywhere; portable, no installer. - Existing users: the auto-updater will prompt on next launch.
- Fully additive — no config migration, nothing you have to change. The codex starts writing the moment your character name stabilizes; if you don't want it, ignore the new dashboard tab and never look in
config/codex/.
Full Changelog: v0.36.1...v0.37.0