Update docs, fix Pygame window, and improve camera stage timing

This commit is contained in:
2026-03-18 22:33:57 -07:00
parent c57617bb3d
commit bb0f1b85bf
12 changed files with 338 additions and 57 deletions

View File

@@ -12,7 +12,7 @@ This project uses:
```bash
mise run install # Install dependencies
# Or: uv sync --all-extras # includes mic, websocket, sixel support
# Or: uv sync --all-extras # includes mic, websocket support
```
### Available Commands
@@ -206,20 +206,6 @@ class TestEventBusSubscribe:
**Never** modify a test to make it pass without understanding why it failed.
## Architecture Overview
- **Pipeline**: source → render → effects → display
- **EffectPlugin**: ABC with `process()` and `configure()` methods
- **Display backends**: terminal, websocket, sixel, null (for testing)
- **EventBus**: thread-safe pub/sub messaging
- **Presets**: TOML format in `engine/presets.toml`
Key files:
- `engine/pipeline/core.py` - Stage base class
- `engine/effects/types.py` - EffectPlugin ABC and dataclasses
- `engine/display/backends/` - Display backend implementations
- `engine/eventbus.py` - Thread-safe event system
=======
## Testing
Tests live in `tests/` and follow the pattern `test_*.py`.
@@ -336,9 +322,9 @@ Functions:
- **Display abstraction** (`engine/display/`): swap display backends via the Display protocol
- `display/backends/terminal.py` - ANSI terminal output
- `display/backends/websocket.py` - broadcasts to web clients via WebSocket
- `display/backends/sixel.py` - renders to Sixel graphics (pure Python, no C dependency)
- `display/backends/null.py` - headless display for testing
- `display/backends/multi.py` - forwards to multiple displays simultaneously
- `display/backends/moderngl.py` - GPU-accelerated OpenGL rendering (optional)
- `display/__init__.py` - DisplayRegistry for backend discovery
- **WebSocket display** (`engine/display/backends/websocket.py`): real-time frame broadcasting to web browsers
@@ -349,8 +335,7 @@ Functions:
- **Display modes** (`--display` flag):
- `terminal` - Default ANSI terminal output
- `websocket` - Web browser display (requires websockets package)
- `sixel` - Sixel graphics in supported terminals (iTerm2, mintty, etc.)
- `both` - Terminal + WebSocket simultaneously
- `moderngl` - GPU-accelerated rendering (requires moderngl package)
### Effect Plugin System