Skip to content

fix(splash): render each status from the cached artwork - #12

Merged
dinacaran merged 1 commit into
mainfrom
claude/splash-render-base-pixmap
Aug 28, 2026
Merged

dinacaran merged 1 commit into
mainfrom
claude/splash-render-base-pixmap

Conversation

@dinacaran

Copy link
Copy Markdown
Collaborator

_render() copied the widget's current pixmap, which already carried the previously drawn status text: init renders 'Starting...', then every set_status() composited its message on top of the last one. By the time the main window appeared, 'Starting...', 'Loading UI components...' and 'Building main window...' were drawn over each other in the frosted-glass panel and none of them was readable. The inline comment claimed the base pixmap was cached; it was not.

Cache the pristine scaled pixmap as self._base_pixmap in init and copy from that on every render. Layout constants are untouched.

The regression test asserts where the render sources its pixels rather than comparing rendered text: the headless CI platform has no Consolas, so status glyphs rasterise to nothing there and a text comparison would pass whether or not the bug is present. Verified the test fails on the real regression (sourcing from self.pixmap() while _base_pixmap exists) and passes on the fix.

What changed and why

How it was tested

Checklist

  • python -m pytest tests/ passes locally
  • python app.py launches and loads a real measurement file with no regression
  • No files from the protected list in docs/PR_Policy.md are touched
    (loading/decoding pipeline, core/signal_store.py, BusLogAnalyzer.spec, requirements.txt)
  • APP_VERSION in app.py and CHANGELOG.md are not modified —
    the owner updates those at release time
  • Screenshot attached below if anything in the UI changed

Screenshot

_render() copied the widget's current pixmap, which already carried the
previously drawn status text: __init__ renders 'Starting...', then every
set_status() composited its message on top of the last one. By the time the
main window appeared, 'Starting...', 'Loading UI components...' and
'Building main window...' were drawn over each other in the frosted-glass
panel and none of them was readable. The inline comment claimed the base
pixmap was cached; it was not.

Cache the pristine scaled pixmap as self._base_pixmap in __init__ and copy
from that on every render. Layout constants are untouched.

The regression test asserts where the render sources its pixels rather than
comparing rendered text: the headless CI platform has no Consolas, so status
glyphs rasterise to nothing there and a text comparison would pass whether
or not the bug is present. Verified the test fails on the real regression
(sourcing from self.pixmap() while _base_pixmap exists) and passes on the fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dinacaran
dinacaran merged commit 8679cd4 into main Aug 28, 2026
4 checks passed
@dinacaran
dinacaran deleted the claude/splash-render-base-pixmap branch September 5, 2026 16:16
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