Files
code-crispies/specs/012-filters-tasks/plan.md

3.1 KiB

Implementation Plan

Objective

Rewrite the 4 CSS Filters lessons in lessons/11-filters.json so tasks describe visual outcomes instead of giving exact CSS code, and validations accept multiple valid answers.

Approach

Follow the same pattern established in issue #9 (colors/box-model rewrite):

  1. Rewrite each task field to describe the desired visual effect
  2. Replace exact-match validations (property_value, contains) with regex validations that accept a range of values
  3. Update validation message fields to give pedagogical hints without revealing answers
  4. Keep description, previewHTML, previewBaseCSS, codePrefix, codeSuffix, and solution unchanged

File Mapping

File Action Description
lessons/11-filters.json modify Rewrite tasks and validations for all 4 lessons

Lesson-by-Lesson Plan

filters-1: Blur Filter

  • Current task: "Blur the background image using filter: blur(4px)."
  • New task: Describe frosted-glass effect, mention blur radius range (2px-8px)
  • Validation: regex matching filter:\s*blur\((2|3|4|5|6|7|8)px\) — accepts 2px through 8px
  • Message: Hint about the filter property and blur() function

filters-2: Grayscale Filter

  • Current task: "Make the image grayscale with filter: grayscale(100%)."
  • New task: Describe removing all color to create a black-and-white effect
  • Validation: regex matching filter:\s*grayscale\(100%\) — grayscale only makes sense at 100% for "fully desaturated"
  • Message: Hint about which filter function removes color

filters-3: Brightness Filter

  • Current task: "Brighten the card with filter: brightness(120%)."
  • New task: Describe making the card appear brighter/more vivid, accept range 110%-150%
  • Validation: regex matching filter:\s*brightness\(1[1-5]0%\) — accepts 110% through 150%
  • Message: Hint about the brightness function and values above 100%

filters-4: Drop Shadow

  • Current task: "Add a drop shadow with filter: drop-shadow(4px 4px 8px gray)."
  • New task: Describe adding a soft shadow behind the star to give it depth
  • Validation: regex matching filter:\s*drop-shadow\( with reasonable offset/blur values
  • Message: Hint about the drop-shadow filter function

Architecture Decisions

  • Use regex validation type (not property_value) to allow multiple acceptable values, consistent with the colors/box-model rewrite
  • Use options: { "caseSensitive": false } on all regex validations for consistency
  • Keep solution fields unchanged as reference answers

Risks

Risk Mitigation
Regex too permissive Test edge cases; only accept pedagogically reasonable values
Regex too restrictive Allow generous ranges; err on the side of accepting creative answers
Breaking existing progress localStorage keys are based on lesson IDs which are unchanged

Testing Strategy

  • Run existing test suite (npm test) to verify no regressions
  • Validate JSON file against schema
  • Manual review of regex patterns for correctness