Add padding to the inner combatant list container so the box-shadow glow from the concentration-damage animation renders fully on all sides, preventing clipping by the scrollable parent's implicit overflow-x. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.2 KiB
Tasks: Fix Concentration Shake Glow Clipping
Input: Design documents from /specs/033-fix-concentration-glow-clip/
Prerequisites: plan.md (required), spec.md (required for user stories), research.md, data-model.md, quickstart.md
Tests: No test tasks — this is a CSS-only visual fix. Verification is done via manual inspection per quickstart.md.
Organization: Tasks are grouped by user story to enable independent implementation and testing of each story.
Format: [ID] [P?] [Story] Description
- [P]: Can run in parallel (different files, no dependencies)
- [Story]: Which user story this task belongs to (e.g., US1, US2)
- Include exact file paths in descriptions
Phase 1: Setup
Purpose: No setup needed — existing project, no new dependencies or configuration changes.
(No tasks in this phase)
Phase 2: Foundational (Blocking Prerequisites)
Purpose: No foundational work needed — the fix modifies existing CSS layout only.
(No tasks in this phase)
Phase 3: User Story 1 - Concentration Damage Glow Visible (Priority: P1) MVP
Goal: The concentration-damage glow effect is fully visible on both left and right edges without clipping.
Independent Test: Deal damage to a concentrating creature and verify the purple glow extends fully on all sides without being cut off at container edges.
Implementation for User Story 1
- T001 [US1] Add horizontal padding (
px-2) to the inner combatant list container<div className="flex flex-col pb-2">inapps/web/src/App.tsx(line ~158) so thebox-shadowglow renders within the overflow area instead of being clipped
Checkpoint: At this point, the glow should be fully visible on left and right edges.
Phase 4: User Story 2 - No Layout Side Effects (Priority: P1)
Goal: The padding fix does not introduce horizontal scrollbars, layout shifts, or visual artifacts.
Independent Test: Trigger the animation at desktop and mobile widths (320px+), confirm no horizontal scrollbar appears and no elements shift position.
Implementation for User Story 2
- T002 [US2] Verify at desktop and mobile viewports (320px+) that the padding added in T001 does not cause a horizontal scrollbar or layout shift in
apps/web/src/App.tsx; also verify that multiple concentrating rows animating simultaneously display independent glows without overlap artifacts; adjust padding value if needed
Checkpoint: Animation renders correctly at all viewport widths with no side effects.
Phase 5: Polish & Cross-Cutting Concerns
Purpose: Final validation and quality gates.
- T003 Run
pnpm checkto ensure all quality gates pass (lint, typecheck, tests, coverage) - T004 Run quickstart.md validation steps from
specs/033-fix-concentration-glow-clip/quickstart.md
Dependencies & Execution Order
Phase Dependencies
- Phase 3 (US1): No prerequisites — single file change
- Phase 4 (US2): Depends on T001 completion (verifies T001 doesn't regress)
- Phase 5 (Polish): Depends on T001 and T002 completion
User Story Dependencies
- User Story 1 (P1): Independent — core fix
- User Story 2 (P1): Depends on US1 — verification of no side effects
Within Each User Story
- US1: Single task (T001)
- US2: Single verification task (T002) dependent on T001
Parallel Opportunities
- No parallel opportunities — this is a 1-file, 1-line fix with sequential verification
Implementation Strategy
MVP First (User Story 1 Only)
- Complete T001: Add padding to inner container
- STOP and VALIDATE: Visually verify glow is no longer clipped
- Complete T002: Verify no layout side effects
- Complete T003-T004: Quality gates and quickstart validation
Incremental Delivery
- T001 → Glow fix applied
- T002 → No regressions confirmed
- T003-T004 → Quality gates pass, ready to merge
Notes
- This is a minimal CSS-only fix: one Tailwind class addition to one file
- The root cause is CSS spec behavior:
overflow-y: autoforcesoverflow-x: auto, clippingbox-shadow box-shadowis paint-only and does not affect layout, so padding accommodates the glow without shifting content- If
px-2(8px) is insufficient for the 6px glow spread, increase topx-3(12px)