feat(integration): Complete feature rewrite with pipeline architecture, effects system, and display improvements

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.
This commit is contained in:
2026-03-20 04:41:23 -07:00
parent 42aa6f16cc
commit ef98add0c5
179 changed files with 27649 additions and 6552 deletions

View File

@@ -0,0 +1,87 @@
---
name: mainline-sources
description: Adding new RSS feeds and data sources to Mainline
compatibility: opencode
metadata:
audience: developers
source_type: codebase
---
## What This Skill Covers
This skill covers how to add new data sources (RSS feeds, poetry) to Mainline.
## Key Concepts
### Feeds Dictionary (engine/sources.py)
All feeds are defined in a simple dictionary:
```python
FEEDS = {
"Feed Name": "https://example.com/feed.xml",
# Category comments help organize:
# Science & Technology
# Economics & Business
# World & Politics
# Culture & Ideas
}
```
### Poetry Sources
Project Gutenberg URLs for public domain literature:
```python
POETRY_SOURCES = {
"Author Name": "https://www.gutenberg.org/cache/epub/1234/pg1234.txt",
}
```
### Language & Script Mapping
The sources.py also contains language/script detection mappings used for auto-translation and font selection.
## Adding a New RSS Feed
1. Edit `engine/sources.py`
2. Add entry to `FEEDS` dict under appropriate category:
```python
"My Feed": "https://example.com/feed.xml",
```
3. The feed will be automatically discovered on next run
### Feed Requirements
- Must be valid RSS or Atom XML
- Should have `<title>` elements for items
- Must be HTTP/HTTPS accessible
## Adding Poetry Sources
1. Edit `engine/sources.py`
2. Add to `POETRY_SOURCES` dict:
```python
"Author": "https://www.gutenberg.org/cache/epub/XXXX/pgXXXX.txt",
```
### Poetry Requirements
- Plain text (UTF-8)
- Project Gutenberg format preferred
- No DRM-protected sources
## Data Flow
Feeds are fetched via `engine/fetch.py`:
- `fetch_feed(url)` - Fetches and parses RSS/Atom
- Results cached for fast restarts
- Filtered via `engine/filter.py` for content cleaning
## Categories
Organize new feeds by category using comments:
- Science & Technology
- Economics & Business
- World & Politics
- Culture & Ideas