新增作品详情页「改造这个作品」入口(复制作品 ID/链接 → 客户端粘贴)

- 共创信息卡内新增入口:仅当作品已公开且 forkAuthorization != forbidden 时出现;授权为禁止共创时保持现状不出现
- 交互:点击展开获取方式——可复制的作品 ID 与完整作品链接(/games/detail?id=<gameId>,AGC 解析器接受的形态)+ 操作指引「打开陶泥儿客户端 → 首页『从平台作品开始创作』→ 粘贴」
- 复制反馈复用平台既有 CopyFeedbackButton + useCopyFeedback(统一剪贴板实现与「已复制 / 复制失败」状态)
- 未登录:入口照常出现但显示「登录后可改造」,点击走仓库既有登录门禁(authUi.openLoginModal,与同页「登录后评价」同一做法),不静默隐藏、也不假装可唤起客户端
- 文案与 AGC 侧口径一致:可玩参考 + 素材、参考产物在 reference/<作品ID>/ 目录、成品包没有源码不能直接再次发布;不写「一键复刻工程」
- 不新增路由、不发 API 请求、不动服务端:网页端无法唤起客户端(未注册 deep link),只做「复制 → 粘贴」
- 测试:新增 4 例(公开+非禁止出现入口并可复制、forbidden 不出现、未公开不出现、未登录走登录门禁);并把 M1 遗留的「不提供改造入口」断言改写为新契约
- 样式:.game-fork-remix-* 落在共创信息卡内,窄屏靠网格与 overflow-wrap 收在容器里
This commit is contained in:
2026-10-05 04:22:07 +08:00
parent d89e21ffd5
commit 0d4db90db1
3 changed files with 280 additions and 8 deletions
@@ -435,6 +435,74 @@
.game-detail-info-card .game-fork-lineage-link:hover {
background: rgba(199, 101, 61, 0.12);
}
/*
* 「改造这个作品」:入口 + 展开后的获取方式面板。都在共创信息卡内,
* 窄屏靠网格换行与 `overflow-wrap: anywhere` 收在侧栏里,不产生横向溢出。
*/
.game-detail-info-card .game-fork-remix-link {
justify-self: start;
border: 1px solid var(--platform-accent-strong);
border-radius: 999px;
padding: 0.22rem 0.75rem;
background: rgba(199, 101, 61, 0.12);
color: var(--platform-accent-strong);
font: inherit;
font-size: 0.76rem;
font-weight: 700;
cursor: pointer;
}
.game-detail-info-card .game-fork-remix-link:hover {
background: rgba(199, 101, 61, 0.2);
}
.game-detail-info-card .game-fork-remix-panel {
display: grid;
justify-items: start;
gap: 0.35rem;
width: 100%;
max-width: 100%;
box-sizing: border-box;
border: 1px solid var(--platform-surface-border);
border-radius: 0.6rem;
padding: 0.55rem 0.65rem;
background: var(--platform-surface-muted, rgba(0, 0, 0, 0.02));
font-size: 0.76rem;
line-height: 1.6;
}
.game-detail-info-card .game-fork-remix-steps {
color: var(--platform-text-base);
overflow-wrap: anywhere;
}
.game-detail-info-card .game-fork-remix-value {
min-width: 0;
color: var(--platform-text-soft);
overflow-wrap: anywhere;
}
.game-detail-info-card .game-fork-remix-value code {
color: var(--platform-text-strong);
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
font-size: 0.72rem;
overflow-wrap: anywhere;
}
.game-detail-info-card .game-fork-remix-actions {
display: flex;
flex-wrap: wrap;
gap: 0.35rem;
}
.game-detail-info-card .game-fork-remix-copy {
border: 1px solid var(--platform-surface-border);
border-radius: 999px;
padding: 0.2rem 0.7rem;
background: var(--platform-surface, #fff);
color: var(--platform-text-base);
font: inherit;
font-size: 0.74rem;
font-weight: 600;
cursor: pointer;
}
.game-detail-info-card .game-fork-remix-note {
color: var(--platform-text-soft);
overflow-wrap: anywhere;
}
.game-loading-panel {
display: grid;
min-height: 18rem;