Revision history for Yote-Spiderpup

0.07  2026-03-09
    - Added Playwright browser test suite for component integration testing
    - Documented workaround for stale props: component props are evaluated
      once on creation; use shared object references for data that changes
      after mount
    - Documented that set() uses strict equality — reassigning the same
      object reference does not trigger re-render; use a counter var to
      force updates when mutating shared objects

0.06  2026-02-24
    - Fixed loop item argument passing: dynamic attribute/content functions
      now receive (module, loop_item, loop_idx) matching the template
      convention (m, item) =>. Previously loop_item was passed as the first
      arg and loop_idx as the second, making the second param the index
      instead of the item.
    - Fixed RecipeConditional condition evaluation to pass module as first
      arg, fixing conditions like (m, s) => s.completed inside for loops
    - Fixed setAttribute to use DOM property for 'value' attribute on form
      elements (textarea/input), preventing stale display after user edits

0.03  2026-02-22
    - Slot scoping: slot content now resolves variables from the parent scope
      where the component is used, not the slot-owning component's scope
    - Compiler generates regular functions instead of arrow functions, enabling
      proper scope rebinding via .call()
    - Fixed SSR rendering of slot content with correct parent variable scoping
    - Fixed hydrate() to support scope parameter, matching render() behavior
    - Fixed component parentModule to walk past RecipeConditional/RecipeLoop
      helpers, preventing TypeError when slot content is inside conditionals
    - Added store._notifyAll() for reactive update propagation
    - Added _containerEl to RecipeLoop and RecipeConditional
    - Cleanup of updatableElements/updatableRecipes in RecipeConditional.refresh()

0.02  2026-02-20
    - Single-file component (.pup) format support
    - New module Yote::Spiderpup::SFC with parse_sfc() parser
    - Pages and recipes can be authored as .pup files alongside .yaml
    - .pup uses <script>, <style>, and <template> blocks
    - Server, compiler, and watcher all handle .pup files transparently

0.01  2026-02-20
    - Initial CPAN release
    - YAML-to-JavaScript/HTML recipe compiler
    - Reactive component system with state management
    - Built-in development server (pupserver)
    - Watch mode for automatic recompilation
    - CSS/LESS support in recipes