Skip to content

[v0.8.0] Yui has landed!

Choose a tag to compare

@wehos wehos released this 08 May 20:40
· 361 commits to main since this release
668508c

看PR记录就知道大家有多努力,开发组已经快燃尽了。优化和更新之路永无止境,但现在真正需要的是某种一锤定音的东西……

[主要更新]

  • 悠怡登场:默认角色与 Live2D 资源切换到 YUI / yui-origin,并新增中文音色支持。
  • 新手引导升级:首次启动和功能引导更完整,支持跨页面引导、语音提示和进度保存。
  • 长期记忆全面升级:N.E.K.O 现在能更稳定地整理、保留和修正记忆,让陪伴感更连续。
  • 主动搭话更聪明:猫娘会结合你的状态判断是否适合说话,减少打扰,也更容易在合适的时候出现。
  • 小游戏邀请上线:新增足球小游戏互动入口,猫娘可以主动邀请你一起玩,也能在游戏结束后继续自然聊天。
  • 插件系统大升级:插件管理器加入包管理、插件面板、说明页和更多操作入口,安装和管理插件更直观。
  • 角色卡管理重做:角色管理、模型设置、卡面制作和 Steam 创意工坊相关功能整合到新的角色卡管理页面。
  • 聊天窗口体验优化:新增Galgame模式,对话框中提供选项。

[次要更新]

  • 云存档与数据迁移:新增 Steam 云存档相关支持,并提供更完整的数据位置选择和迁移流程。
  • Live2D 表现增强:新增更稳定的眨眼、待机动作保存、动作恢复和画质切换体验。
  • MMD / VRM 动作优化:舞蹈、口型同步、动作切换和角色切换更加稳定,减少残留和跳变。
  • 字幕与点歌台改进:字幕支持逐句增量翻译,点歌台窗口的拖动、最小化、关闭和再次打开行为更清晰。
  • 性能与稳定性修复:优化后台任务、语音、日志、截图、模型预览、多窗口和大量边缘场景,整体体验更稳。
  • Galgame 陪玩插件登场:支持识别剧情、理解台词、提供选项建议,让猫娘陪你一起读故事、做选择。
  • 杀戮尖塔2 陪玩插件登场:支持自动打牌。
  • MC 陪玩插件登场:支持联机游戏。

[Major Updates]

  • YUI Debuts: The default character and Live2D assets have been switched to YUI / yui-origin, with new support for a Chinese voice.
  • New User Guide Upgraded: First-launch onboarding and feature guidance are now more complete, supporting cross-page guidance, voice prompts, and progress saving.
  • Long-Term Memory Fully Upgraded: N.E.K.O can now organize, retain, and correct memories more reliably, making companionship feel more continuous.
  • Smarter Proactive Chat: The catgirl now considers your current state before deciding whether to speak, reducing interruptions while appearing more naturally at the right moments.
  • Mini-Game Invitations Added: A new football mini-game interaction entry has been added. The catgirl can proactively invite you to play together and continue chatting naturally after the game ends.
  • Major Plugin System Upgrade: The plugin manager now includes package management, a plugin panel, description pages, and more action entries, making plugin installation and management more intuitive.
  • Character Card Management Reworked: Character management, model settings, card creation, and Steam Workshop-related features have been integrated into the new Character Card Management page.
  • Chat Window Experience Optimized: Added Galgame Mode, with choices now available in the dialogue box.

[Minor Updates]

  • Cloud Saves and Data Migration: Added support for Steam Cloud Saves, along with a more complete flow for selecting and migrating data locations.
  • Enhanced Live2D Performance: Added more stable blinking, idle motion saving, motion recovery, and graphics quality switching.
    MMD / VRM Motion Improvements: Dancing, lip sync, motion switching, and character switching are now more stable, reducing leftovers and sudden jumps.
  • Subtitle and Song Request Window Improvements: Subtitles now support incremental sentence-by-sentence translation. The song request window now has clearer behavior for dragging, minimizing, closing, and reopening.
  • Performance and Stability Fixes: Optimized background tasks, voice, logs, screenshots, model previews, multi-window behavior, and many edge cases for a more stable overall experience.
  • Galgame Companion Plugin Debuts: Supports story recognition, dialogue understanding, and choice suggestions, letting the catgirl read stories and make choices with you.
  • Slay the Spire 2 Companion Plugin Debuts: Supports automatic card play.
  • Minecraft Companion Plugin Debuts: Supports multiplayer gameplay.

