Files
browser/openspec/changes/fix-server-card-action-menu/tasks.md
T
2026-07-15 19:43:06 +08:00

2.1 KiB

1. Server Card Interaction Fix

  • 1.1 Replace the <details> runtime action stack with a compact overlay that is anchored to the trigger and does not reflow the card.
  • 1.2 Close the overlay on outside click, Escape, and action selection.
  • 1.3 Keep runtime action dispatch semantics unchanged.
  • 1.4 Show a runtime task progress dialog after action selection with staged progress, logs, and terminal success/failure state.
  • 1.5 Reuse the same progress dialog from server detail runtime distribution actions.

2. Server Card Readability Fix

  • 2.1 Strengthen .server-card-stat label/value contrast for 玩家, TPS, 延迟, 任务, and placeholder values.
  • 2.2 Preserve the shared black-mecha / magical-girl console visual system and uploaded-background readability.
  • 2.3 Remove misleading whole-card click affordance while keeping explicit detail/menu controls.

3. Verification

  • 3.1 Run focused frontend tests and typecheck.
  • 3.2 Run scripts/check-structure.sh.
  • 3.3 Run openspec validate fix-server-card-action-menu --strict.
  • 3.4 Browser-walkthrough 服务器管理 and verify the menu is compact, card stats are readable, action selection opens the progress dialog, and no metrics/progress/status are covered.

Evidence

  • npm run typecheck passed.
  • npm test -- ConsolePages.test.tsx ServerDetailPage.test.tsx base-css.test.js passed with 22 tests.
  • npm test passed with 68 tests.
  • npm run build passed.
  • go test ./api ./service -run 'Test.*(Run|Distribution|Artifact|ClientManager|Runtime)' -count=1 passed from platform/, proving backend run distribution, artifact download, update, and client-manager paths are implemented.
  • scripts/check-structure.sh passed with structure check passed.
  • openspec validate fix-server-card-action-menu --strict passed. OpenSpec telemetry flush failed with ENOTFOUND edge.openspec.dev, which did not affect validation.
  • Browser walkthrough is still pending because the Browser plugin reported no available browser backends (agent.browsers.list() returned []).