lili
3bff0eefc3
feat(release): wire dogfood staging product flow
2026-07-22 22:23:19 -07:00
lili
da05ecc0b1
feat(studio): WU1 前端——登录页新增用户名密码 Tab(注册/登录)
...
WU1 §3.5 步骤④前端落地:Login.vue 在 sms/invite 之外加第三个「用户名密码」
Tab,内含登录/注册子模式段控——用户名、密码两输入框,前端做与后端一致的
用户名正则 ^[a-zA-Z0-9]{4,30}$ + 密码 6-32 位预校验(仅提示,信任边界在后端);
复用既有隐私政策勾选、?redirect= 回跳、setLogin 落持久化、user_login 遥测
双带四段,登录成功路径与短信路一致(同拿 LoginResp)。
passport.ts 加 PasswordRegisterReq/PasswordLoginReq 入参接口与 passwordRegister/
passwordLogin 两函数(贴 VO 契约、走同一 request 信封解包),PlayerMeResp 补
username;Profile.vue fallbackMe 同步补 username 空串兜底。entry.zh/en 补 Tab
标题、用户名/密码占位、子模式与提交按钮多态文案、两条本地预校验提示。
自证:npm run build(vue-tsc -b && vite build)退出 0。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 12:04:02 -07:00
lili
2ce0ed3a9d
feat(save-cap): W-SAVE-CAP 存档面定容+schemaVersion——单槽版本信封,北极星三款共享基建
...
契约先行(sdk-interface.d.ts+镜像 additive):白名单新增恰等键族 save:{gameId}:{versionId}(≤65536 码元,
写入必须 {schemaVersion≥1, data} 信封,宿主闸 fail-closed);idle: 族 4096 逐字不动;弃多 key 分片。
宿主闸抽纯函数模块 storageGate.ts(四闸合一可 node 直测);save-progress 插件 v1.0.0→v1.1.0 additive:
setVersioned/getVersioned 逐级迁移/缺级兜底/降档读新档不毁档/无版本旧档按 0 版进链+探针两计数。
证据:插件单测 18/18、game-runtime 31/31、宿主闸负向演示脚本入仓真跑全断言过、vue-tsc+vite build 绿。
三书 M 门影子存档降级口径解除条件就位(卡牌 M2/割草 M4/夜市 M5 切换)。设计页 docs/plans/2026-07-06-002。
2026-07-06 09:24:44 -07:00
lili
8ea972340e
chore: 工作树散落活账整理提交(多工作线)
...
- .gitignore:忽略 AgentScope 2.0.2 源码克隆(.claude/skills/agentscope-skill/agentscope/,本机开发直读参考、~17MB、含自带 .git、非本仓产物、可重克隆)
- .claude/skills/agentscope-skill/SKILL.md:agentscope skill 更新
- contracts/prompts/04-config/cheap-system.md:便宜档 system prompt 加「核心操作非无脑」第9条好玩自检(否决项:⑨不命中则①-⑧全中也只是有元素的无趣游戏)+ 决策层与九门自动验收解耦(基础分保盲驱动器过门 / 技巧分给真人爽感)
- game-runtime/evidence/integration/evidence.json:集成 evidence 更新
- game-studio/public/mock-manifests/:U5+U2 真 UI 走查 runbook + walk 脚本 + mock manifest
- wg1/gen-worker/results/gamedef-quickcheck.json:bake-off 结果(同既有 27 tracked 同类)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 19:00:42 -07:00
lili
b31cc37a4f
chore(brand): 造梦AI→绘境AI 全活层品牌不变量收口(441 文件)
...
把活层退役旧品牌「造梦AI」统一改为现行「绘境AI」,brand-invariant 门红线归零。构成:
~412 Java @author 署名 + game-studio/index.html 浏览器标题 + game-runtime/package.json 描述
+ game-admin/.env VITE_APP_TITLE 运营后台标题 + contracts API title/@Schema 用户协议示例/events 描述
+ docs-design mockup 品牌位 + 各模块注释。全是注释/显示/元数据,零逻辑改动。
zaomeng 拼音持久化标识符按 2026-06-24 评审 GR-05 不动(347 处保留)。
白名单(docs/ip 法律备案 / _archive / 带日期留痕)与 AGENTS.md 门定义自身不动。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:29:11 -07:00
lili
0fa1cda1b7
feat(studio): inject.ts 去 gamedef 化石注释 + CSP 收紧(撤 unsafe-eval)
...
产物沙箱 inject.ts 外科改(两条加载路径主体不碰):
- 删 L69-71 三行 gamedef 专属注释化石(声明式 gameDefinition behaviors/rules
+ gd-runtime new Function 编译执行的理由)
- CSP script-src 由 'unsafe-inline' 'unsafe-eval' 收紧为 'unsafe-inline':
两条活路径(A-model esbuild iife bundle / SDK Runtime 内联)皆静态打包、
不含 eval/new Function,'unsafe-eval' 纯属已删 gamedef gd-runtime 遗留需求,
撤之缩小 XSS 攻击面、不影响活路径
验证:cd game-studio && npm run build = 绿(vue-tsc 类型检查 + vite build
全过,✓ built;CSP/注释改动不引入类型错,无 spec 预警的 vue-i18n 红)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 02:28:56 -07:00
lili
347dd023a1
fix(studio): iframe CSP script-src 加 'unsafe-eval'——解 gamedef 游戏静止(bug#2,补回丢失推送)
...
studio iframe srcdoc CSP 缺 'unsafe-eval' → gd-runtime new Function 编 behaviors/rules 全抛 EvalError
被静默吞进 errors[] → tickBehaviors 空 → 游戏只渲首帧静态、世界永不演进。系统性(非 breakout 特定),修一处全解。
A/B 实证(bug#2):加 'unsafe-eval' 后 errCnt 7→0、score 0→演进;Node gd-runtime 三款本就演进=运行时逻辑对、纯 iframe-CSP wiring 坑。
安全承接:逻辑串经 scanLogic 静态拦 + connect-src 'none' 无出站 + iframe sandbox,三重边界不扩大攻击面。
注:此修先前 bug#2 调查在 mini-desktop 工作树改+build 验过,但提交/推送被 77f67fdb 大合并竞态吞、未落地;此处规范化补回 origin/dev/2.0.0。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 21:59:21 -07:00
lili
2eb507da4a
feat(studio): U9 素材中心/玩法模板中心/创作者公开主页 + P-ACC-03适龄徽标
...
3 new pages(view→store→api→request CommonResult 范式,全 mock 兜底):
- 素材中心 /studio/material:六类浏览(GET /app-api/studio/asset/browse)+ 上传
(POST /infra/file/upload→POST /app-api/studio/asset)+ 选用入草稿
(POST /app-api/studio/asset/select)
- 玩法模板中心 /studio/template:GET /app-api/studio/template/list(5 品类
business-sim/narrative/puzzle/trpg/heritage)+ 一键去创作
- 创作者公开主页 /creator/:creatorId(PUBLIC 非 requiresAuth,P-OPN-08):
GET /app-api/project/public/creator/{id}(仅 status==4)+
GET /app-api/telemetry/public/creator/{id}/summary
P-ACC-03 适龄徽标 AgeRatingBadge(4 级 all/8+/12+/16+)渲染于:项目详情/我的项目
列表/创作者主页(VO ageRating)+ 试玩页(compliance/rating/get 回读)。
gap:feed 卡 VO 无 ageRating 字段(不杜撰,待 feed.yaml additive);profile/account
页无单局分级数据源——均显式留空。
HJ-FE-DS-001 token/组件复用 + i18n zh/en + 移动优先;strict TS 无 any;
新增 mock studio.ts(注册 index.ts,/infra 前缀放行)。
gate:npm run build(vue-tsc -b && vite build)GREEN;preview+curl 6 端点
+ 3 路由 200 实证。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:40:14 -07:00
lili
50a089170d
feat(studio): U8 创作可用性 P-CRT-10引导/11示例/13就地失败可重试 + mock失败路径
...
- P-CRT-10 创作引导: 创作页新手引导卡(三步, 可收起) + Prompt 输入近场写法提示;
示例库按钮始终可用(未选模板回落通用示例 genericExample); 升级中空态补「一句话造游戏」引导+示例预告
- P-CRT-11 示例库: Create.vue 消费真实 TemplateRespVO.examplePrompt, 强化「示例库」语义;
mock TEMPLATES 对齐真实后端 U7 五品类(business-sim/narrative/puzzle/trpg/heritage)逐字段同源
- P-CRT-13 就地失败可重试: Task.vue 监听 failed/timed_out 终态就地 showToast(一次, taskId 幂等去重),
区分 status=4 超时与 status=3 失败文案; 终态失败为 CommonResult code:0 不触发拦截器网络错误 Toast(单 Toast 不重复);
mock 失败注入: Prompt 含 test_fail→终态 failed(llm_error), test_timeout→终态 timed_out(timeout), 重试不继承失败(失败→重试→成功)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:10:29 -07:00
zizi
7534bdf9b7
feat(create): generic 桥接——一句话创作无需选模板即可生成(入口归一缺省 templateId=generic)
...
背景:W-CLEAN 废玩法模板层后 template/list 返空,创作页「开始生成」因 canSubmit 依赖
「必须选中模板」而恒禁用;后端 @NotBlank/同源白名单/派发分支/落包一致性四道硬约束又要求
templateId 必填非空。核心思想=在入口把缺省 templateId 归一为 "generic"(恰好命中
SUPPORTED_TEMPLATE_IDS=[generic] 单一通用口径,品类区分留 prompt 层),四道约束以「恰好
generic」全部一致通过,DB 零改(template_id NOT NULL DEFAULT '' 归一后落 generic)、后端业务零改。
契约层(2):aigc.yaml AigcGenerateReqVO required 去 templateId、project.yaml
ProjectCreateReqVO required 去 templateId,templateId 描述标注「可选,缺省 generic」。
后端层(归一 generic):
- AigcGenerateReqVO/ProjectCreateReqVO/StudioDraftCreateReqVO 去 templateId @NotBlank +
requiredMode REQUIRED→NOT_REQUIRED;
- AigcTaskServiceImpl.submitGenerate 在 validateTemplateExists 前归一(validateTemplateExists 不改);
- ProjectServiceImpl.createProject(BeanUtils.toBean 后)归一;
- StudioServiceImpl.createDraft 原「空 templateId 抛 STUDIO_TEMPLATE_REQUIRED」改为归一 generic;
- ProjectApi.createProject 的 templateId @Parameter required 放开(契约面一致避免 drift)。
前端 game-studio(去模板门):types.ts 两请求体 templateId 改可选;store/create.ts、api/aigc.ts
generate 入参改可选;Create.vue canSubmit 去「必须选中模板」条件(prompt 非空即可提交)、
onSubmit 缺省传 'generic'(空态下也能提交)。
测试校正:StudioServiceImplTest「空模板抛错」→「空模板归一 generic 透传 project」(行为变更)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 04:05:39 +00:00
zizi
4e486f60bc
fix(studio-host): 非安全上下文(明文IP http)整款游戏加载失败——crypto.subtle缺失退demo误报
...
根因:经局域网 IP 明文 http(如 http://100.64.0.7:4173 )跨内网机访问时,浏览器判为
「非安全上下文」,window.crypto.subtle 为 undefined。inject.ts 的 sha256Hex 旧实现此时
直接抛错 → fetchAndVerifyManifest 完整性校验失败 → GamePlayer 退 demo 兜底,而 W-CLEAN 后
demo 是「模板体系重构中」并发 game_error → 页面误报「游戏加载失败/网络波动」(真因是上下文
不安全,非网络)。门禁此前经 localhost(安全上下文)走查,subtle 可用,故漏过此类上下文依赖缺陷。
修复:sha256Hex 改双通道——优先 Web Crypto SubtleCrypto(安全上下文,原生最快);缺失时回退
纯 JS SHA-256(FIPS 180-4,零依赖,确定性)。两通道对同一份 UTF-8 字节摘要,结果逐字节一致,
使 manifest 完整性校验在「明文 IP http」与「安全上下文」下行为一致,整款引擎游戏正常装载。
仅改 game-studio/src/host/inject.ts(+89/-12),不动契约/不放宽 CSP/不削弱完整性校验。
验证:
① 纯 JS SHA-256 对已知向量 + 跨块边界 + 真 manifest(214KB→456c38cb,与后端 checksum 及
node crypto 三方一致)13/13 通过;
② npm run build -- --mode staging(vue-tsc -b 真类型门 + vite build)EXIT=0;
③ CDP 经 http://100.64.0.7:4173 (实测 isSecureContext=false、crypto.subtle 缺失)深链
/play/9306/93112:真 LittleJS 引擎装载、井字棋棋盘渲染、loading 收起、无 [GamePlayer]
兜底 warn、无错误态——修复前同路径报「游戏加载失败」。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:15:00 +00:00
zizi
2c96e63a5f
feat(studio-ds-polish): 品牌→绘境AI + 3 helper 标签 i18n + 裸令牌收口
...
- 对外品牌 common.brand: 造梦AI→绘境AI / ZaoMeng AI→Huijing AI(创始人拍板 huijing)
- helper i18n: status.ts/msg-type.ts/biz-meta.ts 的 label→labelKey(common.projectStatus/msgType/bizStatus/bizType),状态徽章/消息类型/biz 标签英文态也翻译;8 消费方包 t()(13 处)
- 裸旧令牌收口: var(--cyan/--green/--amber)→--accent/--success/--warning(严格等值,零视觉变化)
- 逻辑/契约枚举键/color/查找语义零改
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 18:13:06 +00:00
zizi
1bb29a5589
feat(studio-ds-batch): 批量波次——其余15视图克隆金样板(token+i18n+SVG图标+圆角)
...
5 簇并行迁移(逻辑零改,opus 子代理执行+主代理验证):
- 入口: Login/Share/Play - 生成流: Task/Preview - 项目: Project/Detail/Publish/StatusBadge
- 中枢: Message/Dashboard - 企业: BizLeads/BizCreate/BizLeadDetail/BizTemplatePicker
- i18n: 各簇 local-scope 注入(entry/taskflow/project/hub/biz 命名空间,中英同构)
- Icon 补 close/ban/plus/lock/phone/clock/inbox/edit/trash
- 硬编码色→语义令牌、emoji/字形→<Icon>、圆角统一
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 17:10:54 +00:00
zizi
87f00323ce
fix(studio-ds): P5 评审收口——a11y + 文案 + 注释清理
...
- 补 icon-only 按钮 aria-label:Feed 上/下切换(common.action.prev/next)
- GameCard 封面播放区键盘可达:role=button/tabindex/aria-label/@keydown.enter.space
- 新增 common.action.prev/next 中英文案;删 InteractBar 过期注释(flag 已补)
P5 of HJ-FE-DS-001。opus 评审无 P0、逻辑保真经机器 diff 实证;修 P1-1 无障碍。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:26:09 +00:00
zizi
caa2e1ba03
feat(studio-ds): P4 代表面落地——Feed簇/Create/Profile/TabBar 接入设计体系+i18n+SVG图标+多档主题
...
- Feed/GameCard/InteractBar + Create + Profile + TabBar:硬编码色→语义令牌、emoji/字形→<Icon>、圆角统一、文案 i18n 化(feed/create/profile 命名空间)
- EmptyState 增 iconName(SVG,向后兼容)消 Create ⚠/✨ ;Icon 补 flag/projects/dashboard/enterprise/help/warning
- i18n/index.ts 合并 feed/create 命名空间;Profile 走页内 local-scope;TabBar 用 common.nav
- Profile 接入 <AppearanceSwitch>(暗/浅/柔 + 中/英 切换入口=决议②落地)
P4 of HJ-FE-DS-001 金样板。逻辑零改(子代理只动样式/文案/图标,主代理验证)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:26:09 +00:00
zizi
655673eb99
feat(studio-ds): P3 组件库——AppButton 令牌化(grad-primary/on-accent/focus环) + 新增 Icon(SVG)/Field/AppearanceSwitch
...
P3 of HJ-FE-DS-001 金样板。通用品牌组件,P4 接入 Feed/Create/Profile。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:26:09 +00:00
zizi
ecae9025a9
feat(studio-ds): P2 i18n 脚手架——vue-i18n@10 + zh/en locales + 防闪烁早设脚本 + useAppearance(主题/语言持久化)
...
P2 of HJ-FE-DS-001 金样板。后续 P3 组件库 / P4 Feed+Create 落地。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 16:26:08 +00:00
zizi
f98ad0f801
docs(fe-ds): studio视觉体系/i18n/通用组件库 双spec+mockup+P1token层(HJ-FE-DS-001)
...
评审版+执行版双spec、真chrome验证mockup(zh/en+暗/浅/柔三主题实时切换)、P1 tokens.css体系化补全(全additive·旧令牌保留→暗色零回归)。
创始人5决议:响应式消费Web否决demo桌面侧栏/暗色先行+设置内多档主题/SVG图标替emoji/金样板先行/统一圆角矩形(禁药丸椭圆)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 14:55:47 +00:00
zizi
c50e336792
feat(studio): feed 卖相打磨——互动按钮玻璃质感 + 卡片封面"无图也好看"(评审 V-1/V-2)
...
- V-1 互动按钮(InteractBar):深蓝实底 rgba(16,21,34,.6)→半透白 rgba(255,255,255,.10)+backdrop-filter blur(8px)+box-shadow,抖音式悬浮玻璃;图标/计数/点赞态行为不变
- V-2 卡片封面(GameCard+新增 utils/coverGradient.ts):纯确定性 FNV-1a hash→5套渐变主题(青绿/森系/青紫/暖/冷)+3套装饰,无封面卡按 title 分化渐变+柔光点+波形(无图也好看);真实封面优先逻辑不变
- verify:vue-tsc 类型门逮修一处真类型问题(computed 早返回{});build双绿;真机 :4173 CDP 实算样式(bg rgba(255,255,255,.1)/blur8)+截图(9卡按title渐变各异)双证
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 10:24:13 +00:00
zizi
22bc528243
feat(studio): 看板占位接真——完玩率/广告收益/七日趋势 接 G1/G2 live 端点
...
- 完玩率←telemetry/my/summary.completionRate;广告收益←trade/my/income-summary.totalNet(分→元);七日趋势←telemetry/my/game-stat/trend?days=7 渲真柱状(播放/完成双柱)
- 新增 api/trade.ts getMyIncomeSummary + telemetry.ts getMySummary/getMyTrend + types 契约镜像;api/index 导出 tradeApi
- 失败/空走真实空态(完玩率"--"/收益"--"/趋势"近7日暂无数据"),不再"建设中"
- 真机验证(:4173 live 截图双态):有数据态完玩率50%+真趋势柱、空账号态真空态,console 零错;测试态 DB 已还原零漂移(game_project 全归 creator=1)
- 契约 follow-up:trend.statDate 实测序列化为 JSON 数组[y,m,d](Jackson LocalDate 默认)与 telemetry.yaml 描述 yyyy-MM-dd 不符,前端已兼容,建议后端/契约对齐
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:54:08 +00:00
zizi
afa0771599
feat(studio): B端定制前端(goal G3)——提单/进度看板/验收接 biz 7端点
...
- 3 视图(views/biz):BizLeads(我的订单列表+提单入口)+ BizCreate(提单表单+分场景选模板)+ BizLeadDetail(进度时间线+报价+demo试玩/反馈/确认验收)
- 接 biz.yaml 7 客户侧端点逐条命中(leads/my/{id}/progress/templates/acceptances feedback/confirm);签署=客户侧契约无在线签章端点(sign-offline 归 admin),线下兜底符合契约
- router +3(均 requiresAuth)+ 个人中心"企业定制"入口;数据层 api/store/mock/types 复用既有范式
- verify:vue-tsc 类型门 + vite build 双绿;真机走查留合并点
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:01:19 +00:00
zizi
5463796f52
feat(studio): 创作者数据看板(P-OPS-01/02)——指标卡接真 + 趋势诚实占位
...
- 看板视图(views/dashboard):累计播放/点赞(project /my 聚合)+已发布数(community /level)+累计奖励(community /rewards)接真;完玩率/广告收益/七日趋势=诚实占位"数据接口建设中"(契约无创作者侧读端点,不伪造)
- 入口:个人中心"创作数据"→/dashboard(requiresAuth+hideTabBar)
- 实证缺口:契约仅 admin-api 有 telemetry game-stat / ad revenue(RBAC=admin),无 /app-api 创作者侧;建议后端补 /app-api/telemetry/my/{summary,trend}(creator 归属隔离)
verify-as-you-go:vite build + vue-tsc 双绿;接的3端点逐条命中契约;3处gap逐条grep证伪;真机走查留合并点
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:01:19 +00:00
zizi
3147b11d60
feat(studio): 用户向前端——消息中心 + 个人中心(闭合评审 L-1 消息无入口 / Profile 缺失)
...
- 消息中心(views/message):消费 community.yaml 玩家侧端点(messages 列表/mark-read/unread-count),类型筛选+未读红点+标记已读+游标翻页+诚实空态;TabBar 底部 3→4 tab 加"消息"一级入口
- 个人中心(views/profile):账号信息(passport /me)+创作成长(community /level)+功能入口+退出登录(复用既有 logout() 不重实现);"我的"tab 指向 /profile
- 支撑:api/community.ts + store/message.ts + mock/community.ts(沿用每模块带 mock 约定)+ 契约 VO 入 types.ts;router 加 /message /profile(均 requiresAuth)
verify-as-you-go:vite build --mode staging ✓ + vue-tsc EXIT=0;消费端点逐条核验在 community.yaml(:41/:69/:90/:114)+passport.yaml(:100)契约内;真机走查留合并点
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 09:01:19 +00:00
zizi
42342e8c53
fix(studio): Phase0 卖相批——退出登录入口/品牌渐变/Inter字体/字号token/创作页诚实空态
...
- 退出登录入口(Project.vue):接既有 userStore.logout()(不重实现),isRealLogin() 门控仅登录态显示,二次确认→replace('/feed');闭合 §7「退出登录无入口」孤儿红线
- 主按钮品牌渐变(AppButton.vue):.app-btn--primary 纯色青→135° cyan→green 渐变+weight 820+深色字#061014,对齐 demo
- 品牌字体(reset.css + public/fonts):self-host Inter 拉丁子集 400/600/700 woff2,@font-face font-display:swap,'Inter' 前置字体栈(中文兜底 PingFang SC/微软雅黑)
- 字号阶梯(tokens.css):新增 --fs-h1/h2/body/caption,additive
- 创作页诚实空态(Create.vue):W-CLEAN 后模板列表返空属迁移非故障,区分"✨ 升级中"与"⚠加载失败"不再误报,空态给"去游戏流"出口
真机走查实证(staging :4173 CDP 截图双证):退出登录可见可登出/主按钮青绿渐变/Inter真渲/创作页诚实文案 全生效
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 06:43:12 +00:00
zizi
063ec4edf2
docs(rename): ③ 文档/契约漂移清理——contracts+docs+根文档 yudao 标识同步 com.wanxiang.huijing(follow-up,脚本)
...
- 范围:全仓除已完成的 game-cloud/game-admin(及排除区);91 文件
- cn.iocoder.yudao→com.wanxiang.huijing / cn.wanxiang.game→com.wanxiang.huijing.game / cn.iocoder.cloud→com.wanxiang / Yudao*→Huijing* / bare yudao→huijing
- 含 contracts/api-schemas(apiInterface FQCN)、docs/architecture+agent-specs(含中文名,git ls-files -z 修复)、AGENTS.md/CLAUDE.md 等根文档
- 保留不动:上游归属 URL(gitee/github yudaocode·YunaiV,改则断链+违反署名)、game-cloud Flyway 迁移注释(保 checksum)、lockfile(装包重生)
- 纯文档/字符串,零构建影响(game-cloud/game-admin 字节码未动)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 14:32:44 +00:00
zizi
384a26da59
fix(studio): feed 卡占位封面(1×1 透明 GIF)当无封面走标题底纹兜底——修"一片黑"卖相
...
链路③⑤ 人测亲见:feed 卡一片黑+只剩播放按钮。根因=生成侧无缩略图时后端回填 1×1
透明占位 GIF(data:image/gif;base64,R0lGODlhAQAB…),它是 truthy → 绕过旧 `!coverUrl`
兜底、被当背景渲染成透明(视觉=黑)。
修:GameCard.vue 加 hasCover 计算属性,识别 1×1 占位 GIF 当"无封面"→走既有标题底纹兜底,
feed 卡始终有可读内容。真实封面(OSS http(s)/实质图)才用作背景;真缩略图归 W-G1。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:39:14 +00:00
zizi
238ec2dbe8
test(aigc-3b-B): 视觉终局达成——真游戏真玩入 feed(亲眼验);一句话现生成腿缺口=tap类driver:none→L1
...
3b-B 重跑视觉终局(mini-desktop·证据 wg1/gen-worker/evidence-3bB-final/):
✅ 视觉终局达成(亲眼复核截图):feed 里一款真渲+真玩有进展的井字棋(gameId=9306/versionId=93112)——
空盘「轮到X」→ 落子填盘 X·O → 「X 胜!」+ 重新开始(latch 终态);feed 真玩门 10/11 过
(no_demo_fallback/engine_rendered/lively_interactive 全 true,唯一 false=play_start 遥测非阻断)。
经真 HMAC 回调写链落库(验签通过 engineBundleLen=210891→建版本→组包 checksum 自洽→翻 feed)。
走兜底路(诚实标注):主路一句话现生成两次均失败,故取已验证过九门样板 tictactoe(便宜模型 flash 真生成、
verdict A-I 全 pass)的 engineBundle 经派发面真回调路落 feed,DB bundle 与样板 sha256 字节级一致。
仍是便宜模型真生成的过门游戏,只是非本次现生成。
★ 主路两次 fresh 失败真因(非模型壁垒,铁证):design agent 在 dispatch 面 run_studio(play_spec={}) 下
均给 driver:{type:none}→harness 盲打打不中目标→moves/score 恒 0→H_progress 挂+latch 不触发,repairs=5
耗尽。游戏本体全对(gen9306/9307 verdict 8/9 门过,targetX/Y/radius·board·moves 导出正确,G_input/
I_control/F_wiring 均过)。样板过门靠 lane brief 手供 play_spec.driver=tap-targets。
→ 蒸馏入 cheap-model §7:DESIGN_SYSTEM 须对离散点击类强制产 tap-targets driver(纯 L1 生成域,
moat『一句话现生成』腿的真·临门一脚)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:48:50 +00:00
zizi
ce9085df6b
feat(runner-v2): P3 3a+3b-A 派发面 plumbing——便宜模型生成游戏经后端 dispatch 自动入 feed 真玩(零回归验)
...
3a canary:pong 真 bundle→buildGamePackage→发布→feed 引擎真渲真玩(gameId 9301,brick-2 真值通路 mvn 13/13 验)。3b-A 派发面:执行器对 generic dispatch 外置 worker→worker 回调→buildGamePackage→feed,stub worker e2e 实证(任务129→版本93111→gameId 9302 引擎真渲 CDP 11/11)。
改动:① 点亮 AigcTemplateConstants(List.of(generic))+PromptResourceLoader ② 派发面 AigcGenerateExecutor(dispatchGeneric 分支:仅 dispatchTemplateId=generic 走、其余进程内 LLM 旧路逐行不变=零回归)+WorkerDispatchClient+AigcExecutorProperties/Configuration ③ 内网回调 AdminAigcTaskController @PermitAll /dify/callback-internal(注入系统身份解 updater-null=部署窗口#3 同根因复发,镜像 executeWithSystemIdentity)④ stub worker scripts/wg1_stub_worker.py + 灌库/发布桩 p3_*/p3b_* + config worker-url ⑤ 单测 +3 派发面用例(dispatch/失败/零回归 clicker 不 dispatch)⑥ 蒸馏 ai-generation-pipeline.md §⓪′ 派发面范式+2 红线。
零回归硬约束:AigcGenerateExecutorTest 20/0/0、AigcTaskServiceImplTest 9/0/0,clicker 仍进程内(dispatchSender 零交互)。主笔亲核 gating diff(:342-344 仅 generic)+肉眼复核 feed 真玩截图。🔴 安全红线(留 3b-B):/dify/callback-internal 跳 RBAC 仅恃内网兜底,真 worker/外部接入前必补 HMAC/mTLS 服务间签名。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:19:25 +00:00
zizi
5d3f7a87f0
feat(runner-v2): P2 通用宿主泛化落地——引擎游戏真渲入 feed 真玩(mini-desktop 真机门验)
...
P2 = 把 P1 装载契约从「装载王蓝莓一款」泛化为「装载任意 GamePackage」,经发布主链入 feed、
真人浏览器真玩。4 决策落实(O2(b)纳入 Phase C / DB-manifest 内嵌 / 灌库桩 / __GameBundle)。
三轨实现
- 后端:GamePackage schema 加 engineBundle additive 可选字段;buildGamePackage 加 engineBundle put
(P3 生成路用,P2 恒 null→put 跳过→字节零变,单测 packageBytesReproducible 证);灌库桩
p2_seed_engine_bundle.mjs + 四态脚手架 p2_scaffold_4state.sql(W-CLEAN 后重建已发布游戏)
- 运行时:P1 bootRef 泛化为 bootGameHost(opts)(引擎骨架照搬+参数化工厂来源/插件/视口),
bootRef 退化薄包装;固化 build:ref-bundle 产 dist/ref-bundle.iife.js(--global-name=__GameBundle)
- studio:inject.ts 引擎包分支(pkg.engineBundle? → 内联 script 暴露 window.__GameBundle →
bootGameHost 挂引擎真渲;否则旧 startRuntime 路保兼容);掏空壳改引擎分支(Phase C);CSP 不放外域
对抗代码复审逮 2 mustFix(主 agent 亲核亲修 + 6c6g 复验)
- 灌库桩读错产物(ref-bundle.js harness vs .iife.js)→ mini-desktop 灌库返工死循环
- 引擎分支漏发 game_start → 会话/play_count 静默吞、门②检不出 → 补发(DB session 行实证已修复)
+2 shouldFix(兜底可观测信号 / 灌库 SQL @pj 防撞 max_allowed_packet)
+ 真机门逮 2 环境缺陷已修(seed charset=utf8mb4 防双编码断 checksum 链 / 四态脚手架补 W-CLEAN 空库)
mini-desktop 真机门 6 门(逐门实数,主 agent 肉眼复核证据)
①build:ref-bundle 265374B/__GameBundle 真入包 ②Java 编译过+字节复现单测 ③studio staging 重建消 mock
④灌库 status=1∧checksum 64hex∧engineBundle 键齐∧manifest sha256 一致 ⑤真人 feed 点卡→引擎真渲
暖阳小卖部(warm=1246073px)非「重构中」+game_loaded+game_start+防 demo 三锚+console 零错+DB session 行
⑥回滚:无 engineBundle→demo 壳/错误态,向后兼容未破。证据 game-studio/evidence/p2-feed/
诚实 gap:game_end(到结算)未在自动化窗口内达成=ref gameover 需分钟级真玩+srcdoc 坐标盲点的取证局限,
非引擎/渲染能力缺陷(机制已通,留人工真玩到打烊补全)。受控面 6 项+game-host.d.ts 零改。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:36:32 +00:00
zizi
f63c56bec8
docs(cleanup): 全文档清毒收编——长尾18改+1新建(知识3/技能6/DocB注记/契约deprecated/DifyCallback诚实注记×4/双.agent/执行spec横幅)+主会话补刀tech-decisions两处漏网(回填横幅与生成主线行的'模板驱动'死口径);活文档面残毒终扫清零
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 17:40:16 +00:00
zizi
7bf2cd1d3b
refactor(w-clean): 旧玩法模板清除(创始人令2026-06-12)——模板哲学落地第一刀
...
- game-studio runtime/index.ts 843→113行:clicker/merge/idle/tycoon 四模板游戏逻辑全删,统一「模板体系重构中」错误态(画布明示+game_error事件,不抛裸异常);运行时壳/生命周期/SDK/destroy 契约保留
- 后端:AigcTemplateConstants.SUPPORTED_TEMPLATE_IDS=List.of()+getTemplateList 返回空(提交入口/执行器双层拒绝,直插任务不烧LLM);两测试诚实适配(机制覆盖保留+清空后拒生成断言),aigc 模块 56 测全绿
- staging DB:15 表 1022 行已先归档(mini-desktop:/root/backups/w-clean-20260612/,304,606字节,可整表回滚)后物理删除;遥测/zone/player/trade/community/biz 全保留
- 验证:前端 build 绿/health 200/feed 空列表优雅(既有空态分支)/smoke 9/12(3 FAIL=feed空的预期差异,留档不掩绿)
- 未动:contracts/templates schema 与 prompt registry(死内容,随 W-T1b spec v2 的 9a 能力插件清单一并清退)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 09:24:27 +00:00
zizi
13b8a51e47
docs(t1-close): W-T1a 七步收口——引擎终裁LittleJS+模板双层架构拍板全量回填
...
七步对账(wave-close-checklist):
1.总账:表头2026-06-12+对账c514d60;§5 runtime口径改Runner v2;§6 新增W-T1a执行记录行
2.作战清单:W-T1a完成移归档⑪;登记W-T1b(双spec编制中);§0完成线建议候选更新(拔高样板过创始人判)提请重锁
3.回填(裁定类):终裁包落锤横幅/重设计spec v1.2/tech-decisions §1.1+技术栈行(LittleJS终裁+双层架构)/glossary词条/记忆双档
4..agent:game-studio横幅更新(引擎已终裁,W-T1b建设中)——结构性状态变化
5.蒸馏:staging-ops新增mini-desktop长驻serve配方(systemd-run首选/setsid双脱离+探活门/heredoc竞态红线);Phaser侧专有配方(切形态/净增量取差)不蒸馏——败选侧低复用,证据留lane REPORT可溯
6.索引:无结构性变更(纯内容追加),README/AGENTS导航不动
7.编排资产:spike全部脚本已随lane/phase2入库;终裁包v1.2兼本波收口报告
创始人拍板记录:引擎=LittleJS;模板双层架构(核心代码模板=平台核心层类高级引擎固定核心留LLM灵活面/玩法模板=品类层带质量底线生成须高于底线);美术=程序化系统+像素资产包混合;亲玩判词「玩法简单缺艺术气息」(engine-neutral)→好玩基线v2五要素;拔高样板=W-T1b首件
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 00:26:16 +00:00
zizi
75d01f0e92
docs(tier1): 约束框架定稿——15KB红线废除→三层框架,四路引擎尽调收口(HJ-T1-REDESIGN-001·创始人专门会话)
...
- 新增 brainstorm requirements(单一事实源):SLO地板@千元机+4G P75/预算入场券B1 gz≤350KB·raw≤1.5MB/工程增强层E1-E6;裁决语义=预算入场券·S2实测主考
- 重设计评审版 v1.1:四路尽调回填(LittleJS 8.0/Phaser 8.0/KAPLAY 6.5淘汰/自研+微库淘汰),D2引擎URL化交付铁律(HTTP+编译双缓存)
- 裁定回填:tech-decisions §1.1(自研壳退役→成品轻引擎+Runner v2,终裁待spike)+glossary/product-and-architecture词条+技术决策版横幅第4条
- 1.x手册挂横幅(add-game-template/runtime-and-multichannel/game-studio/.agent),双轨冻结期仍有效;历史spec不动
- 护城河话术三处措辞修:自研边界改'宿主控制层自研+渲染引擎用开源可替换',强化B0定调
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 17:51:16 +00:00
zizi
60e736ac1a
docs(harness): 收口协议单清单化+四处漂移纠偏+配方出仓蒸馏——2026-06-11 harness 体检落地
...
体检根因:收口规则散落 4 处(总账铁律/作战清单回填铁律/README 维护规则/协议 §6)靠记忆执行
→ 漂移已实发(总账表头停 06-09 两日、作战清单轮次未滚动、.agent 残留 Day-0 横幅、AGENTS §3 仍写"三仓未入本仓")。
- 新增 .agents/skills/wave-close-checklist.md:收口七步唯一可执行清单(总账+表头/作战清单+归档/回填/.agent 仅结构变化/蒸馏/索引/编排资产入库+30秒自检);总账铁律、协议 §6、编排文档全部改为指向它
- 四处漂移一次纠偏:总账表头 06-11+对账 f403d11;game-cloud/.agent(Day-0→11/13 模块实态、技术栈对齐 C2 裁定、Wave4 销账);game-studio/.agent(mock 态→接 staging 实态);AGENTS.md §3 monorepo 实态+目录树补 contracts/game-*/deploy/mvp+memorys 标记停增
- 作战清单瘦身:3843 字符巨型 bullet 等完成史整体迁 MVP作战清单-完成史归档.md(原文快照保真),清单 68→33 行只留队列;新一轮完成线标注待创始人拍板重锁
- 配方出仓蒸馏(原仅存会话私有记忆):skills/staging-ops.md(机器分工/git 同步/重部署字节码实证/前端构建门/冒烟)+ skills/ui-walkthrough-cdp.md(CDP 七坑/studio/admin 走查/信道探针);README+AGENTS §5 索引同步(§5 顺带补回漏登的 add-game-template/prompt-governance)
- 编排器 .agent 户口:QA 工具箱定位/组件清单/纪律(新工具不再长进 runs/)/Doc B T-id 编目与 tools/ 迁移留待办
- 协议修正:§5 前端验证门 pnpm test→npm run build(vue-tsc 假门禁红线入文);§1 历史检索改指 agent-specs 收口报告;mvp-execution-orchestration 加波次制现状注记(Day0-15/站会为目标态)
- .gitignore 加 __pycache__/.pytest_cache(注释说明与 build/ 老雷的区别)
遗留:nightly cron 哨兵(动 mini-desktop,待拍板)/ Doc B 未编目组件销账 / tools/ 迁移评估。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 13:26:04 +00:00
zizi
b8d1a0da73
fix(runtime-host): host→game 回包全断根因修复——v-for 模板 ref 数组解包
...
根因(探针四锚点+判别实验实证):ref=iframeRef 位于 v-for 内,Vue 3 填充为数组;
attachBridge 按元素直取 (数组).contentWindow=undefined → HostBridge.targetWindow=
undefined → post() 静默丢弃全部 host→game(storage/ad/pay 回包+init 同断)。
game→host 监听全局 window 不受影响,故游戏可玩/遥测可达,两波未现形。
修法:currentIframe() 解包 + contentWindow 不可用时显式 console.warn(可观测)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 02:45:31 +00:00
zizi
f82d480dfd
feat(host-storage): M-c批② idle离线存档三端——contract storage payload+GamePlayer受信边界四道闸+inject注入侧应答端;主agent逮修loadState三端协议错配
...
- contract.ts:+3 storage payload interface;GamePlayer handleStorage(键白名单idle:/4KB上限/JSON校验/wxgame:隔离);inject mountStorageBridge(requestId→resolve映射,5s超时resolve null绝不reject,幂等防重挂)+包装runtimeView传startRuntime;不触sdk/(Core红线),demo锚不动
- 【主agent核验逮修·承重接口】loadState三端协议错配:runtime自裁object签名(避§5.5零解析红线)但GamePlayer/inject照spec原草案回string→runtime读字段全undefined→离线补发恒0静默失效。统一到object(宿主受信边界解析):contract value string→Record(批②新增契约无存量消费者,同波定稿不破semver)+GamePlayer读分支接住parse结果回包对象+inject:130 resolve对象。runtime内部saveState/loadState字段(v/resource/autoYield/upgraded/leftAtMs)闭环自洽
HJ-MC-TPL-EXEC-002 §6.1/§6.2
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 16:46:06 +00:00
zizi
88388f7b46
feat(runtime): M-c批② initIdle(离线闭环)+initTycoon(经营循环)——纯追加双case,initMerge零行删改
...
- RuntimeSDKView 扩 saveState?/loadState? 两可选方法(loadState 返 object|null,宿主受信边界已解析,runtime侧零JSON.parse守§5.5);缺失安全跳过(旧宿主/demo退化无离线态不崩)
- initIdle:loadState→离线补发公式(钳offlineMaxMin+折扣双闸防爆)→在线点击产料+每秒自动产出→节流saveState(≥2s)→资源达targetResource通关;score=floor(resource)
- initTycoon:进货带客(onDown waitingCustomers+1)→售出配对→金币达targetCoin通关;按钮布局契约(buy中心W*0.28/H*0.70,sell W*0.72/H*0.70)承重接口;score=coin
- clampInt/localXY各init函数体内复制(沿initMerge范式禁提升);零DOM/零可抛新增;hunk全>426(initMerge:255-426零删改)
HJ-MC-TPL-EXEC-002 §5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 16:46:06 +00:00
zizi
cdf4d82aa6
feat(runtime): M-c批① 模板分发+merge玩法——单工厂switch(templateId)+initMerge拖拽合成+game_error防御
...
- 分发骨架:case ''/'clicker' 合并(空串兼容存量30款旧包)/case 'merge'/default=reportError+game_error不起循环不绑监听
- initClicker:现行逻辑逐字符迁入,计分/提示文案与坐标逐像素保真,仅绑 pointerdown;life/finish/loop/markStarted/drawBase 共享单份(红线代码不复制)
- initMerge:clampInt/cleanLabels 自包含纯函数兜底(targetLevel 钳≤chainLength 防死局);§5.3.1 布局契约逐字符照钉(cols=ceil(sqrt)/topPad=round(H*0.18)/margin=W*0.06/gap=W*0.03,格中心预计算缓存);半格方形容差命中;pointerdown 产料/起拖+pointermove 预览+pointerup 任意两格同级合成;score=合成次数(拍板#6)
- finish(score) 参数化单一 emit 点,duration_ms 计数维持基线3;零 DOM/零可抛/toString() 注入约束全守
HJ-MC-TPL-EXEC-001 §5(构建+体积门待 mini-desktop)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 12:31:26 +00:00
zizi
b0850a2ad9
feat(passport): 鉴权建设波——V11契约+system passport子包+14端点@PermitAll+白名单挂点+剔除桩+前端登录守卫
...
- 契约先行: V11.0.0 双落点(game_player/game_invite_code/runtime_session匿名兼容ALTER) + passport.yaml(4 app+4 admin) + events登记user_login
- B1 system侧: passport独立子包(fork隔离), 验证码+邀请码旁路登录注册一体, OAuth2 MEMBER token(client=default已核), 错误码1_002_090/091远段, PlayerApi @Primary本地化(mock豁免裁决=无行+mockEnable放行), R6限频(IP 10次/h+Redis日/时双闸), 25单测
- B2 存量: @PermitAll恰好14端点(主agent grep复核, 不放行名单零触碰), 匿名session(player_user_id可空+anon_id), 白名单5挂点(studio/aigc/project), ad计费限频, telemetry剔除桩(照落库不进聚合+Redis降级放行), EnvelopeReqVO文案回写
- F1 前端: 登录页两Tab+占位协议, isRealLogin守卫(isLogin恒真不可用), 401统一拦截, 互动转正onInteract单入口gating, user_login遥测双带; test1批跑路径原样保留(主agent复核)
- 三面对抗核验全pass零blocker; 构建门待mini-desktop(本机禁构建铁律)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 09:40:10 +00:00
zizi
17bd6b1582
feat(studio): M-b② 渲染面扩展——theme/scoreLabel 入画布(解除 §6.3 不渲染边界)
...
- theme: djb2 哈希派生双色渐变底色 + 顶部标题入画(≤16字清洗截断, cleanText 控制字节剔除)
- scoreLabel: 替换计分文案「{scoreLabel}:n/target」(≤8字, 缺省回落'点击得分')
- demo 包同步带 theme/scoreLabel 保持 parity(target:5 不动, player 信号 c 依赖)
- 遥测/生命周期契约零触碰(game_end{score,completed,duration_ms} 蛇形逐字不动)
- 体积: startRuntime(min) 1673→2260B raw(gzip 1193B), 占 15KB 红线 14.7%
- 纯 Canvas fillText, 零 DOM 注入; theme 为空时旧包渲染逐像素零变化
- spec: 2026-06-10-Mb渲染面-execution.md(85行, 体积/契约双门禁)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 03:01:02 +00:00
zizi
d279898192
fix(studio): B2′ 真人试玩闭环 3 处修复 — 布局高度链/demo兜底非致命/game_end补completed
...
浏览器实玩(staging+真无头Chrome)首次暴露、curl/单测均未现形的 3 个真 bug:
1) 布局:#app/.app-root 改 height:100% 建确定高度链——原 min-height 链断,子页 .feed/.play 的 height:100% 塌成 0,封面/画布 0 高不可点(真机也塌)。
2) GamePlayer:取包/manifest 校验失败回退 demo 是「可恢复」场景,不再 emit('error')(父级 Play 把 error 当致命态 v-else-if 隐藏宿主显示「加载失败」,与 demo 兜底冲突),仅 console.warn。
3) runtime:clicker finish() 补发 completed:true+duration_ms——后端 quality_score 完玩率口径依赖 props.completed,缺它真玩也推不动 quality(数据回路失效)。
实证:浏览器玩 A-小卖部通关→quality 0→60→feed 从 B 领头(30)翻转为 A 登顶(60)。vue-tsc -b 绿。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 17:01:04 +00:00
zizi
a7076871e4
feat(B1): 黄金闭环前端联调(step③) — 真连 staging + 有效遥测信封
...
step③ game-studio 联调(编译验证待 mini-desktop):
- request.ts 注入 tenant-id:1;user.ts token 取 VITE_STUDIO_TOKEN(=test1)
- vite.config.ts: VITE_API_BASE 非空则关 mock + 启动打印 baseURL/mock 状态
- runtimeApi.ts: 取包改委托 src/api/runtime.ts(带 base+token+tenant,修 Codex C3 裸 axios 同源)
- inject.ts: manifestUrl resolve 到 VITE_API_BASE + 带鉴权头(修 Codex C4)
- telemetry: 信封补 eventId(randomUUID)+ traceId 兜底非空;sendBeacon→fetch keepalive 带头(sendBeacon 不能带 Authorization/tenant)
- Play.vue onTelemetry 白名单原样转发 like/share/play_end(修 Codex H8 吞事件)
- 新增 game-studio/.env.staging + vite-env.d.ts;.gitignore 豁免 .env.staging(防 gitignore-swallows-frontend-source 同类坑)
- 注:Feed.vue 互动经 buildEnvelope traceId 兜底覆盖,免改
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 14:40:53 +00:00
zizi
eb5dbcb1af
docs(mvp): 建立 MVP 进度总账(单一事实源)+ 刷新 game-cloud/game-studio 过期 .agent
...
- 新增 docs/mvp/MVP进度总账.md:把「计划↔完成↔待办↔执行记录」对账在一处
(M0-M5 里程碑账 / 13 模块建设矩阵 / 5 条闭环链路 / 8 类契约 / backlog / 波次史)
- 诚实口径:结构骨架~70%(9/13模块脊柱+M1单体真启动),真实可验收P0仍早期(M2-M5为桩)
- 刷新两个 .agent:Wave2/3 已建已提交、M1 达成、contractGaps 已补;均指向总账为准
- 修复"跑了波次却无活账"的项目管理缺口
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 06:00:36 +00:00
zizi
b70e90b775
feat(wave3-phaseB): compliance/studio 模块 + contractGaps(后端全绿)
...
Phase B 并行建(4 路互斥目录),主 agent 合并 reactor 验证:
- compliance(109/V9):ComplianceGateApi.evaluate seam + 风格原子桩(StyleComplianceAtom/IpComplianceSeam)
+ 分级 + 封禁(R3 状态分支,下架联动留 Phase C)+ V9 DDL(gate_result/content_rating/user_ban,不建审核状态机表 D2)
- studio(112/V8):创作任务链(createDraft→project.createProject / generate→aigc)+ attachments 持久化-only
+ 新增 AigcApi seam(additive)+ V8 DDL
- contractGaps 后端:GAP-3 feed ShareMeta versionId(调 getCurrentVersionId 仅已发布)、GAP-2 runtime manifestUrl(纯派生零DDL)
- contractGaps 前端 game-studio:GAP-1 publish admitted/gates、GAP-3 share→play versionId、GAP-2 取包 manifestUrl+sha256
- 合并验证:全 53 模块 reactor 编译 SUCCESS;新/改模块单测全绿(compliance8/studio11/feed12/runtime24)
- 注:前端 game-studio build 待 mini-desktop 验;Phase C 待接入 project.publish→ComplianceGateApi
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 02:15:20 +00:00
zizi
9e95a66ea6
refactor: 技术命名空间 huijing→wanxiang 全栈落地(代码+契约,原「只改文档」决策反转)
...
- Java 包 cn.huijing.game→cn.wanxiang.game:126 .java + 15 目录 git mv(保留历史)+ Application scanBasePackages/@MapperScan + yaml type-aliases
- SDK HuijingGameSDK→WanxiangGameSDK + postMessage channel huijing-game-sdk→wanxiang-game-sdk(契约 + 前端 host/sdk/inject/bridge)
- 契约 contracts/ 同步(sdk-interface.d.ts / runtime.yaml / game-package.schema / $id URL / V3 SQL 注释)
- 主 agent 独立验证全绿:后端集成编译+55 单测(cn.wanxiang)、前端 build+/browse 冒烟(WanxiangGameSDK+demo 911 像素+遥测 200)、残留 huijing=0、Flyway 5 迁移 diff-identical、yudao cn.iocoder.yudao 2167 文件未误伤
- 保留 yudao 框架 cn.iocoder.yudao + Maven groupId cn.iocoder.cloud
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 10:16:52 +00:00
zizi
67ad750abe
feat(frontend): game-studio 前端脊柱(双闭环 + 宿主×SDK×Runtime,mock 验收通过)
...
- 单 SPA 双区(玩家 feed/play/share + 创作 create/project),Vue3 + Vant + Vite8 + Pinia
- 三相 Workflow 并行建成(A1 地基 + A2 宿主引擎 ∥ → B1/B2/B3 业务页 ∥)→ 主 agent Phase C 验证门
- 双闭环 + 三方链路(GamePlayer iframe × HuijingGameSDK × Canvas Runtime 3.5KB) + ad 桩经 /browse 实证
- npm run build + vue-tsc -b 绿(验证门修复 2 处类型 bug);自写 mock 中间件(dev+preview 双 hook)
- 4 个 contractGaps 已上报、骨架 mock 兜底,待 staging 真实联调前补
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 09:10:38 +00:00