Files
short-drama-agent-front/design-qa.md
T
GouJ b4e1e6873c fix: 优化移动端全屏侧栏
移动端侧栏改为全屏固定导航,关闭后释放全部正文宽度,并统一使用菜单图标入口。
2026-09-08 18:14:15 +08:00

3.9 KiB
Raw Blame History

Design QA

  • Source visual truth: /workspace/scratch/6e52996114b8/upload/f7dbeb9e-a47c-4e09-9b5c-c5f885b0d708.png
  • Source pixel dimensions: 543 × 978.
  • Browser-rendered open-state comparison: /workspace/scratch/mobile-sidebar-open-comparison-20260908.jpg
  • Browser-rendered closed-state comparison: /workspace/scratch/mobile-sidebar-closed-comparison-20260908.jpg
  • Comparison screenshot dimensions: 1363 × 936.
  • Implementation CSS viewport: 543 × 936, device scale factor 1.
  • Density normalization: source and implementation are both displayed at 543px CSS width; the source's bottom 42px is outside the comparison viewport and contains no sidebar structure needed for this review.
  • State: dark-theme project list, with the mobile navigation captured both open and closed.

Full-view comparison evidence

The source shows a permanently visible 48px navigation rail that reduces the project-content width. The revised closed state removes that rail entirely: browser geometry reports the main region at 543px, equal to the 543px iframe viewport. The top-left control is now a menu icon and the project list uses the full available width.

The revised open state shows the same navigation as a 543 × 936 fixed full-screen layer. Brand, navigation items and the bottom backend entry remain vertically separated, while an explicit close icon is available in the navigation header.

Focused region comparison evidence

A separate crop was not needed because both states are rendered at 1:1 CSS width in the full-view comparison and the header controls, navigation item, content boundary and footer action remain readable.

Required fidelity surfaces

  • Fonts and typography: existing font family, sizes, weights and truncation behavior are preserved. The drawer uses the same brand and menu typography as the desktop sidebar.
  • Spacing and layout rhythm: the closed state removes the previous 48px content offset. The open state uses the full viewport and preserves the existing header, menu and footer spacing.
  • Colors and visual tokens: the drawer continues to use --app-subtle, existing selected-menu colors and the current dark-theme tokens.
  • Image quality and asset fidelity: no raster assets were added or altered. Menu and close actions use the project's existing Lucide icon package.
  • Copy and content: brand, “我的剧本” and “后端连接” labels are unchanged.

Findings

  • No actionable P0/P1/P2 visual or responsive issues remain.
  • The disconnected local backend produces the expected in-page 502 status in the closed-state project list; it does not affect the navigation layout or interaction.

Primary interactions tested

  • Opened the full-screen navigation from the new menu button.
  • Closed the navigation from its internal close button.
  • Confirmed the hidden navigation is removed from the accessibility tree with aria-hidden and inert.
  • Confirmed the closed-state main content width equals the mobile viewport width.
  • Confirmed desktop behavior remains covered by the existing layout component tests.

Console errors checked

No application-origin console errors were reported. The cloud browser logged only its own extension metadata messages; these are outside the application.

Comparison history

  • Iteration 1: replaced the persistent mobile rail with a fixed full-screen navigation and added the menu/close icon pair.
  • Iteration 2: verified the open state at 543 × 936, then closed it through the internal action and verified the content region expanded to the full 543px viewport width.

Implementation checklist

  • Hide the mobile navigation without reserving horizontal space.
  • Open navigation as a full-screen fixed layer.
  • Replace the top toggle glyph with a menu icon.
  • Provide an internal close control while the top bar is covered.
  • Preserve automatic close on mobile route changes, settings open and Escape.
  • Preserve desktop collapse/expand behavior.

final result: passed