Auto-starts DOOM fire sixel animation in UICatalog About Box#5482
Conversation
When the About Box opens and the terminal supports sixel, the DOOM fire animation (from the Images scenario) now starts automatically, bottom- aligned to the dialog frame. The overlay tracks the dialog if moved, and is removed from the driver sixel queue when the dialog closes. Silently skipped when the terminal does not advertise sixel support. Set UICATALOG_FORCE_ABOUT_FIRE=1 to force it where the PTY cannot advertise sixel (e.g., Windows ConPTY recording, which strips sixel DCS). Verified with tuirec recordings (Scripts/tuirec/README.md workflow): - Unsupported terminal: dialog opens/closes cleanly, no fire, no crash - Forced: cast shows ~21 redraw events/sec while the dialog is open, stopping immediately on close (timer + queue cleanup confirmed) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 43b6894e67
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| support = new () { IsSupported = true, SupportsTransparency = true }; | ||
| } | ||
|
|
||
| if (support is not { IsSupported: true }) |
There was a problem hiding this comment.
Skip fire when sixel transparency is unsupported
In terminals where SixelSupportResult reports IsSupported = true but SupportsTransparency = false, this still starts the fire. The fire image relies on alpha-zero background pixels, and it is sized to the whole dialog, so terminals that do not honor sixel transparency can render an opaque background over the About dialog instead of leaving the non-fire area visible; the Images scenario guards this case before starting the same animation.
Useful? React with 👍 / 👎.
The previous GetAboutFireScreenPosition bottom-align math collapsed to top-align: pixelHeight was derived from the full dialog height, so cellHeight == dialog height and (Bottom - cellHeight) == Top. Combined with sizing the raster to the whole dialog, the fire filled the entire dialog and rode up over the logo and links. Now the raster is sized to a fixed ABOUT_FIRE_ROWS (6) band spanning the dialog interior width, positioned inset one cell from the left border with its bottom edge just above the bottom border. Verified by tuirec recording in WSL: cursor moved from row 8;col 20 (dialog top-left, 496x264) to row 16;col 21 (480x102 band) — the fire now sits cleanly at the bottom of the dialog with the text legible above it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
this was just a test. closing. |
Summary
The UICatalog About Box now auto-starts the DOOM fire sixel animation at the bottom of the dialog when the terminal supports sixel — reusing
DoomFire/ConstPalettefrom the Images scenario with the same encoder setup (AvoidBottomScroll, palette clamped toMaxPaletteColors, 30ms timer, every-2nd-frame encode).Behavior
App.Driver.SixelSupport.IsSupportedis true; silently skipped otherwise — the About Box is unchanged on non-sixel terminals.FrameToScreen (), recomputed every frame so it follows the (movable) dialog.SixelToRenderis removed from the driver queue (rebuild —ConcurrentQueuehas no Remove) so the last frame does not linger.UICATALOG_FORCE_ABOUT_FIRE=1forces the fire where the PTY cannot advertise sixel — needed for recording/verification through Windows ConPTY, which strips sixel DCS.Verification (tuirec, per Scripts/tuirec/README.md)
Recorded UICatalog with tuirec v0.8.1 and read the
.castback:Sixel support: Falseand the guard short-circuits.--env UICATALOG_FORCE_ABOUT_FIRE=1): cast event timeline shows a steady ~21 output events/sec for the full 5s the dialog is open (the animation encode/redraw loop), dropping to zero immediately after Esc — confirming the timer stops and cleanup runs. 0 exceptions.The flame pixels themselves cannot be captured on Windows (ConPTY strips sixel DCS — see
tuirec agent-guide); a hero GIF needs a Linux/macOS recording, same as the Mandelbrot GIF in #5471.🤖 Generated with Claude Code