# 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.upstream-default]
description = "Upstream default operation (terminal display, legacy behavior)"
source = "headlines"
display = "terminal"
camera = "scroll"
effects = ["noise", "fade", "glitch", "firehose"]
camera_speed = 1.0
viewport_width = 80
viewport_height = 24
enable_message_overlay = false
positioning = "mixed"

[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
enable_message_overlay = true
positioning = "mixed"

[presets.demo-pygame]
description = "Demo: Pygame display version"
source = "headlines"
display = "pygame"
camera = "feed"
effects = ["noise", "fade", "glitch", "firehose"]  # Default effects
camera_speed = 0.1
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"

[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
enable_message_overlay = true
positioning = "mixed"

[presets.test-message-overlay]
description = "Test: Message overlay with ntfy integration"
source = "headlines"
display = "terminal"
camera = "feed"
effects = ["hud"]
camera_speed = 0.1
viewport_width = 80
viewport_height = 24
enable_message_overlay = true
positioning = "mixed"

# ============================================
# 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
