Compare
Sorry, something went wrong.
No results found
v0.7: gameplay enrichment + long-session sustainability
Phase A (parallel ×3):
- Quest journal page (/play/:id/journal) — active vs resolved tabs
- BGM + SFX (5 styles × 30s loops, dice/state-up/state-down sfx) generated
via ffmpeg; replace any /public/{bgm,sfx}/*.mp3 with your own
- 4 character SVG portraits hand-coded (riku/yuki/aya/sanchuan)
- Mute toggle (🔊/🔇) in top-right
- GM model warmup on session open (eliminates first-turn cold-load)
Phase B (sequential, all touch db schema):
- B0: NPC 攻略详情 — multi-axis affinity (好感/信任/羁绊/恋慕/敌意…),
purpose, archetype, pin (永不掉出 context), <recall name='X'/> tag
(one-shot dossier re-injection), clickable detail dialog, /play/:id/npcs
roster page with search
- A4: character portrait upload (POST /characters/{id}/portrait, 5MB cap,
png/jpg/webp/svg/gif), CharacterAvatar component, GameView header avatar
- B2: character XP + level — <character_xp delta='N'/> tag, POST /levelup
with stat choice (HP/stamina +5, others +1), XP bar in header,
auto-popup LevelUpDialog when threshold crossed
- B5: recursive summary compression — when summary > ~3000 chars, second
LLM call produces refined summary + <event importance='N'>...</event>
blocks; importance≥2 events persisted to new Timeline table
Schema: NPC adds purpose/archetype/affinity_json/pinned;
Session adds recall_pending_json; Character adds portrait_path/xp/level;
new Timeline table. Lightweight ALTER TABLE migration helper in db/base.py
auto-upgrades v0.6 databases on first launch.
96 backend tests passing.