Commit Graph

11 Commits

Author SHA1 Message Date
e5799a346a Add 'available' command to list all effect types
- Add _cmd_available() method to list all registered effect types
- Discover plugins and query registry to get complete list
- Add 'available' to help text and command processing
- Update help description for 'effects' command to clarify it shows current pipeline
2026-03-22 17:19:15 -07:00
b1bf739324 Add pipeline mutation commands to REPL
- Add help text for add_stage, remove_stage, swap_stages, move_stage commands
- Implement _cmd_add_stage, _cmd_remove_stage, _cmd_swap_stages, _cmd_move_stage methods
- Update _handle_pipeline_mutation in main.py and pipeline_runner.py
- Fix fragile test by testing output buffer directly instead of rendered output
2026-03-22 17:15:05 -07:00
d5406a6b11 Fix REPL HUD layout by removing cursor positioning codes
- Remove \033[1;1H, \033[2;1H, \033[3;1H from HUD rendering
- HUD text now appears at correct positions without cursor interference
- Prompt appears at left margin as expected
2026-03-22 16:46:32 -07:00
6646ed78b3 Add REPL effect detection and input handling to pipeline runner
- Detect REPL effect in pipeline and enable interactive mode
- Enable raw terminal mode for REPL input capture
- Add keyboard input loop for REPL commands (return, up/down arrows, backspace)
- Process commands and handle pipeline mutations from REPL
- Fix lint issues in graph and REPL modules (type annotations, imports)
2026-03-21 21:19:30 -07:00
fb0dd4592f feat(repl): Add REPL effect with HUD-style interactive interface
Implement a Read-Eval-Print Loop (REPL) effect that provides a
HUD-style overlay for interactive pipeline control.

## New Files

- engine/effects/plugins/repl.py - REPL effect plugin with command processor
- engine/display/backends/terminal.py - Added raw mode and input handling
- examples/repl_simple.py - Simple demonstration script
- tests/test_repl_effect.py - 18 comprehensive tests

## Features

### REPL Interface
- HUD-style overlay showing FPS, command history, output buffer size
- Command history navigation (Up/Down arrows)
- Command execution (Enter)
- Character input and backspace support
- Output buffer with scrolling

### Commands
- help - Show available commands
- status - Show pipeline status and metrics
- effects - List all effects in pipeline
- effect <name> <on|off> - Toggle effect
- param <effect> <param> <value> - Set parameter
- pipeline - Show current pipeline order
- clear - Clear output buffer
- quit - Show exit message

### Terminal Input Support
- Added set_raw_mode() to TerminalDisplay for capturing keystrokes
- Added get_input_keys() to read keyboard input
- Proper terminal state restoration on cleanup

## Usage

Add 'repl' to effects in your configuration:

## Testing

All 18 REPL tests pass, covering:
- Effect registration
- Command processing
- Navigation (history, editing)
- Configuration
- Rendering

## Integration

The REPL effect integrates with the existing pipeline system:
- Uses EffectPlugin interface
- Supports partial updates
- Reads metrics from EffectContext
- Can be controlled via keyboard when terminal display is in raw mode

Next steps:
- Integrate REPL input handling into pipeline_runner.py
- Add keyboard event processing loop
- Create full demo with interactive features
2026-03-21 21:12:38 -07:00
7185005f9b feat(figment): complete pipeline integration with native effect plugin
- Add engine/effects/plugins/figment.py (native pipeline implementation)
- Add engine/figment_render.py, engine/figment_trigger.py, engine/themes.py
- Add 3 SVG assets in figments/ (Mexican/Aztec motif)
- Add engine/display/backends/animation_report.py for debugging
- Add engine/pipeline/adapters/frame_capture.py for frame capture
- Add test-figment preset to presets.toml
- Add cairosvg optional dependency to pyproject.toml
- Update EffectPluginStage to support is_overlay attribute (for overlay effects)
- Add comprehensive tests: test_figment_effect.py, test_figment_pipeline.py, test_figment_render.py
- Remove obsolete test_ui_simple.py
- Update TODO.md with test cleanup plan
- Refactor test_adapters.py to use real components instead of mocks

This completes the figment SVG overlay feature integration using the modern pipeline architecture, avoiding legacy effects_plugins. All tests pass (758 total).
2026-03-21 13:09:37 -07:00
f64590c0a3 fix(hud): Correct overlay logic and context mismatch 2026-03-20 03:40:09 -07:00
238bac1bb2 feat: Complete pipeline hot-rebuild implementation with acceptance tests
- Implements pipeline hot-rebuild with state preservation (issue #43)
- Adds auto-injection of MVP stages for missing capabilities
- Adds radial camera mode for polar coordinate scanning
- Adds afterimage and motionblur effects using framebuffer history
- Adds comprehensive acceptance tests for camera modes and pipeline rebuild
- Updates presets.toml with new effect configurations

Related to: #35 (Pipeline Mutation API epic)
Closes: #43, #44, #45
2026-03-19 03:34:06 -07:00
a95b24a246 feat(effects): add entropy parameter to effect plugins
- Add entropy field to EffectConfig (0.0 = calm, 1.0 = chaotic)
- Provide compute_entropy() method in EffectContext for dynamic scoring
- Update Fade, Firehose, Glitch, Noise plugin defaults with entropy values
- Enables finer control: intensity (strength) vs entropy (randomness)

This separates deterministic effect strength from probabilistic chaos, allowing more expressive control in UI panel and presets.

Fixes #32
2026-03-18 12:19:26 -07:00
4b26c947e8 chore: fix linting issues in plugins after refactor
- Remove unused imports in glitch.py
- Remove unused variables in hud.py
2026-03-18 04:07:17 -07:00
b37b2ccc73 refactor: move effects_plugins to engine/effects/plugins
- Move effects_plugins/ to engine/effects/plugins/
- Update imports in engine/app.py
- Update imports in all test files
- Follows capability-based deps architecture

Closes #27
2026-03-18 03:58:48 -07:00