co-mono/packages/coding-agent/examples/extensions/doom-overlay
Nico Bailon a4ccff382c feat(tui): overlay positioning API with CSS-like values
Add OverlayOptions for configurable positioning (anchor, margins, offsets,
percentages). Add OverlayHandle for programmatic visibility control with
hide/setHidden/isHidden. Add visible callback for responsive overlays.

Extension API: ctx.ui.custom() now accepts overlayOptions and onHandle callback.

Examples: overlay-qa-tests.ts (10 test commands), doom-overlay (DOOM at 35 FPS).
2026-01-12 22:44:58 -08:00
..
doom feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
.gitignore feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
doom-component.ts feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
doom-engine.ts feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
doom-keys.ts feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
index.ts feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
README.md feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00
wad-finder.ts feat(tui): overlay positioning API with CSS-like values 2026-01-12 22:44:58 -08:00

DOOM Overlay Demo

Play DOOM as an overlay in pi. Demonstrates that the overlay system can handle real-time game rendering at 35 FPS.

Usage

pi --extension ./examples/extensions/doom-overlay

Then run:

/doom-overlay

The shareware WAD file (~4MB) is auto-downloaded on first run.

Controls

Action Keys
Move WASD or Arrow Keys
Run Shift + WASD
Fire F or Ctrl
Use/Open Space
Weapons 1-7
Map Tab
Menu Escape
Pause/Quit Q

How It Works

DOOM runs as WebAssembly compiled from doomgeneric. Each frame is rendered using half-block characters (▀) with 24-bit color, where the top pixel is the foreground color and the bottom pixel is the background color.

The overlay uses:

  • width: "90%" - 90% of terminal width
  • maxHeight: "80%" - Maximum 80% of terminal height
  • anchor: "center" - Centered in terminal

Height is calculated from width to maintain DOOM's 3.2:1 aspect ratio (accounting for half-block rendering).

Credits