{
if (forkTimerRef.current !== null) {
window.clearTimeout(forkTimerRef.current);
@@ -752,7 +752,7 @@ export function GameLineagePage({
document.removeEventListener('visibilitychange', handOffToClient);
forkHandlersRef.current = null;
setForkNotice(
- '已唤起陶泥儿客户端。若没有自动打开,请用作品 ID 手动 Fork。',
+ '已唤起陶泥儿客户端。若没有自动打开,请用作品 ID 手动开始共创。',
);
setForkFallbackGameId(gameId);
};
@@ -768,7 +768,7 @@ export function GameLineagePage({
document.removeEventListener('visibilitychange', handOffToClient);
forkHandlersRef.current = null;
setForkNotice(
- '没有检测到陶泥儿客户端,已切换为手动方式:复制作品 ID 到客户端 Fork。',
+ '没有检测到陶泥儿客户端,已切换为手动方式:复制作品 ID 到客户端开始共创。',
);
setForkFallbackGameId(gameId);
}, FORK_LAUNCH_FALLBACK_DELAY_MS);
@@ -949,7 +949,7 @@ export function GameLineagePage({
{forkFallbackGameId ? (
onOpenFork(node.gameId)}
>
- Fork 此版本
+ 开始共创此版本
>
diff --git a/src/components/game-distribution/LineageOutlineList.tsx b/src/components/game-distribution/LineageOutlineList.tsx
index d857ee763..686b346f6 100644
--- a/src/components/game-distribution/LineageOutlineList.tsx
+++ b/src/components/game-distribution/LineageOutlineList.tsx
@@ -12,7 +12,7 @@ import type {
* 节点内容复用与画布/血缘链同一个 `LineageNodeContent`(只有一套封面色块与省略规则)。
*
* 语义与画布一致:点击行 = **选中**(高亮祖先链 + 面包屑),行内「打开」= 进详情,
- * 「Fork」= 唤起/降级链路;主干链的导线加粗并用主题色。
+ * 「开始共创」= 唤起/降级链路;主干链的导线加粗并用主题色。
*/
export function LineageOutlineList({
nodes,
diff --git a/src/components/game-distribution/MyGamesPage.test.tsx b/src/components/game-distribution/MyGamesPage.test.tsx
index ee001b650..5eaa91bf5 100644
--- a/src/components/game-distribution/MyGamesPage.test.tsx
+++ b/src/components/game-distribution/MyGamesPage.test.tsx
@@ -801,7 +801,7 @@ test('衍生作品的授权入口改为只读展示(授权继承父作品,
expect(screen.queryByRole('button', { name: '共创授权' })).toBeNull();
});
-test('分类标签按文档口径过滤,并给出总作品数 / 累计被 Fork 次数 / 世代数', async () => {
+test('分类标签按文档口径过滤,并给出总作品数 / 累计被共创次数 / 世代数', async () => {
vi.mocked(listMyGames).mockResolvedValue([
createGame({
id: 'g-original',
@@ -833,9 +833,9 @@ test('分类标签按文档口径过滤,并给出总作品数 / 累计被 Fork
renderPage(createAuthValue());
- // 数据概览:总作品数 + 累计被 Fork 次数(世代数字段缺失 → 该项不渲染)。
+ // 数据概览:总作品数 + 累计被共创次数(世代数字段缺失 → 该项不渲染)。
expect(await screen.findByText('总作品数 3')).toBeTruthy();
- expect(screen.getByText('累计被 Fork 次数 3')).toBeTruthy();
+ expect(screen.getByText('累计被共创次数 3')).toBeTruthy();
expect(screen.queryByText(/累计衍生世代数/u)).toBeNull();
// 卡片上的世代数与子衍生作品数量。
diff --git a/src/components/game-distribution/MyGamesPage.tsx b/src/components/game-distribution/MyGamesPage.tsx
index 12aac0b08..8caca6051 100644
--- a/src/components/game-distribution/MyGamesPage.tsx
+++ b/src/components/game-distribution/MyGamesPage.tsx
@@ -716,7 +716,7 @@ export function MyGamesPage({
总作品数 {games.length}
- 累计被 Fork 次数 {totalForkCount}
+ 累计被共创次数 {totalForkCount}
{totalDerivedGenerations === null ? null : (
diff --git a/src/components/game-distribution/gameDistribution.css b/src/components/game-distribution/gameDistribution.css
index b8921e30d..e0162cee1 100644
--- a/src/components/game-distribution/gameDistribution.css
+++ b/src/components/game-distribution/gameDistribution.css
@@ -2448,7 +2448,7 @@
/*
* 移动端「大纲式缩进树」(默认形态):全宽行 + 左缩进 + 肘形导线,**无横向滚动**。
- * 每行 ≥44px 触控目标;点击行=选中,行内「打开 / Fork」是次要动作。
+ * 每行 ≥44px 触控目标;点击行=选中,行内「打开 / 开始共创」是次要动作。
*/
.lineage-outline {
display: flex;