• v0.1.3 0675c9f7d8

    fix: wink is now a real CSS animation, no longer sticks (v0.1.3)

    ranger released this 2026-05-26 07:08:56 +00:00 | 5 commits to main since this release

    The v0.1.1 wink was rendered as a static SVG (left eye drawn as a
    closed curve). Once the 5% random gate picked the wink tone, the
    left eye stayed closed until the next page render — if the
    dashboard sat idle, Buddy was stuck mid-wink indefinitely. David's
    report: "the eye does not unblink."

    v0.1.2's lower probability (30% → 5%) reduced how often you'd see
    the stuck state, but didn't fix the underlying issue.

    This release makes the wink a real transient animation:

    • sprite.php no longer swaps the left eye for a closed path when
      tone is wink — both eyes are always open circles in the SVG
    • buddy.css adds @keyframes buddyWink that briefly closes the
      left eye (scaleY 0.1) for ~250ms every 2.5s, applied only when
      the parent has the .buddy-sprite--wink class
    • right eye keeps its normal 5s blink — the asymmetry is what
      makes it read as a wink rather than a synchronised blink
    • mouth/cheeks/label still differ for wink tone (those are valid
      static state changes); only the eye behaviour moved to animation

    Net effect: when the 5% chance fires, Buddy now actually winks
    (closes, opens, closes, opens) instead of freezing one-eye-shut.

    Downloads