feat(positioning): Add configurable PositionStage for positioning modes

- Added PositioningMode enum (ABSOLUTE, RELATIVE, MIXED)
- Created PositionStage class with configurable positioning modes
- Updated terminal display to support positioning parameter
- Updated PipelineParams to include positioning field
- Updated DisplayStage to pass positioning to terminal display
- Added documentation in docs/positioning-analysis.md

Positioning modes:
- ABSOLUTE: Each line has cursor positioning codes (\033[row;1H)
- RELATIVE: Lines use newlines (no cursor codes, better for scrolling)
- MIXED: Base content uses newlines, effects use absolute positioning (default)

Usage:
  # In pipeline or preset:
  positioning = "absolute"  # or "relative" or "mixed"

  # Via command line (future):
  --positioning absolute
This commit is contained in:
2026-03-21 17:38:20 -07:00
parent 5352054d09
commit 33df254409
7 changed files with 556 additions and 6 deletions

View File

@@ -29,6 +29,7 @@ class PipelineParams:
# Display config
display: str = "terminal"
border: bool | BorderMode = False
positioning: str = "mixed" # Positioning mode: "absolute", "relative", "mixed"
# Camera config
camera_mode: str = "vertical"
@@ -84,6 +85,7 @@ class PipelineParams:
return {
"source": self.source,
"display": self.display,
"positioning": self.positioning,
"camera_mode": self.camera_mode,
"camera_speed": self.camera_speed,
"effect_order": self.effect_order,