Document Twitch video overlay milestone
This commit is contained in:
@@ -0,0 +1,63 @@
|
|||||||
|
_model: devlog-entry
|
||||||
|
---
|
||||||
|
schema_version: 1
|
||||||
|
---
|
||||||
|
title: Twungeon controls move into the Twitch video overlay
|
||||||
|
---
|
||||||
|
date: 2026-08-17
|
||||||
|
---
|
||||||
|
author: Codex and Christopher Chambers
|
||||||
|
---
|
||||||
|
summary: Twungeon replaced its component-style viewer popup with a transparent, responsive Twitch video overlay that reuses the authenticated controller while leaving the streamed dungeon visible.
|
||||||
|
---
|
||||||
|
tags: implementation, deployment, Twitch, Twitch Extension, video overlay, responsive UI, accessibility, testing
|
||||||
|
---
|
||||||
|
source_commit: a8a86852c0e06e518d816ea35400ef9878a365f3
|
||||||
|
---
|
||||||
|
body:
|
||||||
|
|
||||||
|
Twungeon's viewer controls now sit directly over the control area reserved in
|
||||||
|
the stream instead of opening as a large Twitch Video Component popup. The
|
||||||
|
production viewer uses Twitch's Video - Fullscreen placement with `extension`
|
||||||
|
as its relative viewer path. The broadcast continues to provide the dungeon,
|
||||||
|
players, Goblin, exit, status frame, and action log underneath the Extension.
|
||||||
|
|
||||||
|
The change deliberately reuses the existing controller and authoritative
|
||||||
|
backend flow. Twitch identity sharing, short-lived Twungeon sessions, character
|
||||||
|
ownership, movement, attack, self-heal, pass, action points, phase checks, and
|
||||||
|
dead-character checks still use the same APIs and server-side rules. The root
|
||||||
|
page remains the complete local and broadcast view, while `/extension` receives
|
||||||
|
an overlay class before first paint and hides every noninteractive game surface.
|
||||||
|
|
||||||
|
Overlay placement is expressed through centralized percentage-based CSS
|
||||||
|
variables for the control region rather than resolution-specific coordinates.
|
||||||
|
Container-relative sizing keeps the directional pad and action buttons usable
|
||||||
|
across normal, theater, fullscreen, narrow, and 4:3 players. The transparent
|
||||||
|
document and empty overlay canvas reject pointer events; only the actual buttons
|
||||||
|
restore them, so the rest of the video is not presented as a large clickable
|
||||||
|
surface.
|
||||||
|
|
||||||
|
Development remains practical without Twitch. The loopback-only
|
||||||
|
`/extension?dev=1&debug=1` mode exposes the existing synthetic viewer login and
|
||||||
|
draws control-region boundaries. The flags are ignored on the deployed host.
|
||||||
|
Operator documentation now identifies the Twitch dashboard setting as
|
||||||
|
**Video - Fullscreen**, records the `extension` viewer path, and separates the
|
||||||
|
manual dashboard change from repository deployment.
|
||||||
|
|
||||||
|
Live testing exposed a subtle transparency failure after the correct viewer
|
||||||
|
path was saved. Although the document, body, and control region all computed to
|
||||||
|
transparent backgrounds, the root `color-scheme: dark` declaration caused
|
||||||
|
Chrome to paint the iframe canvas black. Dark color scheme now applies only to
|
||||||
|
the full game page; overlay mode explicitly uses the normal transparent canvas.
|
||||||
|
The stylesheet fix was deployed without restarting the Twungeon service, so the
|
||||||
|
active in-memory run was preserved.
|
||||||
|
|
||||||
|
Validation covered linting, strict type checking, 24 domain tests, 10
|
||||||
|
integration and multi-viewer tests, and a production build. Browser checks at
|
||||||
|
1920×1080, 1280×720, and 1024×768 confirmed normalized placement, hidden
|
||||||
|
noninteractive surfaces, button-only pointer handling, and transparent computed
|
||||||
|
backgrounds. The deployed public stylesheet and viewer endpoint were verified
|
||||||
|
after the final transparency correction.
|
||||||
|
|
||||||
|
The Twitch video-overlay implementation is recorded in
|
||||||
|
[commit `a8a86852c0e06e518d816ea35400ef9878a365f3`](https://git.labyricorn.com/Labyricorn/Twungeon/commit/a8a86852c0e06e518d816ea35400ef9878a365f3).
|
||||||
Reference in New Issue
Block a user