forked from genewildish/Mainline
- 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).
135 lines
2.9 KiB
TOML
135 lines
2.9 KiB
TOML
# Mainline Presets Configuration
|
|
# Human- and machine-readable preset definitions
|
|
#
|
|
# Format: TOML
|
|
# Usage: mainline --preset <name>
|
|
#
|
|
# Built-in presets can be overridden by user presets in:
|
|
# - ~/.config/mainline/presets.toml
|
|
# - ./presets.toml (local override)
|
|
|
|
# ============================================
|
|
# TEST PRESETS (for CI and development)
|
|
# ============================================
|
|
|
|
[presets.test-basic]
|
|
description = "Test: Basic pipeline with no effects"
|
|
source = "empty"
|
|
display = "null"
|
|
camera = "feed"
|
|
effects = []
|
|
viewport_width = 100 # Custom size for testing
|
|
viewport_height = 30
|
|
|
|
[presets.test-border]
|
|
description = "Test: Single item with border effect"
|
|
source = "empty"
|
|
display = "null"
|
|
camera = "feed"
|
|
effects = ["border"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.test-scroll-camera]
|
|
description = "Test: Scrolling camera movement"
|
|
source = "empty"
|
|
display = "null"
|
|
camera = "scroll"
|
|
effects = []
|
|
camera_speed = 0.5
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.test-figment]
|
|
description = "Test: Figment overlay effect"
|
|
source = "empty"
|
|
display = "terminal"
|
|
camera = "feed"
|
|
effects = ["figment"]
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# DEMO PRESETS (for demonstration and exploration)
|
|
# ============================================
|
|
|
|
[presets.demo-base]
|
|
description = "Demo: Base preset for effect hot-swapping"
|
|
source = "headlines"
|
|
display = "terminal"
|
|
camera = "feed"
|
|
effects = [] # Demo script will add/remove effects dynamically
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.demo-pygame]
|
|
description = "Demo: Pygame display version"
|
|
source = "headlines"
|
|
display = "pygame"
|
|
camera = "feed"
|
|
effects = [] # Demo script will add/remove effects dynamically
|
|
camera_speed = 0.1
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
[presets.demo-camera-showcase]
|
|
description = "Demo: Camera mode showcase"
|
|
source = "headlines"
|
|
display = "terminal"
|
|
camera = "feed"
|
|
effects = [] # Demo script will cycle through camera modes
|
|
camera_speed = 0.5
|
|
viewport_width = 80
|
|
viewport_height = 24
|
|
|
|
# ============================================
|
|
# SENSOR CONFIGURATION
|
|
# ============================================
|
|
|
|
[sensors.mic]
|
|
enabled = false
|
|
threshold_db = 50.0
|
|
|
|
[sensors.oscillator]
|
|
enabled = true # Enable for demo script gentle oscillation
|
|
waveform = "sine"
|
|
frequency = 0.05 # ~20 second cycle (gentle)
|
|
amplitude = 0.5 # 50% modulation
|
|
|
|
# ============================================
|
|
# EFFECT CONFIGURATIONS
|
|
# ============================================
|
|
|
|
[effect_configs.noise]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.fade]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.glitch]
|
|
enabled = true
|
|
intensity = 0.5
|
|
|
|
[effect_configs.firehose]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.hud]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.tint]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.border]
|
|
enabled = true
|
|
intensity = 1.0
|
|
|
|
[effect_configs.crop]
|
|
enabled = true
|
|
intensity = 1.0
|