Skip to content

fix(player): full-res graphics video + bottom-pinned transport chrome#100

Merged
detain merged 1 commit into
masterfrom
fix/graphics-player-placement-fullres
Jun 28, 2026
Merged

fix(player): full-res graphics video + bottom-pinned transport chrome#100
detain merged 1 commit into
masterfrom
fix/graphics-player-placement-fullres

Conversation

@detain

@detain detain commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Companion to detain/sugarcraft#1135 (now merged + published), which made sugar-reel decode Sixel/Kitty/iTerm2 video at full pixel resolution and added a fast chafa sixel path.

Changes

  • PlayerScreen::view() — pixel-graphics modes emit the whole frame as one multi-row escape blob, but candy-core's renderer diffs line-by-line (1 logical line = 1 row), so chrome appended after the blob landed a few rows down on top of the image (the "progress bar on row 3" bug). The graphics view now stays on a single logical line and the caption/scrubber/status are pinned to the bottom rows with absolute cursor positioning (graphicsChrome()).
  • PosterLoader::cellSize() (= Mosaic->fontSize()) is threaded into PlayerScreen::productionFactory()Player::open() so graphics modes decode at the terminal's real full pixel resolution instead of an assumed 10×20 cell box.

Verification

  • PHPStan L9: clean (311 files), against the published sugar-reel/candy-mosaic.
  • PHPUnit: 2220 tests green.
  • ⚠️ Visual paths not yet eyeballed by CI (headless). Needs a look on a sixel/iTerm2/kitty terminal via bin/phlix run: confirm full-resolution images and the transport bar at the bottom (not row 3).

🤖 Generated with Claude Code

…phics modes

Pixel-graphics modes (sixel/kitty/iTerm2) emit the whole frame as one multi-row
escape blob, but candy-core's renderer diffs line-by-line (1 logical line = 1
row), so chrome appended after the blob landed a few rows down ON the image —
the "progress bar on row 3" bug. PlayerScreen::view() now keeps the graphics
view on a single logical line and pins caption/scrubber/status to the bottom
rows with absolute cursor positioning.

Also thread the terminal's detected cell pixel size (PosterLoader::cellSize())
into PlayerScreen::productionFactory -> Player::open so graphics modes decode at
the real full pixel resolution instead of an assumed 10x20 box.

Requires sugar-reel/candy-mosaic from detain/sugarcraft#1135 (Player::open +
Mode::isGraphics cell-size API). Hold the PR until those are published.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@detain detain merged commit e3d1dd5 into master Jun 28, 2026
2 checks passed
@detain detain deleted the fix/graphics-player-placement-fullres branch June 28, 2026 04:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant