fix(container): Beeper 4.3.123 never paints its first window + first-paint gate — v0.9.1 (#27) - #28
Merged
Merged
Conversation
…window + first-paint gate (#27) From Beeper 4.3.123 the renderer stalls on Chromium's default GL fallback under Xvfb: the window is created but never mapped, so the login screen never renders and first-run noVNC login is impossible. The API still comes up, so the HEALTHCHECK and the MCP guard matrix passed and the weekly rebuild shipped it. - entrypoint.sh: launch beepertexts with --use-angle=swiftshader - scripts/first-paint-check.sh + vnc-paint-probe.py: boot the image on a fresh profile, read the framebuffer over VNC from the host, fail on a blank screen - wire the gate into mcp-test.yml and release.yml verify - docs: CLAUDE.md, PRD, CHANGELOG Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1PKBQDukuTNc4Eak9icLz
…ed RFB handshake Follow-up to the #27 fix from the self-review: - first-paint-check.sh: pass needs two consecutive samples >= 1000 colours (a mid-paint frame no longer passes); a probe error is reported as such instead of "screen still blank"; unique container name + docker-assigned port so concurrent runs don't collide - scripts/rfb.py: one RFB handshake shared by vnc-auth-probe.py and vnc-paint-probe.py (no behaviour change to the auth probe) - release.yml: verify-arm64 job on the native arm runner runs the first-paint gate; publish and notify-failure wait on it (not yet executed) - stamp 0.9.1: mcp/package.json, CHANGELOG, CLAUDE.md, PRD Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1PKBQDukuTNc4Eak9icLz
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1PKBQDukuTNc4Eak9icLz
…, merge duplicate Changed sections Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U1PKBQDukuTNc4Eak9icLz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #27.
Problem
On
:latest(Beeper Desktop 4.3.123) the Beeper window is created but never mapped under Xvfb, so the login screen never renders and first-run noVNC login is impossible. The API still comes up, so the HEALTHCHECK and the MCP guard matrix passed and the weekly rebuild published it.Fix
entrypoint.shlaunches Beeper with--use-angle=swiftshader(SwiftShader ships inside the AppImage; no new packages).--disable-gpu/--disable-gpu-compositingdo not help.Gate
scripts/first-paint-check.shboots the image on a fresh profile, reads the framebuffer over VNC from the host, and passes only on two consecutive samples of 1000+ colours (blank = 2, login screen ≈ 11,000).mcp-test.ymlandrelease.ymlverify, plus a newverify-arm64job on the native arm runner that publish waits on.scripts/rfb.py: one RFB handshake shared by both VNC probes.Release
Stamps 0.9.1 (PATCH).
Verification
:latest(2 colours) and passes on an image built from this branch pinned to Beeper 4.3.123; also passes on 4.2.923.node --test mcp/server.test.js: 48/48.asset-serve-check: pass.mcp-guard-check.sh,vnc-auth-check.sh(CI runs both here). Theverify-arm64job has never run; it first runs on thev0.9.1tag push.🤖 Generated with Claude Code
https://claude.ai/code/session_01U1PKBQDukuTNc4Eak9icLz