Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
dfb78fa
feat: 新增「奇遇铸造机」独立模块 (card-forge)
LyaQanYi May 26, 2026
d392b05
fix(card-forge): codex P1/P2 — 别让无 name 的同步擦掉已存猫娘名
LyaQanYi May 26, 2026
0eeb45e
fix(card-forge): 处理 CodeRabbit 9 条 + 1 nitpick
LyaQanYi May 26, 2026
841ea48
fix(card-forge): codex P1/P2 — uvicorn reload app_dir + 非 Windows 守卫
LyaQanYi May 26, 2026
10fe836
fix(card-forge): CodeRabbit 第二轮 4 条
LyaQanYi May 26, 2026
fe7ec12
fix(card-forge): _ensure_windows 改抛 RuntimeError 避免绕过 entry except
LyaQanYi May 26, 2026
93d461f
fix(card-forge): codex P1/P2 — route log 脱敏 + GET 不返 avatar dataUrl
LyaQanYi May 26, 2026
0bb37f3
fix(card-forge): CodeRabbit/Codex 第四轮 5 条
LyaQanYi May 26, 2026
b30deff
fix(card-forge): stop-card-forge.ps1 加 UTF-8 BOM
LyaQanYi May 26, 2026
6a5419b
feat(system): 暴露 /api/system/client-id + /api/system/social/config
LyaQanYi May 27, 2026
f2a9dae
fix(system): CodeRabbit 两条 minor
LyaQanYi May 27, 2026
fddd4e6
feat(M2-h/i/j): 社交按钮入口 + facts_sync worker + 配额掉落引擎(NEKO 侧)
LyaQanYi May 27, 2026
3dadfda
feat(M5-g): 卡片本地缓存 puller(NEKO → N.E.K.O.Servers)
LyaQanYi May 27, 2026
35f78dc
fix(M2-i): facts_sync 自动 register client + importance 归一化
LyaQanYi May 28, 2026
07692c4
fix(M2-i): facts_sync 异步化磁盘 IO 解 async-blocking lint
LyaQanYi May 28, 2026
6f84f5f
feat(M6-h): frontend social UI 接入 — 红点 badge + DROP_ANIMATION
LyaQanYi May 28, 2026
2f57a50
fix(M6-h): social 红点用 MutationObserver 覆盖按钮重挂
LyaQanYi May 29, 2026
de97867
feat(card-drop): 本地 → 云端开卡代理路由 (P1a)
LyaQanYi Jun 5, 2026
d7dcbad
feat(card-drop): 对话掉落开卡演出(前端 + 触发)(P1)
LyaQanYi Jun 5, 2026
8cb4b14
feat(card-drop): 收集册(卡册)+ 卡片详情 (P2)
LyaQanYi Jun 5, 2026
3c6a59a
fix(card-drop): 模态/卡册可点击(宿主 body pointer-events:none 穿透)
LyaQanYi Jun 5, 2026
65a6b18
refactor(card-drop): 候选走本地记忆 + 移除 Electron 卡册(瘦客户端)
LyaQanYi Jun 6, 2026
68dca96
feat(card-drop): NEKO 邮箱密码登录社区 + JWT 接抽卡 + 登录提示(登录打通 chunk2)
LyaQanYi Jun 6, 2026
450a301
fix(social/screen): 修好猫娘社区按钮 + 恢复屏幕共享入口
LyaQanYi Jun 6, 2026
140a2aa
feat(card-drop): NEKO Steam 登录社区 — /steam-login + /steam-callback + 前…
LyaQanYi Jun 6, 2026
874821b
fix(card-drop): 登录如实反馈 bind-client 结果,不再谎报「已存入卡册」
LyaQanYi Jun 6, 2026
ba5db13
fix(social): 外链打开加协议校验 + 浏览器兜底保留用户手势(CodeRabbit #1542)
LyaQanYi Jun 6, 2026
2afe83f
Merge remote-tracking branch 'upstream/main' into claude/card-forge-e…
LyaQanYi Jun 6, 2026
e1ba64e
fix(layering): WS 广播经事件总线 seam,消除 main_logic/main_routers → app 倒挂
LyaQanYi Jun 6, 2026
78bc967
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jun 6, 2026
a888a53
feat(card-forge): add GET /arena/active-character for community Beta …
LyaQanYi Jun 6, 2026
7312ebd
feat(card-forge): /arena/active-character 同时返回 master_name
LyaQanYi Jun 6, 2026
241a804
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jun 7, 2026
4d4cff3
Unify screen sharing with voice controls
breakkh811-star Jun 7, 2026
19a1519
feat(card-drop): 券经济 NEKO 侧 —— dropper 退役判定 + /credits 代理 + 稀有度音效
LyaQanYi Jun 7, 2026
2a2ce44
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jun 7, 2026
da48fb0
docs(card-drop): 同步 dropper.py 模块 docstring —— 已退役为 no-op(CodeRabbit …
LyaQanYi Jun 7, 2026
0e9c41d
feat(audio-capture): 优化麦克风设备选择弹窗样式和功能,增加设备选项动态加载
breakkh811-star Jun 7, 2026
3e2acaf
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jun 7, 2026
fc592d9
feat(social): 打开社区改为应用内嵌「拟态窗」(iframe 模态),不调系统浏览器
LyaQanYi Jun 7, 2026
fd14db3
fix(social): 嵌入社区 iframe 加 http(s) 协议白名单 + sandbox + referrerpolicy —…
LyaQanYi Jun 8, 2026
1829bb4
fix(social): openSocialEmbed 返回成功/失败,调用方据此提示 — CodeRabbit #1542
LyaQanYi Jun 8, 2026
5655e7d
refactor(card-forge): 本地 :3001 路由 /arena/* 改名 /forge/*(arena 玩法未实装,名不副实)
LyaQanYi Jun 8, 2026
3b837e3
feat(ui): 添加猫娘社区按钮及其图标,更新多语言支持
breakkh811-star Jun 9, 2026
e758b0a
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jun 9, 2026
84b27e8
fix(icons): 更新猫娘社区图标
breakkh811-star Jun 9, 2026
bc8edaf
feat(card-drop): 添加卡片等级显示,更新样式以增强可读性
breakkh811-star Jun 10, 2026
e0e4d6e
fix: make social embed window draggable
breakkh811-star Jun 11, 2026
3494175
fix(cors): 移除不必要的 CORS 允许源
breakkh811-star Jun 15, 2026
7495fe2
feat(social-embed): 增强拖动功能,添加指针事件处理和缓存破坏机制
breakkh811-star Jun 16, 2026
e3e3928
feat(resize): 添加窗口调整功能,增加边缘调整手柄和样式支持
breakkh811-star Jun 17, 2026
cce4480
fix: address card forge review nits
breakkh811-star Jun 17, 2026
a1ff7f8
merge upstream main into card forge branch
breakkh811-star Jun 17, 2026
be2f657
fix: satisfy docstring language gate
breakkh811-star Jun 17, 2026
f3f4ab0
fix: 修改社交按钮行为,使用 Electron 打开链接以避免被拦截
breakkh811-star Jun 18, 2026
46fb5d2
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jun 21, 2026
ce6b053
fix(review): 处置 #1542 自动评审(路径穿越/状态码/隐私/CORS/重复导入)
LyaQanYi Jun 21, 2026
7b62315
refactor(card-drop): 退役旧对话掉落直抽路径(券经济取代)
LyaQanYi Jun 21, 2026
5dc4a5a
fix(steam): 登录改 code 换 token + state 防 login-CSRF(配 Servers #17)
LyaQanYi Jun 21, 2026
f4a9a82
fix(review): 处置 #1542 二轮评审(状态码一致性/盘符穿越/Steam 标记健壮性)
LyaQanYi Jun 21, 2026
f3871a0
feat(voice): 「语音时自动共享屏幕」改可选,默认关(隐私门,处置 #1542 Codex P1)
LyaQanYi Jun 21, 2026
a946eaa
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jun 22, 2026
854bc08
feat(card-drop): PKCE for Steam community login native code exchange
LyaQanYi Jun 27, 2026
930fc9d
feat(card-forge): 增加角色参考图支持,优化头像捕获逻辑
breakkh811-star Jul 7, 2026
4274369
feat(forge-drop): 迷你券卡掉落 UX + 退役 DROP_ANIMATION
LyaQanYi Jul 9, 2026
64e90e9
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jul 9, 2026
c89cb45
fix(card-drop): satisfy docstring-cjk gate for Steam PKCE helpers
LyaQanYi Jul 9, 2026
e3f25ba
feat(server): 添加从主服务器获取角色参考数据的功能
breakkh811-star Jul 9, 2026
b0c6774
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jul 9, 2026
94da56a
feat(card-drop): 添加社区网页登录态同步功能及相关重试机制
breakkh811-star Jul 10, 2026
3947da2
Merge remote-tracking branch 'upstream/main' into claude/card-forge-e…
LyaQanYi Jul 10, 2026
2bc6555
fix(card-forge): secure session sync and share facts
LyaQanYi Jul 10, 2026
3e933bb
fix(card-forge): address security review findings
LyaQanYi Jul 10, 2026
886290a
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 10, 2026
40da389
fix(card-forge): close remaining review gaps
LyaQanYi Jul 10, 2026
743b01b
fix(card-forge): address remaining P2 review comments
LyaQanYi Jul 10, 2026
6e3b574
fix(card-forge): resolve platform app-data paths
LyaQanYi Jul 10, 2026
39d3b71
fix: preserve social popup handle before navigation
LyaQanYi Jul 11, 2026
581e7f7
fix: resync cached avatar after character switch
LyaQanYi Jul 11, 2026
3ce10c1
fix: persist client id before facts sync
LyaQanYi Jul 11, 2026
98a9cfc
fix: complete credit drop and client binding flows
LyaQanYi Jul 11, 2026
c1d2109
fix: secure local identity state
LyaQanYi Jul 11, 2026
0d06b50
fix: expose screen share toggle in mic popup
LyaQanYi Jul 11, 2026
9ada9b8
fix card cache identity and mic permission retry
LyaQanYi Jul 11, 2026
e8f7816
fix: reconcile forge credit drop UI
LyaQanYi Jul 12, 2026
e77fd0b
merge: reconcile card forge with latest main
LyaQanYi Jul 12, 2026
5112075
merge: reconcile card forge with upstream main
LyaQanYi Jul 13, 2026
695e59b
fix(warthunder): address review regressions
LyaQanYi Jul 13, 2026
b13c569
fix: harden local integrations and runtime fallbacks
LyaQanYi Jul 13, 2026
57b1060
feat: reorder onboarding tutorial days
LyaQanYi Jul 13, 2026
ed13815
test: align onboarding regression contracts
LyaQanYi Jul 13, 2026
c4a017d
merge: sync upstream main
LyaQanYi Jul 13, 2026
ce19b05
fix: add missing chat aria labels and locale copy
LyaQanYi Jul 13, 2026
d716ecb
fix: align locale diff ranges
LyaQanYi Jul 13, 2026
046eca9
fix: sanitize client id endpoint errors
LyaQanYi Jul 13, 2026
f7a89a2
fix: preserve card forge provider type
LyaQanYi Jul 13, 2026
217c45d
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jul 13, 2026
7e86c73
fix: guard community logout and refresh locales
LyaQanYi Jul 13, 2026
1056b20
fix: derive War Thunder CORS origins from runtime port
LyaQanYi Jul 13, 2026
9bfdcd9
test: fix Card Forge avatar script path
LyaQanYi Jul 13, 2026
6628aed
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jul 13, 2026
3e72bcd
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 13, 2026
b127843
fix(auth): harden native social session bridge
LyaQanYi Jul 14, 2026
ad2b60d
Merge remote-tracking branch 'upstream/main' into claude/card-forge-e…
LyaQanYi Jul 14, 2026
efec6f8
fix(security): harden main server event boundaries
LyaQanYi Jul 14, 2026
814b261
test(privacy): cover stderr event leaks
LyaQanYi Jul 14, 2026
5a86ec6
fix(card-drop): validate local request context
LyaQanYi Jul 14, 2026
824cd97
fix(startup): defer sync workers until storage is ready
LyaQanYi Jul 14, 2026
36bad70
fix(card-drop): authorize local password mutations
LyaQanYi Jul 14, 2026
e741acb
fix(auth): prove local client ownership before bind
LyaQanYi Jul 14, 2026
89432ac
fix: address forge and sync review feedback
LyaQanYi Jul 14, 2026
c2ba64d
fix: honor main server port in card forge
LyaQanYi Jul 14, 2026
73a2f58
fix: persist client binding device proof
LyaQanYi Jul 14, 2026
be06de5
fix: honor forge runtime configuration
LyaQanYi Jul 14, 2026
c1c1e0e
test: address card forge review feedback
LyaQanYi Jul 14, 2026
2d61f81
fix: reject stale forge story hints
LyaQanYi Jul 14, 2026
567dfd7
fix: align tutorial targets and runtime ports
LyaQanYi Jul 14, 2026
d381c2d
fix: sync forge character before avatar capture
LyaQanYi Jul 14, 2026
a1bf8c1
fix: retry forge reference sync failures
LyaQanYi Jul 14, 2026
a5d7144
Merge upstream/main and fix Windows plugin CI
LyaQanYi Jul 15, 2026
3ce97bf
test: isolate Windows port config in CORS regression
LyaQanYi Jul 15, 2026
041ca78
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 16, 2026
7ff4cf5
feat: 添加本地锻造券管理逻辑及相关路由
breakkh811-star Jul 18, 2026
3d17226
Add unit test for card maker in embed mode
breakkh811-star Jul 18, 2026
8b70acb
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jul 18, 2026
b08d913
feat: integrate community OAuth for desktop with PKCE support
LyaQanYi Jul 19, 2026
7d3e382
Merge branch 'upstream/main' into claude/card-forge-extract
LyaQanYi Jul 20, 2026
a7afa61
fix(merge): resolve CI failures after upstream merge
LyaQanYi Jul 20, 2026
b87f909
test: normalize CRLF before stripping closure I. prefix
LyaQanYi Jul 20, 2026
7a6f981
merge: integrate latest upstream/main
LyaQanYi Jul 20, 2026
79e6fc1
fix(card-forge): address review edge cases
LyaQanYi Jul 20, 2026
6395969
chore: update code structure and remove redundant changes
breakkh811-star Jul 21, 2026
92a816f
Merge branch 'claude/card-forge-extract' of https://github.com/LyaQan…
breakkh811-star Jul 21, 2026
99d4070
fix(memory): address review feedback
LyaQanYi Jul 21, 2026
e8c5055
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 22, 2026
d0e22d7
fix: honor desktop port config in card forge
LyaQanYi Jul 22, 2026
91b2de5
fix: address OAuth and mic review feedback
LyaQanYi Jul 22, 2026
a3dae9c
fix: address async OAuth review feedback
LyaQanYi Jul 22, 2026
405f538
fix: fail closed on stale forge character state
LyaQanYi Jul 22, 2026
29a5259
Merge remote-tracking branch 'upstream/main' into claude/card-forge-e…
LyaQanYi Jul 22, 2026
6ab850a
fix: point desktop community defaults at production hosts
LyaQanYi Jul 24, 2026
fff7b4f
fix: open community feed in Electron framed window
LyaQanYi Jul 24, 2026
b7132d8
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 24, 2026
f73afdc
fix: guard popup screen sharing behind voice
LyaQanYi Jul 24, 2026
58cdd31
fix: offload card-drop credential I/O
LyaQanYi Jul 24, 2026
e11b80f
fix: handle embed and locale review feedback
LyaQanYi Jul 24, 2026
d4f62d7
fix: offload OAuth credential persistence
LyaQanYi Jul 24, 2026
830fb7b
fix: make OAuth credential persistence transactional
LyaQanYi Jul 24, 2026
1c968d8
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jul 26, 2026
2bfe377
feat(audio-capture): enhance microphone action panel with hover funct…
LyaQanYi Jul 26, 2026
7320a8e
feat(audio-capture): implement screen share toggle button with pixel …
LyaQanYi Jul 26, 2026
c25965c
fix: prune detached screen share toggles
LyaQanYi Jul 26, 2026
b580cd5
fix: serialize desktop social session writes
LyaQanYi Jul 26, 2026
424a0ff
Merge remote-tracking branch 'upstream/main' into claude/card-forge-e…
LyaQanYi Jul 26, 2026
164a06c
fix: address post-merge review findings
LyaQanYi Jul 26, 2026
59dab8a
fix: align forge story request timeout
LyaQanYi Jul 26, 2026
3371821
fix: surface integration worker startup failures
LyaQanYi Jul 26, 2026
66d2bd2
fix: preserve traditional Chinese region routing
LyaQanYi Jul 26, 2026
e44ea2c
fix: address card forge review feedback
LyaQanYi Jul 26, 2026
6e563d1
fix: address follow-up card forge reviews
LyaQanYi Jul 26, 2026
6ccb0d8
fix: address final card forge review
LyaQanYi Jul 26, 2026
9ae2b04
fix: revoke OAuth tokens at saved issuer
LyaQanYi Jul 26, 2026
17ad731
fix: address latest card forge reviews
LyaQanYi Jul 26, 2026
454b0f5
test: harden memory language regressions
LyaQanYi Jul 26, 2026
0d0ae7d
Merge branch 'main' into claude/card-forge-extract
LyaQanYi Jul 27, 2026
8ed020f
fix: recover stale facts sync registration
LyaQanYi Jul 27, 2026
5a871dc
fix: fence system client credentials
LyaQanYi Jul 27, 2026
311d673
fix: isolate pending character sessions
LyaQanYi Jul 27, 2026
65d8ee6
test: strengthen character capture contract
LyaQanYi Jul 27, 2026
5c5fc63
fix: harden oauth status handling
LyaQanYi Jul 27, 2026
07f3e39
refactor: relocate card-forge into the frontend build tree
LyaQanYi Jul 27, 2026
68d3cc1
fix(card-forge): address review feedback
LyaQanYi Jul 27, 2026
b9eeafb
fix(card-forge): match URLSearchParams length
LyaQanYi Jul 27, 2026
d6886cf
fix: isolate memory locale and launcher ports
LyaQanYi Jul 27, 2026
2ed5e0a
fix: tolerate non-UTF-8 port config
LyaQanYi Jul 27, 2026
9f2f19f
fix(build): clarify frontend production boundaries
LyaQanYi Jul 27, 2026
3649570
test(build): enforce card-forge exclusion
LyaQanYi Jul 27, 2026
726bbff
fix(card-forge): address responsive and credit review
LyaQanYi Jul 27, 2026
21c93f1
fix(card-forge): align stop ports and mobile scaling
LyaQanYi Jul 27, 2026
0e7d00a
fix(card-forge): stop only owned process trees
LyaQanYi Jul 27, 2026
9e8fbe3
fix(avatar): reconcile mobile screen share state
LyaQanYi Jul 27, 2026
42db96e
test(card-forge): bind screen sync assertion to finally
LyaQanYi Jul 27, 2026
1be1954
refactor(prompts): simplify fact extraction prompt language handling …
LyaQanYi Jul 27, 2026
2ee3ba7
Merge upstream/main into claude/card-forge-extract
LyaQanYi Jul 27, 2026
31fd301
fix(review): complete browser OAuth handoff
LyaQanYi Jul 27, 2026
a026a97
fix(review): harden OAuth and card cache
LyaQanYi Jul 27, 2026
237066e
fix(review): bootstrap card forge frontend
LyaQanYi Jul 27, 2026
3b319fa
fix(ci): unblock unit pytest — rename card_forge scripts + Windows en…
LyaQanYi Jul 27, 2026
529c825
Merge origin/main into claude/card-forge-extract
wehos Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions app/main_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -1578,6 +1578,33 @@ async def health():
return build_health_response("main", instance_id=INSTANCE_ID)


# ── Card-Forge 跨进程当前猫娘同步端点 ────────────────────────────
# 奇遇铸造机 (card-forge) 前端会轮询本端点,拿到当前猫娘名作为
# /arena/forge-facts 的 runtime_character_hint;不要求 card-forge 后端
# 知道 NEKO 内部状态,只通过此端点把"当前 NEKO 在前台展示的猫娘"广播给它。
_card_forge_active_character: dict = {} # {dataUrl, name}


@app.post('/card-forge/active-character')
async def set_card_forge_active_character(payload: dict):
"""由 app-chat-avatar.js 在捕获头像后调用,存储当前猫娘名(与头像 dataUrl)供 card-forge 获取。"""
data_url = str(payload.get('dataUrl', ''))
name = str(payload.get('name', ''))
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
if name or data_url:
_card_forge_active_character.update({'dataUrl': data_url, 'name': name})
Comment thread
LyaQanYi marked this conversation as resolved.
Outdated
return {"ok": True}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated


@app.get('/card-forge/active-character')
async def get_card_forge_active_character():
"""card-forge 前端轮询此端点获取最新猫娘名(与头像 dataUrl)。"""
from fastapi.responses import JSONResponse
return JSONResponse({
'dataUrl': _card_forge_active_character.get('dataUrl', ''),
Comment thread
LyaQanYi marked this conversation as resolved.
Outdated
'name': _card_forge_active_character.get('name', ''),
})


@app.post('/api/beacon/shutdown')
async def beacon_shutdown():
"""Beacon 接口:用于优雅关闭服务器"""
Expand Down
12 changes: 12 additions & 0 deletions card-forge/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>奇遇铸造机 · NEKO</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Loading
Loading