forked from genewildish/Mainline
Major changes: - Pipeline architecture with capability-based dependency resolution - Effects plugin system with performance monitoring - Display abstraction with multiple backends (terminal, null, websocket) - Camera system for viewport scrolling - Sensor framework for real-time input - Command-and-control system via ntfy - WebSocket display backend for browser clients - Comprehensive test suite and documentation Issue #48: ADR for preset scripting language included This commit consolidates 110 individual commits into a single feature integration that can be reviewed and tested before further refinement.
68 lines
1.4 KiB
Python
68 lines
1.4 KiB
Python
"""
|
|
Event types for the mainline application.
|
|
Defines the core events that flow through the system.
|
|
These types support a future migration to an event-driven architecture.
|
|
"""
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from enum import Enum, auto
|
|
|
|
|
|
class EventType(Enum):
|
|
"""Core event types in the mainline application."""
|
|
|
|
NEW_HEADLINE = auto()
|
|
FRAME_TICK = auto()
|
|
MIC_LEVEL = auto()
|
|
NTFY_MESSAGE = auto()
|
|
STREAM_START = auto()
|
|
STREAM_END = auto()
|
|
|
|
|
|
@dataclass
|
|
class HeadlineEvent:
|
|
"""Event emitted when a new headline is ready for display."""
|
|
|
|
title: str
|
|
source: str
|
|
timestamp: str
|
|
language: str | None = None
|
|
|
|
|
|
@dataclass
|
|
class FrameTickEvent:
|
|
"""Event emitted on each render frame."""
|
|
|
|
frame_number: int
|
|
timestamp: datetime
|
|
delta_seconds: float
|
|
|
|
|
|
@dataclass
|
|
class MicLevelEvent:
|
|
"""Event emitted when microphone level changes significantly."""
|
|
|
|
db_level: float
|
|
excess_above_threshold: float
|
|
timestamp: datetime
|
|
|
|
|
|
@dataclass
|
|
class NtfyMessageEvent:
|
|
"""Event emitted when an ntfy message is received."""
|
|
|
|
title: str
|
|
body: str
|
|
message_id: str | None = None
|
|
timestamp: datetime | None = None
|
|
|
|
|
|
@dataclass
|
|
class StreamEvent:
|
|
"""Event emitted when stream starts or ends."""
|
|
|
|
event_type: EventType
|
|
headline_count: int = 0
|
|
timestamp: datetime | None = None
|