Gracefully skips figment tests when system Cairo library is unavailable
instead of crashing with opaque OSError during test collection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire render_figment_overlay() into stream() between the effects chain
and the ntfy message overlay, with optional cairosvg import guard.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements phase-aware (REVEAL/HOLD/DISSOLVE) ANSI cursor-positioning overlay
renderer for figment glyphs, with deterministic shuffle seeding and gradient
coloring via _color_codes_to_ansi(). Includes 6 TDD tests.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements the core figment plugin: timer-driven SVG selection, REVEAL →
HOLD → DISSOLVE state machine, trigger API, and get_figment_state() for
overlay rendering. process() is a deliberate no-op; scroll.py will call
get_figment_state() instead.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
8-task plan covering SVG rasterization, overlay rendering,
FigmentEffect plugin, trigger protocol, and scroll loop integration.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hybrid plugin + overlay architecture for periodic SVG glyph display
with theme-aware coloring and extensible input abstraction.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>