What's Changed

  • 修复从 Live2D 角色切换再切回后,通过模型管理器切换到 VRM 模型时加载失败的问题 by @MingTianSang in #796
  • Refactor/minimax tts http sse by @wehos in #795
  • fix: jukebox 独立窗口按钮点击失灵 (Chromium drag region 缓存 bug) by @wehos in #798
  • feat: add OpenRouter as assist API provider by @wehos in #799
  • 修复头像刷新后无条件重载问题 by @KirisameYuumio in #800
  • 修复核心/辅助 API Key 保存后被管理簿覆盖的问题 by @MingTianSang in #802
  • Fix: Idle animation not applying immediately after character model ma… by @rophec in #804
  • fix: 修复头像比例变形 & 增加手动裁剪功能 by @KirisameYuumio in #801
  • Fix/prominent notice electron pointer events by @wehos in #803
  • fix: 修复多屏环境下聊天框和模型吸附逻辑,确保正确处理窗口尺寸变化 by @LyaQanYi in #805
  • fix: add missing i18n keys for avatar cropper by @KirisameYuumio in #806
  • fix: cancel manual crop now keeps the original avatar by @KirisameYuumio in #807
  • fix: isolate music cooldown/dedup from other proactive sources by @wehos in #808
  • fix: processRealisticQueue finally 块竞态 — 过期实例不再破坏新实例互斥锁 by @wehos in #809
  • fix(jukebox): 修复点歌台播放兼容性与交互体验问题 by @MomiJiSan in #810
  • fix: HTTP 503 错误显示为用户友好的"上游服务器繁忙"提示 by @wehos in #812
  • fix: 修复记忆服务超时后 turn_end 洪泛导致无限 analyze check by @wehos in #811
  • fix: prevent greeting from racing with voice session by @wehos in #813
  • fix: slider change resets timer & cooldown skips no longer inflate backoff by @wehos in #814
  • Claude/fix qwen tts stutter s egsg by @wehos in #815
  • 修复旧版本升级后声音克隆页面误报"没有可用API"的问题 by @MingTianSang in #816
  • fix: prevent duplicate message sends from rapid Enter key presses by @wehos in #817
  • feat: redesign proactive chat backoff with 3-tier adaptive curve by @wehos in #818
  • 依据真实对话数据对AI模型进行评分的代码框架 by @TL0SR2 in #791
  • 给 MMD 慢加载补了统一的 loading overlay。现在主页和角色外形页都会在 MMD 加载时显示阶段提示,覆盖 engine、… by @MomiJiSan in #782
  • 优化B站插件及其功能;添加连接详情面板 by @wangjunyu200708 in #701
  • Improve avatar reaction bubble reliability for Live2D models by @yiyiyiyiGKY in #820
  • fix(music): fix NetEase VIP detection and add Cookie expired toast notification by @Himifox in #819
  • 在辅助API设置旁添加"禁用TTS"开关,开启后跳过所有语音合成调用 by @MingTianSang in #821
  • fix(meme): SSL fallback for meme proxy + require gptsovitsEnabled for GSV routing by @wehos in #822
  • feat: 导出对话支持复制到剪贴板 & 默认导出图片 by @wehos in #823
  • restore stable standalone drag hit area by @yiyiyiyiGKY in #826
  • fix(voice): decouple prime_context from create_response to fix 1007 error by @wehos in #824
  • fix: hide React chat composer during voice chat + cross-window IPC by @wehos in #827
  • fix(ws): 猫娘切换时旧 WebSocket 泄漏 & onclose 重连风暴 by @wehos in #828
  • fix(jukebox): stabilize standalone interactions by @yiyiyiyiGKY in #829
  • fix: workshop MMD preview missing playAnimation after loadAnimation by @KirisameYuumio in #830
  • fix: restore standalone jukebox header button hit-testing by @yiyiyiyiGKY in #831
  • fix(session): 避免并发 start_session 产生孤儿 session by @wehos in #833
  • fix(tts): 引入独立 shutdown sentinel 修复切换角色/重连时 TTS worker 线程泄漏 by @wehos in #835
  • fix: MMD model not restored after closing character manager when original model missing by @KirisameYuumio in #832
  • fix(meme): 停用易主的 doutub.com,替换为 doutupk.com 并下调超时 by @wehos in #836
  • fix(session): 外层 try/finally 兜底 _starting_session_count 递减 by @wehos in #837
  • fix: 切换猫娘后 session 无法恢复(greeting 静默失败 + WebSocket 双重重连) by @wehos in #838
  • fix(proactive): guard 覆盖 turn-start 到首音频 chunk 的空窗 by @wehos in #839
  • fix(workshop): 消除 Steamworks 回调轮询里的同步 time.sleep by @wehos in #841
  • fix(main_server): 避免 initialize_character_data 里同步 Thread.join 阻塞 event loop by @wehos in #840
  • fix(session): 消除 end_session 路径上 ~1 秒的 event loop 阻塞 by @wehos in #843
  • chore: 引入 async def 同步阻塞静态检查 + 修复存量违规 by @wehos in #842
  • fix(main): 把 async def 里的 Thread.join / shutil.* offload 到 to_thread by @wehos in #845
  • 修复 Live2D 触摸交互时 touchSetFilter 未初始化导致的报错 by @MomiJiSan in #844
  • perf(async): 消除主进程事件循环阻塞(5 commits, T1-T5) by @wehos in #846
  • perf(async): 并行化启动期两处可独立的 await by @wehos in #848
  • fix(async): 消除 transitive 同步阻塞(compress_screenshot / load_cookies)+ 扩展 async-check 深度 1 by @wehos in #850
  • refactor(cookies): 把 CLI wizard 函数从 async def 改回 sync def by @wehos in #851
  • fix(async): _force_kill_browser 改 to_thread + 扩展 async-check 到 memory_server / agent_server 全链路 by @wehos in #853
  • fix(proactive): guard 的 turn-start 分支加 5s 时间窗兜底 by @wehos in #854
  • perf(switch): 切换猫娘走 fast path,避免 O(N) 全量刷新 by @wehos in #855
  • fix(proactive): Phase 2 abort 按 speech_id 守卫,避免误伤正常回复 TTS by @wehos in #862
  • refactor: consolidate per-catgirl runtime state into RoleState (#857) by @wehos in #861
  • test(proactive): sid guard 全链路硬化 + 15 个单测 by @wehos in #863
  • fix(proactive): voice fudge 三层用户说话守卫(A+B+C) by @wehos in #864
  • perf(async): 系统性消除审计发现的同步阻塞 + 串行 await by @wehos in #859
  • fix(proactive): voice fudge 加 AI 侧说话守卫(对称于 #864) by @wehos in #866
  • feat(diag): 增加切换猫娘相关的诊断日志,优化 websocket 连接和 memory server 请求 by @LyaQanYi in #865
  • 修复文本聊天连接开启时重命名当前猫娘导致"未找到角色配置"的竞态问题 by @MingTianSang in #869
  • fix: 修复 WebSocket 连接和状态管理,避免僵尸代理和 stale 连接问题 by @LyaQanYi in #871
  • 修复 PC 版头像裁剪遮罩错位问题 by @MingTianSang in #872
  • fix: restore jukebox manager standalone drag responsiveness by @yiyiyiyiGKY in #870
  • 修复 assistApiKey 回退逻辑 by @MingTianSang in #873
  • fix(jukebox): i18n 化 bindings 页已选提示 by @wehos in #875
  • fix(config): 补齐 qwen_intl/minimax/minimax_intl 的 gated fallback(对偶 #873) by @wehos in #876
  • fix/修复多窗口模式下返回球消失后拖拽定位异常 by @MomiJiSan in #877
  • fix(agent): ensure all agent_server task types respect cancellation by @wehos in #879
  • fix/修复切换猫娘后上一位的聊天记录仍残留 by @MomiJiSan in #878
  • fix(config): 消除 load_characters 并发重复触发迁移和校验警告 by @wehos in #881
  • fix(chat): 修复 React 聊天窗口用户消息双渐入和 You -> 实际名字闪动 by @MomiJiSan in #880
  • fix(gsv)/gptsovitsEnabled not mapped to GPTSOVITS_ENABLED by @Himifox in #884
  • 修复从模型管理页面保存 MMD 模型后返回主界面时的两个问题 by @MingTianSang in #883
  • 重构 QwenPaw(OpenClaw) 接入链路并更新多语言教程 by @Krabbypattyl in #882
  • fix: OpenFang provider 校验修复 — Ollama 免密放行 + Gemini 工具调用修正 by @wehos in #719
  • fix(async): 消除 send_event PIL 阻塞 + 堵住切猫娘孤儿 session 泄漏 by @wehos in #852
  • fix(hotswap): 修复热切换并发 recv() 导致语音会话崩溃 by @wehos in #885
  • QQ&STS2 Plugins Updata by @zhaijiunknow in #874
  • 新增 Grok(xAI)和豆包(Doubao)辅助 API 适配 by @qiguang113 in #860
  • 两大插件同步阻塞修复,前端重写,增加跳转服务器入口 by @wangjunyu200708 in #834
  • feat(proactive): 事件驱动 SessionStateMachine + phase1/phase2 中途 preempt by @wehos in #867
  • 修复手机端 React 聊天窗口无法拖动的问题,最小化改为 50px 圆形悬浮球(与桌面端一致),并新增顶部拖拽手柄支持手动调整聊天框高度 by @MingTianSang in #793
  • feat: 支持创意工坊参考语音预填,并修复 MiniMax 音色注册前缀校验 by @MomiJiSan in #768
  • feat: 截图按钮增加区域裁切功能 by @wehos in #721
  • feat(memory): 空闲时自动维护记忆 + 修复 resolve_corrections 竞态丢失 by @wehos in #725
  • fix(locale): 修复 Windows 无 Steam 时语言探测失效及首次人设语言不正确 by @wehos in #888
  • feat(proactive): SM 收口 agent_callback / greeting 投递入口 by @wehos in #887
  • perf(async): 泛化 internal_http_client + 新增 external_http_client,全局 httpx 审计 by @wehos in #868
  • Refine avatar interaction memory rules and tool reaction flow by @yiyiyiyiGKY in #769
  • 角色卡导出功能大换新添加自由编辑页面 by @MingTianSang in #886
  • 修复 RESPONSE_TOO_LONG 场景下输入内容丢失,并补齐异常兜底反馈链路 by @MomiJiSan in #825
  • 重构:移除 N.E.K.O 后端自启动壳层并保留桌面桥接提示流 by @MomiJiSan in #680
  • feat: 非窗口截图自动叠加 Avatar 文字注解(i18n,坐标自适应) by @wehos in #722
  • fix: tutorial highlight positioning and popover image loading issues by @KirisameYuumio in #889
  • 重构:移除合并主机消息和乐观待处理草稿的逻辑 by @LyaQanYi in #891
  • 恢复教程/自启动提示流并移除 Python 后端自启动实现 by @MomiJiSan in #684
  • refactor: 使用 CSS 原生拖动替代 JS 模拟拖动,修复窗口拖动异常 by @LyaQanYi in #895
  • feat: finalize cloud save manager and single-character sync workflow by @yiyiyiyiGKY in #681
  • fix: replace 3s setTimeout with LoadingManager.onLoad for MMD texture fallback by @KirisameYuumio in #896
  • feat(cloudsave): force-terminate active session on download & close child windows on exit by @yiyiyiyiGKY in #897
  • refactor(memory-server): 复用内部 HTTP 单例 + startup 兜底 cloudsave bootstrap by @wehos in #898
  • fix:/过滤emoji符号防止GPT-SoVITS触发"请输入有效文本"错误 by @Himifox in #890
  • feat(字幕): 逐句增量翻译 + 大小预设 + 设置面板下拉优化 by @MomiJiSan in #894
  • feat(plugin-cli): add pack and unpack functionality by @wislap in #858
  • fix(autostart-prompt): 同步 shell 端 autostart 状态事件到 prompt 缓存 by @wehos in #900
  • feat(agent): 增加记录用户希望 N.E.K.O 使用猫爪的机制 by @Krabbypattyl in #766
  • feat(jukebox): 改为使用 OS 原生拖动,优化拖动性能和用户体验 by @LyaQanYi in #902
  • feat(tts): 首 N 字日语假名检测扩展到 Qwen/Step/lanlan 免费 TTS by @wehos in #901
  • Fix/修复返回球点击/拖拽闪烁,并修正 VRM/MMD 返回后浮动按钮与锁图标左侧跳位 by @MomiJiSan in #903
  • feat(dragging): 优化拖拽机制,使用 body class 控制全局拖动屏蔽,增强 UI 组件交互体验 by @CN-Zephyr in #904
  • feat: add clear button for custom API configuration by @KirisameYuumio in #906
  • chore(frontend): 移除死代码 live2d-ui-drag.js by @wehos in #907
  • fix: Fix physics bone stretching during model rotation by @KirisameYuumio in #910
  • fix(docs): 修复 vitepress build 失败的 37 个 dead link by @wehos in #908
  • fix(async): MMD 删除接口的 rglob 统计合并进 to_thread (#847 item 1) by @wehos in #909
  • chore(react-chat): 清尾 #891 漏删的 pendingDrafts dead code by @wehos in #913
  • refactor(logging): 删 loguru,plugin/本体统一 RobustLoggerConfig + CI 守门 by @wehos in #912
  • memory: P0+P1+P2.a resilience refactor (cursor/outbox/event-log/locks) by @wehos in #905
  • Refactor Avatar Reaction Bubble Pipeline with Decoupled 2D/3D Head Detection and Stable Geometry by @yiyiyiyiGKY in #914
  • feat(plugin-cli): 解包默认落到我的文档插件目录 by @wehos in #916
  • feat: add Model Profiler for performance analysis and debug visualization by @KirisameYuumio in #911
  • refactor(logging): plugin 子进程日志收纳到 logs/plugin/ 子目录 by @wehos in #917
  • fix(tests): sync PluginMeta field-shape assertions with current datac… by @wehos in #918
  • fix(tests): monkeypatch _TARGET_ROOT alongside _RUNTIME_PLUGINS_ROOT … by @wehos in #919
  • perf(async): 减少 event loop 阻塞与 GIL 争用的多处优化 by @wehos in #922
  • feat(i18n): Add support for Spanish and Portuguese by @LyaQanYi in #924
  • feat(soccer-demo): 足球小游戏 demo + 心情/难度/气泡 API by @wehos in #927
  • [Memory] RFC: user-driven evidence mechanism (#849) by @wehos in #928
  • feat(live2d)/Add eye blink and idle motion subsystems by @Himifox in #925
  • fix:Improve Live2D bubble placement for large-background models by @yiyiyiyiGKY in #923
  • feat(Live2D)/implement persistence for selected Live2D motions by @Himifox in #926
  • docs(memory): 重做 #928 漏合的 vitepress dead-link 修复 (84a99b9) by @wehos in #931
  • [Memory] PR-1 evidence mechanism foundation (RFC #928) by @wehos in #929
  • [Memory] PR-2 time decay + archival (RFC §3.5) by @wehos in #934
  • Fix Live2D idle animation restoration logic in triggerRandomEmotion by @Himifox in #930
  • feat(i18n): 增加截图相关功能的国际化支持 by @LyaQanYi in #932
  • [Memory] PR-3 render budget + merge-on-promote (RFC §3.6 §3.9) by @wehos in #936
  • [Memory] PR-4 funnel analytics API (RFC §3.10) by @wehos in #937
  • feat: add API connectivity test with indicator lights by @KirisameYuumio in #915
  • perf(memory): cache entry token_count to skip re-tokenization on every render by @wehos in #939
  • Update README.MD by @wehos in #940
  • fix(launcher): Resolve issue where Ctrl+C fails to terminate processes when starting with uv run on Windows by @Himifox in #943
  • fix(model-profiler): correct VRM skeleton detection by @yiyiyiyiGKY in #944
  • feat: add legacy memory cleanup feature and improve unsubscribe flow by @LyaQanYi in #933
  • 【本PR仅涉及test文件夹】testbench测试生态框架构建 by @TL0SR2 in #946
  • test(testbench): smoke tests + docs (split from #946) by @wehos in #948
  • Refine Steam workshop character card layout by @wuyehan in #945
  • bilibili插件引入背景llm,负责处理弹幕消息 by @wangjunyu200708 in #947
  • fix: make all showStatus toast types auto-dismiss with clearTimeout guard by @KirisameYuumio in #942
  • fix(mmd): correct Grant accumulation and IK/Grant execution order for D-bone deformation by @KirisameYuumio in #953
  • Dark Mode Optimization by @LyaQanYi in #950
  • feat(memory): fact version chain + reflection ontology constraints by @wehos in #941
  • feat: 完成 Yui 新手教程接管流程、多语言语音接入与插件页联动 by @Krabbypattyl in #935
  • Sync avatar tool cursor state for desktop hosts by @yiyiyiyiGKY in #955
  • 完全重置角色管理和steam创意工坊页面,将他们融合为角色卡管理 by @MingTianSang in #938
  • fix(i18n): 统一 PR #938 遗留的 8 个 locale key 差异 by @wehos in #959
  • [Memory] P2 step 1 — vector embedding infrastructure by @wehos in #956
  • 修复 N.E.K.O-PC 桌面端聊天框无法加载的问题 by @MingTianSang in #963
  • fix(tests): 修掉全量 pytest 7 处失败/收集错误 by @wehos in #964
  • feat(chat): 支持 Electron Pet 模式下的聊天叙事与 overlay bubble 显示 by @LyaQanYi in #960
  • feat(mmd): MMD animation overhaul — dual MixerSlot crossfade system by @KirisameYuumio in #961
  • feat: 多屏立体声 + 距离衰减空间音频 by @wehos in #962
  • Package local embedding model assets by @wehos in #965
  • Implement storage location migration flow by @yiyiyiyiGKY in #954
  • fix(api): 修复 cacheId 冲突导致的核心/辅助/自定义 API 灯状态互相污染问题 by @rophec in #966
  • 修复多窗口模式下 Chat 窗口截图裁剪区域过小的问题,简化提示 by @MingTianSang in #969
  • fix(memory): keyword/BM25 层先剥离 master/lanlan 名字与昵称 by @wehos in #971
  • feat: 增强错误处理和语言切换支持,优化模态框重建逻辑 by @LyaQanYi in #968
  • refactor: 文本长度计量统一切到 tiktoken token + 修 proactive 原文日志泄漏 by @wehos in #967
  • refactor(memory): retire SETTING_*_MODEL hardcodes + ban temperature on memory/utils LLM calls by @wehos in #972
  • refactor(openclaw): magic intent prompt 主体英文化 + 改用 summary tier by @wehos in #974
  • ci(lint): prompt-hygiene + i18n-sync 静态检查 by @wehos in #975
  • Rebalance realistic chat backlog by @wehos in #973
  • refactor: LLM input prompt budget 系统化 + 临时审计日志 by @wehos in #976
  • refactor(memory): IdleMaint 调度清理 + LLM timeout 兜底 + review snapshot 重设计开 thinking by @wehos in #977
  • Improve avatar tool cursor recovery and clear by @yiyiyiyiGKY in #978
  • chore(log): 静音 stream_data DIAG 日志,避免音频高频刷屏 by @wehos in #983
  • feat(tts): 流式剥离括号与 markdown,朗读不读旁白/标记 by @wehos in #980
  • fix: restore character card manager preview behavior by @wuyehan in #981
  • 关闭自动启动 by @wangjunyu200708 in #984
  • 统一角色旁菜单各类开关的选中指示器颜色,并修复对话设置、主动搭话和动画设置子菜单中蓝色背景常驻的问题,使蓝色背景仅在鼠标悬停时显示 by @MingTianSang in #982
  • 修复从角色外形/模型管理页面返回后,错误显示“请她回来”按钮,以及悬浮菜单按钮恢复时短暂挤在一起的闪烁问题 by @MingTianSang in #985
  • feat(plugin): 持久化 Extension 启停开关到 user config by @wehos in #989
  • Fix Live2D preview playback and add workshop card face refresh tests by @wuyehan in #988
  • refactor(memory): 5 站点开 thinking + 锁外化 + rebuttal drain + 周期降至 180s by @wehos in #990
  • feat(memory): 摘要规则补强 — 事实纠正保留脉络、stage-2 缩略已切换的旧话题/任务 by @wehos in #994
  • fix:修复 Yui 教程插件面板接力与 /ui 高亮启动 by @Krabbypattyl in #979
  • feat(memory): 强力记忆开关——可关闭 evidence-RFC 引入的全部新 LLM 路径以省 ~40% token by @wehos in #997
  • 【此改动只涉及test文件夹】补充一个快速入门说明文件 by @TL0SR2 in #998
  • Storage Location Migration and Memory Browser Entry by @yiyiyiyiGKY in #992
  • 修复角色卡面板二次打开时 Live2D 预览卡死问题 by @wuyehan in #999
  • 在角色卡切换和删除操作中增加语音模式检查 by @MingTianSang in #996
  • 修复角色外形 Live2D 预览中未选择待机动作时会默认选中第一个动作的问题;将动作/表情下拉框默认项改为“无动作”“无表情”,并移除旧的… by @MingTianSang in #1001
  • 修复角色卡管理中 Steam 上传弹窗层级过低导致被展开角色卡面板遮挡的问题;上传前若角色卡已有卡面,则自动复制为 Workshop 预览… by @MingTianSang in #1000
  • 调整弱记忆自动确认和提升天数至7天,以提供用户更长的反驳窗口;更新API提供者配置,统一DeepSeek模型版本为V4-Flash,优化浮… by @wehos in #1002
  • 扩负面词覆盖 & 摘要/review prompt JSON key ASCII 化(含 ja 字符飘移 bug 修复) by @wehos in #1004
  • 修复角色卡展开页 Steam 标签中的 MMD / VRM 预览比例同步问题避免 MMD 模型在窗口展开或标签切换后被横向挤压 by @MingTianSang in #1006
  • fix: add missing character locale keys by @wuyehan in #1009
  • Improve storage location migration flow and UI by @yiyiyiyiGKY in #1010
  • Fix tool cursor behavior during voice mode by @Tonnodoubt in #1012
  • perf(async): 消除主 event loop 上的 TTS / cross_server 高频轮询 by @wehos in #1013
  • refactor(tts): 干掉 start_session 里 TTS 就绪信号的 20Hz 轮询 by @wehos in #1016
  • 修复角色卡切换角色后主页面持续低帧,以及角色卡面板收起时预览资源可能残留的问题 by @MingTianSang in #1019
  • feat(plugin-manager): add hosted TSX runtime and MCP adapter UI by @wislap in #1003
  • 新增用户活动追踪器(main_logic/activity/),重构主动搭话 Phase 2 决策 by @wehos in #1015
  • 截图功能重做 by @wuyehan in #1014
  • feat(proactive): 全局 source 衰减历史 + 持久化跨会话去重 by @wehos in #1021
  • 前端"自主视觉"开关重整为"隐私模式",开启时禁用 user activity tracker by @wehos in #1024
  • add plugin docs by @wislap in #1025
  • feat(activity): 信任 + 控制 + 风格 follow-up(隐私 + override + 配置外置 + tone + 游戏二维度) by @wehos in #1026
  • fix: lower composer compact threshold to prevent premature button col… by @Tonnodoubt in #1027
  • 补充角色卡管理页暗色模式覆盖 by @MingTianSang in #1029
  • feat: add initial personality onboarding by @wuyehan in #1030
  • refactor(plugin): reply bool → delivery 三态 + 拆分外层模板 by @wehos in #1032
  • refactor(agent): 把 agent/plugin/tracker 的字符截断字面量收口到命名常量 by @wehos in #1034
  • 添加面板与教程 by @wangjunyu200708 in #1031
  • fix(tests/proactive): 修 main 上 8 个 unit test 失败 by @wehos in #1036
  • fix(live2d): lipsync 在响时强制覆盖 motion mouth 参数 by @wehos in #1039
  • Feature/initial personality by @wuyehan in #1038
  • fix(i18n): 修正 PR #1024 interval 标签错位(chat=最低间隔, vision=感知间隔) by @wehos in #1040
  • feat(tools): 统一工具调用接口,offline + realtime 多 provider by @wehos in #1035
  • fix:Refine Storage Migration UX and Locale Consistency by @yiyiyiyiGKY in #1028
  • fix(character_card): VRM/MMD 子扫描失败时回退为 [] 而非沿用旧值 by @wehos in #1042
  • feat: yui-origin Live2D 默认模型 + 主动搭话历史元数据 + 反 AI 物化称呼修复 by @wehos in #1041
  • feat(proactive): 三块剩余 i18n 文案改 {master} 占位符 + 51 个 guard 测试 by @wehos in #1043
  • fix(memory): IdleMaint 压缩门槛对齐 compress_threshold 修复空转日志 by @wehos in #1044
  • refactor(plugin-sdk): push_message v2 — visibility/ai_behavior 双轴 + parts 列表 by @wehos in #1046
  • 隐藏强力记忆开关的原生复选框,避免在自定义开关外额外显示选择框,保持与自动记忆整理开关一致的视觉表现 by @MingTianSang in #1047
  • 修复“初次邂逅”成就触发逻辑,使其只在 AI 首次可见回复时解锁;同时补齐 React Chat Adapter、语音输入、纯图片/截图输… by @MingTianSang in #1045
  • 允许对话框表情/工具按钮在已选中工具时再次点击主按钮直接取消选择 by @MingTianSang in #1048
  • fix(proactive): Phase 2 debug print 去掉 buffer 拼接的复读 by @wehos in #1052
  • fix(proactive): 音乐完整播放后重置 music 通道权重衰减 by @wehos in #1050
  • fix(proactive): mute 时不刷 RMS + user_transcript 复位语音 nudge 计数 by @wehos in #1051
  • perf(proactive): BS4/regex/JSON 解析推到线程池,消除主动搭话 event loop 阻塞 by @wehos in #1049
  • fix: 完善 YUI 新手教程联动并清理语音资源 by @Krabbypattyl in #1022
  • fix(lip_sync): 确保语音口型同步期间其他口型表情不干扰 by @LyaQanYi in #1053
  • fix(lip_sync): MMD 语音口型同步期间清零其他元音残留 by @LyaQanYi in #1056
  • feat(plugin-sdk): @llm_tool 装饰器 — 插件一行注册 LLM 工具 by @wehos in #1055
  • 将导出对话预览从聊天框内弹窗改为独立无边框窗口 by @MingTianSang in #1058
  • fix(memory): /new_dialog 不再 cancel 在跑的 review + QPS 观测 by @wehos in #1059
  • feat(plugin): Minecraft 游戏代理 plugin(基于 #1035 + #1046 + #1055 重写) by @wehos in #1057
  • Replace yui_default with yui-origin and route guide motions by @wehos in #1060
  • [codex] fix Live2D motion cleanup residuals by @wehos in #1061
  • 入口合并,避免llm疑惑,增加正则匹配,全链路异步实现,增加区域+设备名匹配 by @wangjunyu200708 in #1062
  • fix(cross_server): ws reconnect 移出主 sync loop,monitor 不在时不阻塞 memory by @wehos in #1064
  • feat(tutorial): 添加模型选择步骤的描述和提示信息 by @LyaQanYi in #1065
  • [codex] split LLM prompts into system and user messages by @wehos in #1054
  • vision: 去重 avatar 注解 + 提示 LLM 忽略叠加在截图上的注解 by @wehos in #1067
  • fix(deps): 把 cachetools 提升为直接依赖 by @wehos in #1068
  • Fix storage-root log placement by @yiyiyiyiGKY in #1069
  • 新建猫娘未设置卡面时自动打开卡面制作页,保存后自动刷新列表 by @MingTianSang in #1070
  • fix(agent): 优化 LLM 连接性检查,避免在任务运行时错误报告不可达 by @LyaQanYi in #1071
  • log: DEBUG 单独落到源码 logs/,不污染用户统一日志 by @wehos in #1073
  • feat(embeddings): int8-first bundle, merged deps, explicit fp32 by @wehos in #1072
  • fix: 补齐 cardMakerPopupBlocked i18n 键 + 修 evidence promote 测试时间漂移 by @wehos in #1074
  • prompts: 统一 ====== 分隔符为 below/above 对偶形式 by @wehos in #1075
  • feat: LLM prompt placeholder leak 自动检测器 by @wehos in #1077
  • fix(plugin-bus): 用户原话写入 user-context bucket,激活 bus.memory.get 链路 by @wehos in #1076
  • prompts(open_threads): 默认空数组 + 正反示例,避免凑满 3 条 by @wehos in #1078
  • [Don't Merge]feat/为 STS2 自动游玩插件添加猫娘交互与全流程决策系统 by @Himifox in #1011
  • fix(emotion): 修 angry 误判,i18n 关键词跨语种迁入 prompts_emotion by @wehos in #1079
  • Fix Yui Guide Onboarding Flow Stability by @yiyiyiyiGKY in #1080
  • fix(llm_client): 防御性读取 choices[0].message,避免 free-agent-model 空 message 崩溃 by @wehos in #1081
  • fix: API URL 末尾不带斜杠,修反代下角色卡加载失败 + 前后端 lint 守门 by @wehos in #1082
  • fix(config): follow_core/follow_assist 不再被误判为 'local' 自定义 realtime(修 TTS 静音) by @wehos in #1084
  • prompts(reflection): ontology 字段前置 + 三步走 + 措辞硬化 by @wehos in #1085
  • 修复两处UI闪屏 by @MingTianSang in #1083
  • fix(react-chat): 30s 内严格 group 连续消息(隐藏重复 author/time) by @wehos in #1087
  • 修复i18n的小问题 by @MingTianSang in #1088
  • test: 修两处 mock 漏洞 + 测试日志改写到临时目录 by @wehos in #1089
  • style(react-chat): 最小化球去 hover 灰底 + 关闭叉缩小淡化 by @wehos in #1091
  • fix(memory): review 不吞 head memo + qwen3.5 切 semantic_vad by @wehos in #1090
  • fix: 找回 minimize hover + PNG 白晕真透明 + session 熔断真停 by @wehos in #1092
  • fix:Stabilize Yui Onboarding Guide Flow by @yiyiyiyiGKY in #1093
  • feat: 加 livestream 模式(free 子模式:URL 派生 + voice + 跳闭麦) by @wehos in #1096
  • feat(react-chat): GalGame 模式 — 每轮 LLM 生成 A/B/C 三风格回复选项 by @wehos in #1094
  • fix(persona): 更新 prompt_guidance 逻辑以支持运行时语言解析 by @LyaQanYi in #1086
  • feat(livestream): 主播 config 抽到独立文件 livestream_config.json by @wehos in #1097
  • i18n(profiler): 性能分析器全面 i18n + Live2D 友好提示 by @wehos in #1098
  • fix(react-chat): GalGame slot 从下往上展开动画 + 对话块补水印 by @wehos in #1099
  • 修复价值提示,礼物聚合聚合后推送 by @wangjunyu200708 in #1100
  • 修复手机版聊天框最小化后点击展开时的触摸穿透问题,避免同坐标误触发送图片按钮及其按压/悬停反馈;同时在手机端禁用新手教程,避免教程遮罩和移… by @MingTianSang in #1101
  • fix(utils): robust_json_loads 容忍结构 token 间的幻觉字符 by @wehos in #1102
  • fix(live2d): 更新眼睛眨动参数获取逻辑以支持 Cubism 4/5 by @LyaQanYi in #1104
  • fix(plugin-cli): pack/upload 产物落到用户可写目录 by @wehos in #1105
  • fix(realtime): bound audio stream backlog by @KirisameYuumio in #1106
  • 修复气泡表情加载期间点击“请她离开”后,加载气泡或异步完成的表情仍残留的问题 by @MingTianSang in #1107
  • 解决日志刷屏问题 by @MingTianSang in #1109
  • 修复 VRM 口型同步路由,避免残留 Live2D 引用抢占当前模型 by @MingTianSang in #1111
  • 区分点歌台最小化与关闭行为:最小化仅隐藏点歌台窗口,音乐和舞蹈继续播放;关闭则停止音乐和舞蹈并销毁点歌台窗口状态 by @MingTianSang in #1113
  • 优化模型管理保存提示 by @Krabbypattyl in #1112
  • fix(composer): 更新工具按钮折叠逻辑,支持动态宽度和动画效果 by @LyaQanYi in #1114
  • fix:GalGame option generation for free API mode by @yiyiyiyiGKY in #1108
  • refactor(plugin-cli): rename neko-plugin-cli, defenses against Nuitka silent-drop by @wehos in #1115
  • refactor(prompts-chara): tighten wording + handle in-place L10N drift by @wehos in #1116
  • fix(react-chat): 修复消息列表自动滚动到底部失效(绕开 Electron smooth scroll silent no-op) by @wehos in #1118
  • Integrate SoccerDemo with routed character interaction by @KirisameYuumio in #1110
  • Add retake button to avatar cropper by @KirisameYuumio in #1120
  • 修复移动端触发教程后全局交互守卫拦截页面点击的问题 by @MingTianSang in #1121
  • feat(model): 暴露 window.resetToDefaultModel 用于托盘菜单调用 by @LyaQanYi in #1122
  • Polish storage migration copy and guard GalGame mode during home tutorial by @yiyiyiyiGKY in #1123
  • 角色卡管理页标题栏关闭按钮左侧添加最大化/恢复按钮 by @MingTianSang in #1126
  • Add First Greeting Flow for New Characters by @yiyiyiyiGKY in #1119
  • test(hotfix): init _takeover_active in test_proactive_sm_integration factory by @wehos in #1129
  • fix(game-route): PR#1110 review-bug quick wins (A1+A2+A3+A4) by @wehos in #1125
  • 将角色卡管理中的切换按钮文案由“切换角色卡”简化为“切换该角色” by @MingTianSang in #1130
  • 恢复 i18n 行号对齐校验 by @wehos in #1132
  • feature: VAD MANUAL filling + chat+blind passthrough at main_server by @wehos in #1128
  • 修复 locale key 顺序漂移并恢复行号对齐 by @wehos in #1134
  • concurrency: address audit findings B1-B8 (route_start/cleanup race, organizer dup, finalize policy, session create lock, character switch) by @wehos in #1127
  • 在已注册音色列表中支持点击音色直接应用到当前角色 by @MingTianSang in #1131
  • refactor(prompts_game): drop output-language directives + parity polish by @wehos in #1135
  • [codex] fix i18n error placeholder params by @wehos in #1137
  • fix(icon): 悬浮球用回带白晕原图,header 最小化按钮保留透明版 by @wehos in #1139
  • i18n: migrate inline game-route prompts to 5-locale config and EN-ize signal schema by @wehos in #1136
  • [codex] Fix plugin phase1 empty candidate handling by @wehos in #1140
  • 展开角色卡中常驻显示“模型设置 / 编辑卡面”入口;模型保存后提示是否编辑卡面或自动生成默认卡面;修复卡面制作窗口生命周期与刷新通知;简化… by @MingTianSang in #1138
  • galgame_plugin: prompt 英文化 + install 路由解耦 + choice_advisor fast loop 修复 by @MomiJiSan in #1133
  • feat(proactive): mini-game 邀请短路通道(10% 触发 + 24h+10 chats 冷却) by @wehos in #1141
  • [codex] Refresh README feature copy by @wehos in #1142
  • feat(proactive): mini-game 邀请 follow-up #1(新用户固定邀请 + 1h 冷却 + 多游戏接口 + 退出 UX) by @wehos in #1143
  • feat(proactive): mini-game 邀请三选项按钮 + 关键词文本兜底(PR #1141 follow-up #2) by @wehos in #1145
  • chore(static): pack yui-origin Live2D into assets/yui-origin.tar.gz by @wehos in #1144
  • feat(proactive): mini-game 邀请用户级 toggle + 调试 force-game-type 旗标 by @wehos in #1148
  • perf(memory): 嵌入向量改成 base64+int8 量化 + recall 粗排批量化 by @wehos in #1147
  • feat(soccer): 去掉气泡 sourceLabel + 进入记忆 toggle i18n 化 by @wehos in #1149
  • Feat/galgame plugin i18n by @MomiJiSan in #1146
  • fix(proactive): 邀请文案/Phase 1-2 LLM 跟 session locale + soccer loading-text 居中 by @wehos in #1150
  • mmd-ui-button by @LyaQanYi in #1155
  • 禁止窗口标题栏和导航按钮中的装饰图标被拖拽,避免图片被拖到桌面或复制出应用 by @MingTianSang in #1154
  • Add sensei soccer player VRM by @KirisameYuumio in #1157
  • fix(proactive): 主动搭话失败 retry + 静默化,不再泄露上游 HTML 错误页 by @wehos in #1156
  • feat(proactive): mini-game UI 联动收尾(galgame 互斥 + 默认难度 + 游戏期 chat/pet 联动) by @wehos in #1153
  • 优化部分操作体验,修改默认角色卡面截图位置和修复部分问题 by @MingTianSang in #1152
  • fix(model-manager): 启用模型选择后的保存按钮以避免禁用状态 by @LyaQanYi in #1158
  • 为 Galgame 插件静态页面接入 UI 多语言 by @MomiJiSan in #1159
  • Fix home tutorial interaction isolation and recovery by @yiyiyiyiGKY in #1160
  • fix(voice-swap): 切音色相关三处 race(连接失败 / 角色离开 / trigger_greeting 崩溃) by @wehos in #1161
  • fix(chat-tools): stabilize avatar tool cursor cleanup by @yiyiyiyiGKY in #1162
  • fix(game-window): 游戏期间隐藏 pet 上其余可交互 UI 让窗口真正穿透 by @wehos in #1163
  • Update sensei VRM to 1.x by @KirisameYuumio in #1164
  • fix(i18n): 补齐 status code 缺失的 errors.* 翻译并静音 GAME_ROUTE_MEDIA_SKIPPED by @wehos in #1166
  • Galgame 依赖安装时自动定位安装面板 by @MomiJiSan in #1165
  • 调整卡面编辑页打开逻辑,已有编辑页时优先打开新窗口并关闭旧窗口;若新窗口打开失败,则回退刷新旧窗口,确保编辑页不多开且内容遵循最后一次打开 by @MingTianSang in #1168
  • fix(tutorial): 增强教程结束时的 UI 清理,修复按钮残留和锁死问题 by @LyaQanYi in #1171
  • fix(i18n): soccer / proactive 残余 Steam locale race —— 多路径 belt-and-su… by @wehos in #1170
  • fix(voice-swap): rebuild path 跨 end_session 窗口补 guard(堵 PR #1161 漏的 race) by @wehos in #1176
  • Fix/subtitle drag handle logic by @wuyehan in #1172
  • 统一禁用传统页面、React 聊天窗口和插件管理器中的装饰性图片拖拽 by @MingTianSang in #1178
  • fix(multi-window): session_started 直接 hide 文本框,覆盖 chat.html 子窗口 by @wehos in #1181
  • fix(catgirl-switch): 角色管理页切角色三处补丁 by @wehos in #1167
  • Fix Live2D eye blink parameter ownership by @Himifox in #1180
  • fix(catgirl-switch): MMD rollback 重建 + VRM reserved path 解析 by @wehos in #1182
  • fix(tutorial): keep persona onboarding after auto start by @wuyehan in #1183
  • fix(chat-export): 修复下载链接在预览窗口中的上下文问题,确保移动端浏览器正确处理图像下载 by @LyaQanYi in #1184
  • perf(galgame): cap RapidOCR onnxruntime threads, skip warmup in tests by @wehos in #1186
  • Fix OpenClaw enable readiness handling by @yiyiyiyiGKY in #1185
  • refactor(galgame): bundle rapidocr/dxcam/mss into main program (closes #1177) by @wehos in #1188
  • fix(galgame): split spec hard-fail set into group vs main deps by @wehos in #1190
  • 修复语音会话与音色切换之间的状态竞态:语音启动会等待音色切换完成,语音态下刷新或 PC 多窗口拆分后聊天输入栏不会误展开 by @MingTianSang in #1189
  • 修复新手教程期间功能状态接管 by @Krabbypattyl in #1187
  • refactor(galgame): UI cleanup + capture chain (dxcam→mss→pyautogui) + dead-code cleanup by @wehos in #1191
  • 美化 Galgame 模式切换并优化切换反馈 by @MomiJiSan in #1192
  • fix(tutorial): 真正的 auto 教程启动时正确隐藏人设选择 by @wehos in #1195
  • fix(galgame): 让 RapidOCR 模型配置实际生效 by @MomiJiSan in #1194
  • feat: 增加 Galgame 插件依赖检测与本地化诊断 by @MomiJiSan in #1174
  • feat(galgame): 新增首屏教程引导与进度持久化 by @MomiJiSan in #1179
  • fix(galgame): OCR 捕获线程卡死后替换新 worker,不再永久失败 by @MomiJiSan in #1193
  • 修复新手教程结束后重逢问好被重连保护吞掉 by @Krabbypattyl in #1196
  • fix(subtitle): prevent duplicate PC chat translation by @wuyehan in #1198
  • 修复点歌台独立窗口关闭后再次从聊天框无法打开的问题 by @MingTianSang in #1200
  • 为道具交互添加音效 by @Krabbypattyl in #1201
  • fix(galgame): 严格限制 OCR 捕获兜底列表上限并降低用例 flakiness by @wehos in #1199
  • fix(chat): remove avatar range hold timer by @yiyiyiyiGKY in #1203
  • fix(jukebox): restore drag from SAM panel footer area by @yiyiyiyiGKY in #1207
  • 为标题栏类窗口添加窗口控制按钮 by @MingTianSang in #1202
  • fix long reply guard without discard reroll by @wuyehan in #1206
  • 修复 Live2D 画质切换会重载模型、导致待机动作和运行时状态丢失的问题;改为仅调整 renderer 分辨率,并禁用会破坏图集贴图的运… by @MingTianSang in #1210
  • feat(voice): 新增 yui_cn 音色 + 新角色默认 free preset voice by @wehos in #1211
  • style(galgame): 统一 Neko 主题界面与首次配置引导 by @MomiJiSan in #1204
  • refactor(voice): 默认 voice 改读 free_voices['cuteGirl'] 避免配置漂移 by @wehos in #1212
  • refactor(galgame): 重构依赖安装卡片并修正 Textractor 安装超时 by @MomiJiSan in #1209
  • 修正 OpenClaw 子开关可用性判断 by @Krabbypattyl in #1213
  • feat(ui): 隐私模式开关增加 hover hint by @wehos in #1216
  • 阻止页面中的链接、图片等元素被拖到桌面生成复制项 by @MingTianSang in #1214
  • Adjust minimum widths for options components to handle text overflow by @LyaQanYi in #1217
  • Plugin:[STS2]尖塔插件引导 by @zhaijiunknow in #1219
  • refactor: 后端禁用 tkinter + lint 守门 GUI-on-frontend 架构 by @wehos in #1221
  • fix(galgame): 默认难度后端钉到 lv2 与前端对齐 by @wehos in #1220
  • refactor(galgameUI): 合并 Agent dashboard 面板 by @MomiJiSan in #1218
  • feat(galgame): 增加 OCR 诊断完善提示并移除屏幕模板 UI by @MomiJiSan in #1215
  • refactor(onboarding): 通知/提示时序串行 — 让位初始人设 overlay by @wehos in #1224
  • [codex] fix common dialogs unit harness by @wehos in #1223
  • fix(mic): 音量条改用时域 peak/RMS,过载红色告警,静默不再误判 by @wehos in #1222
  • feat(activity): 工作模式下加喝水/防摸鱼提醒 + idle tone 改 playful by @wehos in #1226
  • fix(galgame): 优化 OCR 截图噪声过滤与 RapidOCR 状态处理 by @MomiJiSan in #1227
  • Fix galgame plugin local storage path by @yiyiyiyiGKY in #1228
  • 修复React聊天框在gal模式下高度约束不一致的问题 by @MingTianSang in #1229
  • [codex] Add 0.8.0 changelog translations by @wehos in #1231
  • [codex] Soften initial catgirl character tone by @wehos in #1232
  • feat(galgame): 支持 RapidOCR 自动识别语言并切换模型 by @MomiJiSan in #1233
  • [codex] Ensure free TTS language code follows global language by @wehos in #1236
  • [codex] Limit prominent notice body height by @wehos in #1234
  • [codex] Use avatar model center for spatial audio by @wehos in #1237
  • [codex] Exempt book title marks from TTS bracket stripping by @wehos in #1235
  • [codex] Fix proactive Phase 1 pass handling by @wehos in #1238
  • [codex] Accept empty health check completions by @wehos in #1241
  • fix(workshop): detect non-standard card face previews by @wuyehan in #1242
  • (feat) 修复 Galgame Textractor 安装诊断与代理配置 by @MomiJiSan in #1240
  • 初始人设选择流程调用 /api/characters/persona-presets 和保存人设选择时,没有把前端当前界面语言传给后端 by @MingTianSang in #1243
  • 修复启动期工坊角色卡后台同步与初始人格选择的竞态,避免用户快速选择人格后,persona_override 被旧的 characters.… by @MingTianSang in #1244
  • 修正 #1244 工坊角色卡同步竞态回归测试中的 mock 参数签名,使测试与真实 find_preview_image_in_folde… by @MingTianSang in #1245

New Contributors

Full Changelog: v0.7.4...v0.8.0