diff --git a/.hermes/shared-memory/decision-log.md b/.hermes/shared-memory/decision-log.md
index abe7a502..5d239741 100644
--- a/.hermes/shared-memory/decision-log.md
+++ b/.hermes/shared-memory/decision-log.md
@@ -42,10 +42,10 @@
## 2026-05-25 抓大鹅发现页官方 demo 使用静态资源与本地运行态
-- 背景:本轮抓大鹅资源管线已经生成完整 `level-scene`、背景、UI spritesheet、物品 spritesheet 和切片资源,需要放入发现页作为可试玩验证入口,但不应把一次性本地资源包装成后端正式作品。
-- 决策:发现页官方抓大鹅 demo 固定 profileId 为 `match3d-demo-20260525`、公开作品号为 `M3-20260525`,资源读取 `public/match3d-demo/undersea-candy-market/` 下的静态文件。公开卡片、作品号搜索和详情页沿用平台公开作品详情链路;启动运行态时用 `createLocalMatch3DRuntimeAdapter`,不调用正式 Match3D runtime 后端、不新增 SpacetimeDB schema、不写正式作品统计。
-- 影响范围:`src/data/match3dDemoGalleryCard.ts`、`src/components/platform-entry/PlatformEntryFlowShellImpl.tsx`、发现页公开卡片、作品号搜索、Match3D 本地 runtime adapter、玩法链路文档。
-- 验证方式:搜索 `M3-20260525` 能打开“海底糖果集市”并启动本地抓大鹅运行态;正式 Match3D 公开作品仍走 server runtime adapter。
+- 背景:本轮抓大鹅资源管线曾生成一套官方静态 demo,用于验证生图、切图和运行态资源闭环,但该 demo 已被移除,不再作为发现页入口。
+- 决策:发现页不再挂载前端固定官方抓大鹅 demo;公开卡片、作品号搜索、详情页和运行态启动全部来自后端真实 profile / gallery 投影,正式作品统一走 server runtime adapter。
+- 影响范围:`src/components/platform-entry/PlatformEntryFlowShellImpl.tsx`、`src/components/rpg-entry/RpgEntryHomeView.tsx`、原前端 demo 数据文件(已删除)、Match3D 相关测试与原静态资源目录(已删除)。
+- 验证方式:发现页不再出现原固定 demo;Match3D 公共详情只从真实后端作品数据读取。
- 关联文档:`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`。
## 2026-05-25 抓大鹅运行态 HUD 收敛为拼图同款低遮挡样式
diff --git a/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md b/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md
index d427a240..4eeca38c 100644
--- a/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md
+++ b/docs/【玩法创作】平台入口与玩法链路-2026-05-15.md
@@ -228,7 +228,7 @@ RPG / 拼图等运行态存档仍以 `/api/profile/save-archives` 的后端列
- 抓大鹅运行态不渲染右上角设置入口,也不在局内直接暴露重新开始按钮;结算弹层仍保留结果态的再来一局动作。
- 高 DPR 移动端 WebGL canvas 必须锁定 CSS 尺寸,避免右下溢出。
-发现页可挂载官方抓大鹅静态 demo,用于验证生图、切图和运行态资源闭环。当前 demo profile 固定为 `match3d-demo-20260525`,公开作品号为 `M3-20260525`,静态资源位于 `public/match3d-demo/undersea-candy-market/`;公开卡片、作品号搜索和详情启动都走平台现有公开作品详情,不新建页面。demo 运行态使用前端本地 `createLocalMatch3DRuntimeAdapter`,不调用正式 Match3D runtime 后端、不新增 SpacetimeDB schema,也不写正式作品统计;后续若要把 demo 资源转成正式公开作品,必须改为后端 profile / gallery 投影真相后再接正式 runtime。
+发现页不再挂载前端固定官方抓大鹅静态 demo;公开卡片、作品号搜索、详情页和运行态启动只能来自后端真实 profile / gallery 投影。正式公开作品统一走 server runtime adapter,前端不得再用本地 demo profile 绕过后端统计和运行态链路。
## 视觉小说
diff --git a/public/match3d-demo/undersea-candy-market/background.png b/public/match3d-demo/undersea-candy-market/background.png
deleted file mode 100644
index 06764c39..00000000
Binary files a/public/match3d-demo/undersea-candy-market/background.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-01.png
deleted file mode 100644
index 67773c2a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-02.png
deleted file mode 100644
index c54a7a31..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-03.png
deleted file mode 100644
index 18698bcd..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-04.png
deleted file mode 100644
index e7457b08..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-05.png
deleted file mode 100644
index d41a367f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-01/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-01.png
deleted file mode 100644
index 91be1458..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-02.png
deleted file mode 100644
index f63c07f9..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-03.png
deleted file mode 100644
index ea63913b..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-04.png
deleted file mode 100644
index d794113a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-05.png
deleted file mode 100644
index 1ca654a8..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-02/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-01.png
deleted file mode 100644
index 36bd5018..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-02.png
deleted file mode 100644
index d7c5b6de..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-03.png
deleted file mode 100644
index 342bfdc3..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-04.png
deleted file mode 100644
index 53df10fd..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-05.png
deleted file mode 100644
index 34209763..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-03/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-01.png
deleted file mode 100644
index 15b3d3a7..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-02.png
deleted file mode 100644
index 143b2e1a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-03.png
deleted file mode 100644
index 42e30771..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-04.png
deleted file mode 100644
index 2a255bfd..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-05.png
deleted file mode 100644
index 86540e77..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-04/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-01.png
deleted file mode 100644
index aa029a38..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-02.png
deleted file mode 100644
index b1967dfc..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-03.png
deleted file mode 100644
index e040cca0..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-04.png
deleted file mode 100644
index 8c144659..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-05.png
deleted file mode 100644
index 7f3a1a4a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-05/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-01.png
deleted file mode 100644
index de0ec31e..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-02.png
deleted file mode 100644
index a4c02a82..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-03.png
deleted file mode 100644
index 3374aa7f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-04.png
deleted file mode 100644
index 6e01f5a4..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-05.png
deleted file mode 100644
index d31e82dc..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-06/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-01.png
deleted file mode 100644
index ea3629a8..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-02.png
deleted file mode 100644
index 289752a5..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-03.png
deleted file mode 100644
index 13f1641f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-04.png
deleted file mode 100644
index f157cc56..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-05.png
deleted file mode 100644
index 52f6d48d..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-07/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-01.png
deleted file mode 100644
index 5a15a321..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-02.png
deleted file mode 100644
index be8d0f52..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-03.png
deleted file mode 100644
index 5fcfba72..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-04.png
deleted file mode 100644
index e02c8b76..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-05.png
deleted file mode 100644
index 28cb6b4a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-08/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-01.png
deleted file mode 100644
index 7a506040..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-02.png
deleted file mode 100644
index 550a5434..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-03.png
deleted file mode 100644
index f11e249b..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-04.png
deleted file mode 100644
index ac3450d3..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-05.png
deleted file mode 100644
index f28a51eb..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-09/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-01.png
deleted file mode 100644
index c1b0f126..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-02.png
deleted file mode 100644
index 7e94a7cd..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-03.png
deleted file mode 100644
index 8687dcdf..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-04.png
deleted file mode 100644
index c8db5f3d..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-05.png
deleted file mode 100644
index baed94e9..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-10/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-01.png
deleted file mode 100644
index 1657cda2..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-02.png
deleted file mode 100644
index 8ed07b3f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-03.png
deleted file mode 100644
index 15529207..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-04.png
deleted file mode 100644
index 2a86bdff..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-05.png
deleted file mode 100644
index 287c5062..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-11/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-01.png
deleted file mode 100644
index b4bec1b1..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-02.png
deleted file mode 100644
index bc9a5efc..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-03.png
deleted file mode 100644
index f33ac7a1..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-04.png
deleted file mode 100644
index 6aef21e4..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-05.png
deleted file mode 100644
index 28ccfebd..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-12/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-01.png
deleted file mode 100644
index b96f8659..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-02.png
deleted file mode 100644
index cab8dcce..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-03.png
deleted file mode 100644
index e6c596b5..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-04.png
deleted file mode 100644
index de19c617..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-05.png
deleted file mode 100644
index 2a97686e..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-13/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-01.png
deleted file mode 100644
index a85d8846..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-02.png
deleted file mode 100644
index 89700c47..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-03.png
deleted file mode 100644
index 93d5a24e..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-04.png
deleted file mode 100644
index 306f389f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-05.png
deleted file mode 100644
index b2e15f9c..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-14/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-01.png
deleted file mode 100644
index e0e4c830..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-02.png
deleted file mode 100644
index 5b2075bc..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-03.png
deleted file mode 100644
index 0ec2990e..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-04.png
deleted file mode 100644
index 9f67b3c2..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-05.png
deleted file mode 100644
index abac6fda..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-15/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-01.png
deleted file mode 100644
index 2ffb76b5..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-02.png
deleted file mode 100644
index 905fbcae..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-03.png
deleted file mode 100644
index 8088e492..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-04.png
deleted file mode 100644
index 7bcf8ed3..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-05.png
deleted file mode 100644
index 0a92a912..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-16/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-01.png
deleted file mode 100644
index 68414718..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-02.png
deleted file mode 100644
index 8ab28c8d..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-03.png
deleted file mode 100644
index f010a827..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-04.png
deleted file mode 100644
index 2d9d8dda..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-05.png
deleted file mode 100644
index 6b048f4d..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-17/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-01.png
deleted file mode 100644
index 09fb23c1..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-02.png
deleted file mode 100644
index 8f69247a..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-03.png
deleted file mode 100644
index ed575181..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-04.png
deleted file mode 100644
index ab399979..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-05.png
deleted file mode 100644
index ff5820dc..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-18/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-01.png
deleted file mode 100644
index 19b53c51..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-02.png
deleted file mode 100644
index 6f114282..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-03.png
deleted file mode 100644
index 806861f8..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-04.png
deleted file mode 100644
index 3b1c5aca..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-05.png
deleted file mode 100644
index e08a962e..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-19/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-01.png b/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-01.png
deleted file mode 100644
index 1f93d6b0..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-01.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-02.png b/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-02.png
deleted file mode 100644
index 9f208acf..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-02.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-03.png b/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-03.png
deleted file mode 100644
index 8cf39682..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-03.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-04.png b/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-04.png
deleted file mode 100644
index 1b16d126..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-04.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-05.png b/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-05.png
deleted file mode 100644
index a85ff45b..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-slices/item-20/view-05.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/item-spritesheet.png b/public/match3d-demo/undersea-candy-market/item-spritesheet.png
deleted file mode 100644
index fc4a95ea..00000000
Binary files a/public/match3d-demo/undersea-candy-market/item-spritesheet.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/level-scene.png b/public/match3d-demo/undersea-candy-market/level-scene.png
deleted file mode 100644
index 256562ef..00000000
Binary files a/public/match3d-demo/undersea-candy-market/level-scene.png and /dev/null differ
diff --git a/public/match3d-demo/undersea-candy-market/ui-spritesheet.png b/public/match3d-demo/undersea-candy-market/ui-spritesheet.png
deleted file mode 100644
index b096ea0f..00000000
Binary files a/public/match3d-demo/undersea-candy-market/ui-spritesheet.png and /dev/null differ
diff --git a/src/components/platform-entry/PlatformEntryFlowShellImpl.tsx b/src/components/platform-entry/PlatformEntryFlowShellImpl.tsx
index dc7ce515..3409dc1a 100644
--- a/src/components/platform-entry/PlatformEntryFlowShellImpl.tsx
+++ b/src/components/platform-entry/PlatformEntryFlowShellImpl.tsx
@@ -108,12 +108,6 @@ import type {
VisualNovelWorkSummary,
} from '../../../packages/shared/src/contracts/visualNovel';
import { buildCustomWorldPlayableCharacters } from '../../data/characterPresets';
-import {
- MATCH3D_DEMO_GALLERY_CARD,
- MATCH3D_DEMO_PROFILE_ID,
- MATCH3D_DEMO_WORK_PROFILE,
- isMatch3DDemoProfileId,
-} from '../../data/match3dDemoGalleryCard';
import {
buildPublicWorkStagePath,
pushAppHistoryPath,
@@ -198,10 +192,7 @@ import {
JumpHopWorkspaceCreateRequest,
} from '../../services/jump-hop/jumpHopClient';
import { match3dCreationClient } from '../../services/match3d-creation';
-import {
- createLocalMatch3DRuntimeAdapter,
- createServerMatch3DRuntimeAdapter,
-} from '../../services/match3d-runtime';
+import { createServerMatch3DRuntimeAdapter } from '../../services/match3d-runtime';
import {
deleteMatch3DWork,
getMatch3DWorkDetail,
@@ -4332,9 +4323,6 @@ export function PlatformEntryFlowShellImpl({
}
return '服务端预览';
}, [agentResultPreview]);
- const match3dDemoProfile = MATCH3D_DEMO_WORK_PROFILE;
- const match3dDemoGalleryCard = MATCH3D_DEMO_GALLERY_CARD;
-
const featuredGalleryEntries = useMemo(() => {
const bigFishPublicEntries = isBigFishCreationVisible
? bigFishGalleryEntries.map(mapBigFishWorkToPlatformGalleryCard)
@@ -4373,7 +4361,6 @@ export function PlatformEntryFlowShellImpl({
[
...bigFishPublicEntries,
...match3dPublicEntries,
- match3dDemoGalleryCard,
...puzzlePublicEntries,
...barkBattlePublicEntries,
...squareHolePublicEntries,
@@ -4398,7 +4385,6 @@ export function PlatformEntryFlowShellImpl({
squareHoleGalleryEntries,
visualNovelGalleryEntries,
woodenFishGalleryEntries,
- match3dDemoGalleryCard,
]);
const latestGalleryEntries = useMemo(
() =>
@@ -4409,7 +4395,6 @@ export function PlatformEntryFlowShellImpl({
? bigFishGalleryEntries.map(mapBigFishWorkToPlatformGalleryCard)
: []),
...match3dGalleryEntries.map(mapMatch3DWorkToPublicWorkDetail),
- match3dDemoGalleryCard,
...puzzleGalleryEntries.map(mapPuzzleWorkToPlatformGalleryCard),
...barkBattleGalleryEntries.map(mapBarkBattleWorkToPlatformGalleryCard),
...jumpHopGalleryEntries.map(mapJumpHopWorkToPlatformGalleryCard),
@@ -4451,7 +4436,6 @@ export function PlatformEntryFlowShellImpl({
barkBattleGalleryEntries,
barkBattleWorks,
woodenFishGalleryEntries,
- match3dDemoGalleryCard,
],
);
const recommendRuntimeEntries = useMemo(() => {
@@ -4459,9 +4443,7 @@ export function PlatformEntryFlowShellImpl({
filterGeneralPublicWorks([
...featuredGalleryEntries,
...latestGalleryEntries,
- ])
- .filter((entry) => !isMatch3DDemoProfileId(entry.profileId))
- .forEach((entry) => {
+ ]).forEach((entry) => {
entryMap.set(getPlatformPublicGalleryEntryKey(entry), entry);
});
return Array.from(entryMap.values());
@@ -5005,20 +4987,9 @@ export function PlatformEntryFlowShellImpl({
() => createServerMatch3DRuntimeAdapter(),
[],
);
- const match3dDemoRuntimeAdapter = useMemo(
- () =>
- createLocalMatch3DRuntimeAdapter({
- clearCount: 21,
- profileId: MATCH3D_DEMO_PROFILE_ID,
- }),
- [],
- );
const resolveMatch3DRuntimeAdapter = useCallback(
- (profileId: string | null | undefined) =>
- isMatch3DDemoProfileId(profileId)
- ? match3dDemoRuntimeAdapter
- : match3dRuntimeAdapter,
- [match3dDemoRuntimeAdapter, match3dRuntimeAdapter],
+ (_profileId: string | null | undefined) => match3dRuntimeAdapter,
+ [match3dRuntimeAdapter],
);
const match3dFlow = usePlatformCreationAgentFlowController<
Match3DAgentSessionSnapshot,
@@ -9690,11 +9661,9 @@ export function PlatformEntryFlowShellImpl({
setMatch3DError(null);
try {
- const isDemoProfile = isMatch3DDemoProfileId(profile.profileId);
let runtimeProfile: Match3DWorkProfile | Match3DWorkSummary =
- isDemoProfile ? match3dDemoProfile : profile;
+ profile;
if (
- !isDemoProfile &&
(!hasMatch3DRuntimeAsset(profile.generatedItemAssets) ||
!hasMatch3DRuntimeBackgroundAsset(profile))
) {
@@ -9775,7 +9744,6 @@ export function PlatformEntryFlowShellImpl({
},
[
isMatch3DBusy,
- match3dDemoProfile,
authUi,
match3dFlow,
resolveMatch3DErrorMessage,
@@ -11556,11 +11524,8 @@ export function PlatformEntryFlowShellImpl({
try {
const entries =
match3dGalleryEntries.length > 0
- ? [...match3dGalleryEntries, match3dDemoProfile]
- : await refreshMatch3DGallery().then((items) => [
- ...items,
- match3dDemoProfile,
- ]);
+ ? match3dGalleryEntries
+ : await refreshMatch3DGallery();
const matchedEntry = entries.find(
(entry) => entry.profileId === profileId,
);
@@ -11580,7 +11545,6 @@ export function PlatformEntryFlowShellImpl({
},
[
match3dGalleryEntries,
- match3dDemoProfile,
openPublicWorkDetail,
refreshMatch3DGallery,
resolveMatch3DErrorMessage,
@@ -14138,11 +14102,8 @@ export function PlatformEntryFlowShellImpl({
const tryOpenMatch3DGalleryEntry = async () => {
const entries =
match3dGalleryEntries.length > 0
- ? [...match3dGalleryEntries, match3dDemoProfile]
- : await refreshMatch3DGallery().then((items) => [
- ...items,
- match3dDemoProfile,
- ]);
+ ? match3dGalleryEntries
+ : await refreshMatch3DGallery();
const matchedEntry = entries.find((entry) => {
const detailEntry = mapMatch3DWorkToPublicWorkDetail(entry);
return (
@@ -14559,7 +14520,6 @@ export function PlatformEntryFlowShellImpl({
refreshBigFishGallery,
resolveBigFishErrorMessage,
setBigFishError,
- match3dDemoProfile,
],
);
diff --git a/src/components/rpg-entry/RpgEntryFlowShell.agent.interaction.test.tsx b/src/components/rpg-entry/RpgEntryFlowShell.agent.interaction.test.tsx
index 5edb2388..e1641ac3 100644
--- a/src/components/rpg-entry/RpgEntryFlowShell.agent.interaction.test.tsx
+++ b/src/components/rpg-entry/RpgEntryFlowShell.agent.interaction.test.tsx
@@ -84,7 +84,6 @@ import {
} from '../../services/edutainment-baby-object';
import { match3dCreationClient } from '../../services/match3d-creation';
import {
- createLocalMatch3DRuntimeAdapter,
createServerMatch3DRuntimeAdapter,
} from '../../services/match3d-runtime';
import {
@@ -674,7 +673,6 @@ vi.mock('../../services/match3dGeneratedModelCache', () => ({
}));
const match3dRuntimeServiceMocks = vi.hoisted(() => ({
- createLocalMatch3DRuntimeAdapter: vi.fn(),
createServerMatch3DRuntimeAdapter: vi.fn(),
}));
@@ -687,15 +685,6 @@ const match3dServerRuntimeAdapterMock = vi.hoisted(() => ({
stopRun: vi.fn(),
}));
-const match3dLocalRuntimeAdapterMock = vi.hoisted(() => ({
- clickItem: vi.fn(),
- finishTimeUp: vi.fn(),
- getRun: vi.fn(),
- restartRun: vi.fn(),
- startRun: vi.fn(),
- stopRun: vi.fn(),
-}));
-
vi.mock('../../services/match3d-runtime', async () => {
const actual = await vi.importActual<
typeof import('../../services/match3d-runtime')
@@ -2405,9 +2394,6 @@ beforeEach(() => {
vi.mocked(createServerMatch3DRuntimeAdapter).mockReturnValue(
match3dServerRuntimeAdapterMock,
);
- vi.mocked(createLocalMatch3DRuntimeAdapter).mockReturnValue(
- match3dLocalRuntimeAdapterMock,
- );
match3dServerRuntimeAdapterMock.startRun.mockRejectedValue(
new Error('未启动抓大鹅运行态'),
);
@@ -2423,21 +2409,6 @@ beforeEach(() => {
match3dServerRuntimeAdapterMock.stopRun.mockResolvedValue({
run: buildMockMatch3DRun('match3d-profile-stopped'),
});
- match3dLocalRuntimeAdapterMock.startRun.mockResolvedValue({
- run: buildMockMatch3DRun('match3d-demo-20260525'),
- });
- match3dLocalRuntimeAdapterMock.clickItem.mockRejectedValue(
- new Error('未执行本地抓大鹅点击'),
- );
- match3dLocalRuntimeAdapterMock.restartRun.mockResolvedValue({
- run: buildMockMatch3DRun('match3d-demo-20260525'),
- });
- match3dLocalRuntimeAdapterMock.finishTimeUp.mockResolvedValue({
- run: buildMockMatch3DRun('match3d-demo-20260525'),
- });
- match3dLocalRuntimeAdapterMock.stopRun.mockResolvedValue({
- run: buildMockMatch3DRun('match3d-demo-20260525'),
- });
window.history.replaceState(null, '', '/');
window.sessionStorage.clear();
window.localStorage.clear();
@@ -8390,38 +8361,6 @@ test('public code search opens a published Match3D work by M3 code and starts ru
expect(getRpgEntryWorldGalleryDetailByCode).not.toHaveBeenCalled();
});
-test('public code search opens the local Match3D demo and starts local runtime', async () => {
- const user = userEvent.setup();
-
- vi.mocked(listMatch3DGallery).mockResolvedValue({ items: [] });
-
- render();
- await openDiscoverHub(user);
-
- const searchInput =
- await screen.findByPlaceholderText('搜索作品号、名称、作者、描述');
- await user.type(searchInput, 'M3-20260525');
- await user.click(screen.getByRole('button', { name: '搜索' }));
-
- expect(await screen.findByText('详情')).toBeTruthy();
- expect(screen.getByText('海底糖果集市')).toBeTruthy();
- await user.click(screen.getByRole('button', { name: '启动' }));
-
- await waitFor(() => {
- expect(match3dLocalRuntimeAdapterMock.startRun).toHaveBeenCalledWith(
- 'match3d-demo-20260525',
- {},
- );
- });
- expect(match3dServerRuntimeAdapterMock.startRun).not.toHaveBeenCalled();
- expect(getMatch3DWorkDetail).not.toHaveBeenCalledWith(
- 'match3d-demo-20260525',
- );
- expect(
- await screen.findByText('抓大鹅运行态:match3d-run-match3d-demo-20260525'),
- ).toBeTruthy();
-});
-
test('published Match3D runtime receives persisted generated models', async () => {
const user = userEvent.setup();
const match3dWork: Match3DWorkSummary = {
diff --git a/src/components/rpg-entry/RpgEntryHomeView.tsx b/src/components/rpg-entry/RpgEntryHomeView.tsx
index abba2b10..8bcbe2b1 100644
--- a/src/components/rpg-entry/RpgEntryHomeView.tsx
+++ b/src/components/rpg-entry/RpgEntryHomeView.tsx
@@ -76,7 +76,6 @@ import type {
WechatMiniProgramPayParams,
WechatNativePayment,
} from '../../../packages/shared/src/contracts/runtime';
-import { isMatch3DDemoProfileId } from '../../data/match3dDemoGalleryCard';
import type { HydratedSavedGameSnapshot } from '../../persistence/runtimeSnapshotTypes';
import { buildPublicWorkDetailUrl } from '../../routing/appPageRoutes';
import type { AuthUser } from '../../services/authService';
@@ -4296,19 +4295,13 @@ export function RpgEntryHomeView({
return;
}
- const firstCategoryGroup =
- categoryGroups.find((group) =>
- group.entries.some((entry) => !isMatch3DDemoProfileId(entry.profileId)),
- ) ?? categoryGroups[0];
+ const firstCategoryGroup = categoryGroups[0];
const selectedCategoryGroup =
categoryGroups.find((group) => group.tag === selectedCategoryTag) ?? null;
if (
firstCategoryGroup &&
(!selectedCategoryGroup ||
(!hasManualCategoryTagSelectionRef.current &&
- selectedCategoryGroup.entries.every((entry) =>
- isMatch3DDemoProfileId(entry.profileId),
- ) &&
firstCategoryGroup.tag !== selectedCategoryGroup.tag))
) {
setSelectedCategoryTag(firstCategoryGroup.tag);
diff --git a/src/components/rpg-entry/rpgEntryWorldPresentation.test.ts b/src/components/rpg-entry/rpgEntryWorldPresentation.test.ts
index 27f8a848..5c39a03b 100644
--- a/src/components/rpg-entry/rpgEntryWorldPresentation.test.ts
+++ b/src/components/rpg-entry/rpgEntryWorldPresentation.test.ts
@@ -10,7 +10,6 @@ import {
formatPlatformWorldTime,
isBarkBattleGalleryEntry,
isEdutainmentGalleryEntry,
- isMatch3DGalleryEntry,
isVisualNovelGalleryEntry,
isWoodenFishGalleryEntry,
mapBabyObjectMatchDraftToPlatformGalleryCard,
@@ -22,7 +21,6 @@ import {
resolvePlatformPublicWorkCode,
resolvePlatformWorldFallbackCoverImage,
} from './rpgEntryWorldPresentation';
-import { buildMatch3DDemoGalleryCard } from '../../data/match3dDemoGalleryCard';
test('formatPlatformWorldTime formats backend seconds timestamp text as date', () => {
expect(formatPlatformWorldTime('1777110165.990127Z')).toBe('2026-04-25');
@@ -80,24 +78,6 @@ test('platform public cards use play type reference images as cover fallback', (
);
});
-test('builds local Match3D demo gallery card with generated runtime assets intact', () => {
- const card = buildMatch3DDemoGalleryCard();
-
- expect(isMatch3DGalleryEntry(card)).toBe(true);
- expect(card.publicWorkCode).toBe('M3-20260525');
- expect(resolvePlatformPublicWorkCode(card)).toBe('M3-20260525');
- expect(card.coverImageSrc).toBe(
- '/match3d-demo/undersea-candy-market/level-scene.png',
- );
- expect(card.generatedBackgroundAsset?.uiSpritesheetImageSrc).toBe(
- '/match3d-demo/undersea-candy-market/ui-spritesheet.png',
- );
- expect(card.generatedBackgroundAsset?.containerImageSrc).toBeNull();
- expect(card.generatedItemAssets?.[0]?.imageViews?.[0]?.imageSrc).toBe(
- '/match3d-demo/undersea-candy-market/item-slices/item-01/view-01.png',
- );
-});
-
test('buildPuzzleWorkCoverSlides prefers each level formal image', () => {
const slides = buildPuzzleWorkCoverSlides({
workId: 'work-1',
diff --git a/src/data/match3dDemoGalleryCard.ts b/src/data/match3dDemoGalleryCard.ts
deleted file mode 100644
index 533f6220..00000000
--- a/src/data/match3dDemoGalleryCard.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-import type {
- Match3DGeneratedBackgroundAsset,
- Match3DGeneratedItemAsset,
- Match3DWorkProfile,
-} from '../../packages/shared/src/contracts/match3dWorks';
-import { buildMatch3DPublicWorkCode } from '../services/publicWorkCode';
-import type { PlatformMatch3DGalleryCard } from '../components/rpg-entry/rpgEntryWorldPresentation';
-
-export const MATCH3D_DEMO_PROFILE_ID = 'match3d-demo-20260525';
-export const MATCH3D_DEMO_WORK_ID = 'match3d-demo-undersea-candy-market';
-export const MATCH3D_DEMO_PUBLIC_WORK_CODE =
- buildMatch3DPublicWorkCode(MATCH3D_DEMO_PROFILE_ID);
-
-const MATCH3D_DEMO_ASSET_BASE = '/match3d-demo/undersea-candy-market';
-const MATCH3D_DEMO_PUBLISHED_AT = '2026-05-25T12:04:17.000+08:00';
-const MATCH3D_DEMO_ITEM_NAMES = [
- '海星糖',
- '贝壳糖',
- '珊瑚软糖',
- '珍珠泡泡糖',
- '海马棒棒糖',
- '鱼尾果冻',
- '水母棉花糖',
- '螺旋饼干',
- '海螺巧克力',
- '贝珠马卡龙',
- '珊瑚杯糕',
- '星砂软糖',
- '小鱼糖块',
- '海草曲奇',
- '泡泡杯',
- '蓝莓珊瑚糖',
- '迷你糖罐',
- '珍珠饼',
- '海浪甜甜圈',
- '贝壳蛋糕',
-] as const;
-
-export const MATCH3D_DEMO_BACKGROUND_ASSET: Match3DGeneratedBackgroundAsset = {
- prompt: '海底糖果集市抓大鹅关卡背景',
- levelScenePrompt: '海底糖果集市完整关卡画面',
- levelSceneImageSrc: `${MATCH3D_DEMO_ASSET_BASE}/level-scene.png`,
- imageSrc: `${MATCH3D_DEMO_ASSET_BASE}/background.png`,
- uiSpritesheetPrompt: '海底糖果集市 UI 透明 spritesheet',
- uiSpritesheetImageSrc: `${MATCH3D_DEMO_ASSET_BASE}/ui-spritesheet.png`,
- itemSpritesheetPrompt: '海底糖果集市物品 10x10 透明 spritesheet',
- itemSpritesheetImageSrc: `${MATCH3D_DEMO_ASSET_BASE}/item-spritesheet.png`,
- containerImageSrc: null,
- status: 'image_ready',
-};
-
-export function buildMatch3DDemoGeneratedItemAssets() {
- return MATCH3D_DEMO_ITEM_NAMES.map(
- (itemName, itemIndex) => {
- const itemNumber = itemIndex + 1;
- const paddedItemNumber = String(itemNumber).padStart(2, '0');
- return {
- itemId: `match3d-item-${itemNumber}`,
- itemName,
- itemSize:
- itemIndex < 4 ? '大' : itemIndex < 14 ? '中' : '小',
- imageViews: Array.from({ length: 5 }, (_, viewIndex) => {
- const viewNumber = viewIndex + 1;
- return {
- viewId: `view-${String(viewNumber).padStart(2, '0')}`,
- viewIndex: viewNumber,
- imageSrc: `${MATCH3D_DEMO_ASSET_BASE}/item-slices/item-${paddedItemNumber}/view-${String(viewNumber).padStart(2, '0')}.png`,
- };
- }),
- backgroundAsset:
- itemIndex === 0 ? MATCH3D_DEMO_BACKGROUND_ASSET : null,
- status: 'image_ready',
- };
- },
- );
-}
-
-export function buildMatch3DDemoWorkProfile(): Match3DWorkProfile {
- return {
- workId: MATCH3D_DEMO_WORK_ID,
- profileId: MATCH3D_DEMO_PROFILE_ID,
- ownerUserId: 'official-match3d-demo',
- sourceSessionId: 'match3d-demo-session-20260525',
- gameName: '海底糖果集市',
- themeText: '海底糖果集市',
- summary: '在海底糖果集市里把同款甜点抓成三消。',
- tags: ['抓大鹅', '海底糖果', '官方示例'],
- coverImageSrc: `${MATCH3D_DEMO_ASSET_BASE}/level-scene.png`,
- referenceImageSrc: null,
- clearCount: 21,
- difficulty: 8,
- publicationStatus: 'published',
- playCount: 0,
- updatedAt: MATCH3D_DEMO_PUBLISHED_AT,
- publishedAt: MATCH3D_DEMO_PUBLISHED_AT,
- publishReady: true,
- generationStatus: 'ready',
- backgroundPrompt: MATCH3D_DEMO_BACKGROUND_ASSET.prompt,
- backgroundImageSrc: MATCH3D_DEMO_BACKGROUND_ASSET.imageSrc,
- backgroundImageObjectKey: null,
- generatedBackgroundAsset: MATCH3D_DEMO_BACKGROUND_ASSET,
- generatedItemAssets: buildMatch3DDemoGeneratedItemAssets(),
- };
-}
-
-export function buildMatch3DDemoGalleryCard(): PlatformMatch3DGalleryCard {
- const profile = buildMatch3DDemoWorkProfile();
- return {
- sourceType: 'match3d',
- workId: profile.workId,
- profileId: profile.profileId,
- sourceSessionId: profile.sourceSessionId,
- publicWorkCode: MATCH3D_DEMO_PUBLIC_WORK_CODE,
- ownerUserId: profile.ownerUserId,
- authorDisplayName: '官方示例',
- worldName: profile.gameName,
- subtitle: '抓大鹅 · 资源管线示例',
- summaryText: profile.summary,
- coverImageSrc: profile.coverImageSrc ?? null,
- themeTags: profile.tags,
- playCount: profile.playCount,
- remixCount: 0,
- likeCount: 0,
- recentPlayCount7d: 0,
- visibility: 'published',
- publishedAt: profile.publishedAt ?? null,
- updatedAt: profile.updatedAt,
- backgroundPrompt: profile.backgroundPrompt ?? null,
- backgroundImageSrc: profile.backgroundImageSrc ?? null,
- backgroundImageObjectKey: profile.backgroundImageObjectKey ?? null,
- generatedBackgroundAsset: profile.generatedBackgroundAsset ?? null,
- generatedItemAssets: profile.generatedItemAssets ?? [],
- };
-}
-
-export const MATCH3D_DEMO_WORK_PROFILE = buildMatch3DDemoWorkProfile();
-export const MATCH3D_DEMO_GALLERY_CARD = buildMatch3DDemoGalleryCard();
-
-export function isMatch3DDemoProfileId(profileId: string | null | undefined) {
- return profileId?.trim() === MATCH3D_DEMO_PROFILE_ID;
-}
diff --git a/src/services/match3d-runtime/match3dRuntimeAdapter.test.ts b/src/services/match3d-runtime/match3dRuntimeAdapter.test.ts
index ac40af0e..5a1951d4 100644
--- a/src/services/match3d-runtime/match3dRuntimeAdapter.test.ts
+++ b/src/services/match3d-runtime/match3dRuntimeAdapter.test.ts
@@ -117,15 +117,6 @@ test('local Match3D runtime adapter exposes the same runtime seam as the server
expect(stopped.run.status).toBe('Stopped');
});
-test('local Match3D runtime adapter keeps the requested profile id on restart', async () => {
- const adapter = createLocalMatch3DRuntimeAdapter({ clearCount: 1 });
- const started = await adapter.startRun('match3d-demo-20260525');
- const restarted = await adapter.restartRun(started.run.runId);
-
- expect(started.run.profileId).toBe('match3d-demo-20260525');
- expect(restarted.run.profileId).toBe('match3d-demo-20260525');
-});
-
test('local Match3D runtime adapter keeps authority run local to the adapter', async () => {
const adapter = createLocalMatch3DRuntimeAdapter({ initialRun: startLocalMatch3DRun(1) });
const first = await adapter.getRun('unused-run-id');