Skip to content

feat(playtest): redesign global asset gallery - #313

Open
huyanxius wants to merge 12 commits into
1024XEngineer:mainfrom
huyanxius:feat/304-playtest-gallery
Open

feat(playtest): redesign global asset gallery#313
huyanxius wants to merge 12 commits into
1024XEngineer:mainfrom
huyanxius:feat/304-playtest-gallery

Conversation

@huyanxius

Copy link
Copy Markdown
Collaborator

本 PR 将全局预览台收敛为紧凑的跨项目造型画廊,并让项目创建入口与预览台空态复用同一套编辑式入口卡。依赖 #299;其合并后本 PR 将收敛为 #304 的独立增量。

Why

/playtest 以装饰性点阵场景和大型项目分区为主,真实可操作资产进入首屏较晚,卡片也缺少项目、动作摘要与可用状态。预览台需要延续项目中心、创作页和工作台的共享视觉语言,同时保持跨项目快速启动的单一职责。

Changes

  • 删除点阵 Hero,将标题统一为“预览台”,首屏优先展示真实资产或明确空态。
  • 将项目大分区收敛为全局造型画廊,并提供轻量项目筛选。
  • 卡片展示所属项目、角色、造型、真实可播放动作摘要、动作数、帧数与可用状态。
  • 有帧造型进入原工作台路由;无帧造型继续可见但不可点击。
  • 抽取 EditorialEntryCard,项目创建入口与预览台空态共享尺寸、圆角、配色、倾斜和 hover 逻辑;两处使用各自素材。

Implementation

  • 继续消费现有 Project、Character、Outfit、Action 与 Frame 数据,不修改实体结构或路由。
  • 只统计含真实帧的动作,保证入口摘要与实际工作台可选动作一致。
  • 保留项目和角色完整分页读取;请求扇出问题不在本 PR 内处理。

Verification

  • npm test -- src/pages/projects/index.test.tsx src/pages/playtest/entry.test.tsx:2 个测试文件、8 项测试通过。
  • npm run typecheck:通过。
  • npx oxfmt --check <changed-files>:涉及文件格式检查通过。
  • npx oxlint <changed-files>:涉及文件静态检查通过。
  • npm run build:通过。
  • git diff --check:通过。
  • 桌面与 390 CSS px 窄屏已在真实浏览器中确认,当前设计已冻结。

Screenshots

Desktop

Playtest entry desktop

Mobile

Playtest entry mobile

Scope

Related Issues

Closes #304
Refs #299
Refs #274

@vercel

vercel Bot commented Aug 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
windup Ready Ready Preview Aug 14, 2026 9:38am

@fennoai fennoai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查结论

完整检查了固定差异中的预览台全局造型画廊、项目筛选与分页读取、可播放动作/帧统计、共享 EditorialEntryCard、项目中心预览,以及认证产品页的共享色彩令牌迁移。相关调用方与工作台模型保持一致,未发现达到反馈阈值的正确性、可访问性或兼容性回归。

验证方面,git diff --check 8821b192c43700083850559eadf7419950c96abc...9b1d808227013ef80e1df1aae79a588cacc4dc53 通过。挂载工作区未安装 node_modules,因此本次无法重新执行 Vitest 与 TypeScript typecheck(vitest/tsc 不可用)。

View job run

The project center needs a calmer asset-first browsing surface.

Render the create entrance, project previews, and empty pixel canvases while resolving real character preview images.

Existing project creation, deletion, pagination, and navigation behavior stays intact.
The redesigned gallery must keep its real API and navigation boundaries explicit.

Cover character preview requests, empty canvases, creation links, deletion, and pagination.

The tests now assert user-visible behavior instead of styling internals.
The workspace heading needs the same concise context used across the product surfaces.

Add the approved tagline directly beneath the existing page title.

No workspace navigation or data-loading behavior changes.
The approved workspace context line should remain part of the rendered heading area.

Assert the tagline alongside the existing navigation behavior.

The focused coverage protects the copy without expanding workspace scope.
@codecov

codecov Bot commented Aug 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.90909% with 5 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
frontend/src/pages/projects/index.tsx 87.87% 1 Missing and 3 partials ⚠️
frontend/src/pages/playtest/entry.tsx 94.73% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Codecov exposed untested project preview fallback branches.

Exercise reference images, first frames, and isolated request failures.

Keep gallery previews resilient without changing production behavior.
Project and Playtest entries need the same visual behavior without duplicated styling.

Extract the editorial entry card with asset-specific artwork and reuse it for project creation.

Both entry points now share sizing, color, tilt, and hover behavior.
The project creation entry must keep its established artwork and accessible link contract.

Assert that the rendered link comes from the shared editorial entry component.

The test protects the project entry while Playtest reuses the same component.
The global Playtest entry should surface real outfits before decorative scene content.

Replace the hero with a filterable cross-project gallery and reuse the shared empty-state entry card.

Cards now expose project context, playable actions, frame totals, and disabled states.
The entry must preserve routing, filtering, pagination, empty states, and truthful playback metadata.

Cover the gallery states and add a zero-frame action fixture that must stay out of playable summaries.

The regression protects both the frozen layout and the workbench playback contract.
Reviewers need stable visual evidence for the frozen Playtest entry design.

Add desktop and narrow-screen captures of the populated global outfit gallery.

The images document the responsive states used for Issue 304 acceptance.
Zero-frame actions are visible metadata but cannot enter Playtest.

Count only actions with real frames in the Workspace outfit summary.

Keep the displayed action total aligned with the playable frame contract.
The shared asset fixture now includes one zero-frame draft action.

Expect character detail and asset library views to render all three actions.

Align both tests with the existing asset display behavior.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(playtest): 重构预览台资产入口与选择体验

1 participant