Skip to content

支持桌宠客户端 - #1

Open
xiaoshihou514 wants to merge 3 commits into
vlln:mainfrom
xiaoshihou514:codex/external-state-api
Open

支持桌宠客户端#1
xiaoshihou514 wants to merge 3 commits into
vlln:mainfrom
xiaoshihou514:codex/external-state-api

Conversation

@xiaoshihou514

@xiaoshihou514 xiaoshihou514 commented Aug 14, 2026

Copy link
Copy Markdown

支持桌宠客户端

背景

  • /whale-girl/state 原本按单个客户端设计:读取时消费 turnCompleted 标记,多客户端并发会互相抢占状态。
  • 桌面伴侣运行时与网页端宠物同时渲染,需要一个关闭网页端宠物的入口。

改动

1. 非消费式多客户端快照

  • /state 增加 apiVersion: 1
  • turnCompleted 改为基于绝对截止时间(turnCompletedUntil),任意数量消费者共享同一完成窗口,读取不再互相抢占
  • Web 客户端改用服务端截止时间,不因重复轮询延长庆祝动画
  • 补充 docs/external-consumers.md 与 snapshot 单测

2. 网页端渲染开关(enabled

  • 配置项 enabled(默认 true,settings 可配、热生效)控制网页端 client 是否渲染
  • 桌面伴侣并存时可在设置里关掉网页端宠物;重新启用需刷新页面

3. 桌面伴侣在场心跳(presence)

  • POST /whale-girl/presence(跨源校验 + body 上限,显示层写面):桌面端每 15s 续命(TTL 45s),退出时发 {online:false}
  • /state 下发 companionOnline;在场期间网页端宠物自动隐藏,心跳过期(≤45s)自动恢复——桌面端崩溃也不会让网页端永久隐藏

不变

现有网页端宠物的安装方式与交互不变;外部消费者自行负责断线重连与轮询兜底。

@xiaoshihou514

Copy link
Copy Markdown
Author

@vlln

体验层配置项 enabled(默认 true,settings 可配,热生效)控制网页端 client
是否渲染宠物:false 时挂载后立即卸载(host 引导期隐藏,不闪一下),运行中
热切换同样卸载;Node half 端点不受影响,外部消费者照常读取。
决策:decisions/implemented/feature/2026-08-14-web-pet-disable-switch.md
- POST /whale-girl/presence(显示层写面,跨源校验 + body 上限,与 /interact
  同级安全面):{online:true} 续命 45s / {online:false} 即时下线
- /state 下发 companionOnline;网页端 client 在场期间隐藏(syncInert companion
  分支),心跳过期自动恢复——桌面端被杀/崩溃不会让网页端永久隐藏
- src/presence.mjs 纯逻辑 + 单测;路由经 routes.mjs 单一来源
- 契约文档 external-consumers.md 更新;决策记录并入 2026-08-14-web-pet-disable-switch
@xiaoshihou514 xiaoshihou514 changed the title 支持多客户端读取宠物状态 支持桌面伴侣:多客户端快照 + 网页端渲染开关 + 在场心跳 Aug 14, 2026
@xiaoshihou514 xiaoshihou514 changed the title 支持桌面伴侣:多客户端快照 + 网页端渲染开关 + 在场心跳 支持桌宠客户端 Aug 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant