HUD effect invisible - runs as overlay after display stage #47

Closed
opened 2026-03-19 21:46:49 +00:00 by david · 0 comments
Owner

Description

The HUD effect is positioned as an "overlay" stage, but the overlay logic runs AFTER all regular stages including the display stage. This makes HUD invisible because it runs after the final display output.

Investigation

From engine/pipeline/adapters/effect_plugin.py:

if self.name == "hud":
    return "overlay"  # HUD is overlay stage

From engine/pipeline/controller.py:

  • Overlay stages are applied AFTER regular stages including display
  • HUD runs after display stage, making it invisible

Expected Behavior

HUD should appear on top of the rendered content, before the display stage outputs to the terminal.

Location

  • HUD effect: engine/effects/plugins/hud.py
  • EffectPluginStage adapter: engine/pipeline/adapters/effect_plugin.py (line 32-34)
  • Overlay execution: engine/pipeline/controller.py (lines 793-806)

Solutions

Option 1: Move HUD before display stage in the pipeline execution order
Option 2: Fix the overlay system to run before display
Option 3: Remove HUD from overlay system and make it a regular effect stage that runs before display

Additional Note

There are also multiple overlapping border solutions in the codebase:

  1. Display-level border (BorderMode.SIMPLE) - applied by display backend
  2. Border Effect - applied as pipeline effect
  3. UI Panel (BorderMode.UI) - handled separately

Consider standardizing these as part of the fix.

## Description The HUD effect is positioned as an "overlay" stage, but the overlay logic runs AFTER all regular stages including the display stage. This makes HUD invisible because it runs after the final display output. ## Investigation From `engine/pipeline/adapters/effect_plugin.py`: ```python if self.name == "hud": return "overlay" # HUD is overlay stage ``` From `engine/pipeline/controller.py`: - Overlay stages are applied AFTER regular stages including display - HUD runs after display stage, making it invisible ## Expected Behavior HUD should appear on top of the rendered content, before the display stage outputs to the terminal. ## Location - HUD effect: `engine/effects/plugins/hud.py` - EffectPluginStage adapter: `engine/pipeline/adapters/effect_plugin.py` (line 32-34) - Overlay execution: `engine/pipeline/controller.py` (lines 793-806) ## Solutions Option 1: Move HUD before display stage in the pipeline execution order Option 2: Fix the overlay system to run before display Option 3: Remove HUD from overlay system and make it a regular effect stage that runs before display ## Additional Note There are also multiple overlapping border solutions in the codebase: 1. Display-level border (BorderMode.SIMPLE) - applied by display backend 2. Border Effect - applied as pipeline effect 3. UI Panel (BorderMode.UI) - handled separately Consider standardizing these as part of the fix.
david closed this issue 2026-03-20 08:04:15 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: klubhaus/sideline#47