Files
Mainline/docs/PIPELINE.md
David Gwilliam 4d28f286db docs: add pipeline documentation with mermaid diagrams
- Add docs/PIPELINE.md with comprehensive pipeline flowchart
- Document camera modes (vertical, horizontal, omni, floating)
- Update AGENTS.md with pipeline documentation instructions
2026-03-16 01:54:05 -07:00

2.5 KiB

Mainline Pipeline

Content to Display Rendering Pipeline

flowchart TD
    subgraph Sources["Data Sources"]
        RSS[("RSS Feeds")]
        Poetry[("Poetry Feed")]
        Ntfy[("Ntfy Messages")]
        Mic[("Microphone")]
    end

    subgraph Fetch["Fetch Layer"]
        FC[fetch_all]
        FP[fetch_poetry]
        Cache[(Cache)]
    end

    subgraph Prepare["Prepare Layer"]
        MB[make_block]
        Strip[strip_tags]
        Trans[translate]
    end

    subgraph Scroll["Scroll Engine"]
        CAM[Camera]
        NH[next_headline]
        RTZ[render_ticker_zone]
        Grad[lr_gradient]
        VT[vis_trunc / vis_offset]
    end

    subgraph Effects["Effect Pipeline"]
        subgraph EffectsPlugins["Effect Plugins"]
            Noise[NoiseEffect]
            Fade[FadeEffect]
            Glitch[GlitchEffect]
            Firehose[FirehoseEffect]
            Hud[HudEffect]
        end
        EC[EffectChain]
        ER[EffectRegistry]
    end

    subgraph Render["Render Layer"]
        RL[render_line]
        TL[apply_ticker_layout]
    end

    subgraph Display["Display Backends"]
        TD[TerminalDisplay]
        PD[PygameDisplay]
        SD[SixelDisplay]
        KD[KittyDisplay]
        WSD[WebSocketDisplay]
        ND[NullDisplay]
    end

    Sources --> Fetch
    RSS --> FC
    Poetry --> FP
    FC --> Cache
    FP --> Cache
    Cache --> MB
    Strip --> MB
    Trans --> MB
    MB --> NH
    NH --> RTZ
    CAM --> RTZ
    Grad --> RTZ
    VT --> RTZ
    RTZ --> EC
    EC --> ER
    ER --> EffectsPlugins
    EffectsPlugins --> RL
    RL --> Display
    Ntfy --> RL
    Mic --> RL

    style Sources fill:#f9f,stroke:#333
    style Fetch fill:#bbf,stroke:#333
    style Scroll fill:#bfb,stroke:#333
    style Effects fill:#fbf,stroke:#333
    style Render fill:#ffb,stroke:#333
    style Display fill:#bff,stroke:#333

Camera Modes

stateDiagram-v2
    [*] --> Vertical
    Vertical --> Horizontal: mode change
    Horizontal --> Omni: mode change
    Omni --> Floating: mode change
    Floating --> Vertical: mode change

    state Vertical {
        [*] --> ScrollUp
        ScrollUp --> ScrollUp: +y each frame
    }

    state Horizontal {
        [*] --> ScrollLeft
        ScrollLeft --> ScrollLeft: +x each frame
    }

    state Omni {
        [*] --> Diagonal
        Diagonal --> Diagonal: +x, +y each frame
    }

    state Floating {
        [*] --> Bobbing
        Bobbing --> Bobbing: sin(time) for x,y
    }