Skip to content

fix(player): refill every panel after stepping back one message - #81

Merged
joaner merged 1 commit into
mainfrom
fix/fullscreen-image-panels
Oct 17, 2026
Merged

joaner merged 1 commit into
mainfrom
fix/fullscreen-image-panels

Conversation

@joaner

@joaner joaner commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

What

When playback is paused, stepping back one message (← or the "Step backward one message" button) left image panels black with "Waiting for image data" until the page was reloaded. Usually only the panels whose topic was not the stepped one were affected.

IterablePlayer.stepMessage now:

  1. announces the new time to time subscribers before delivering any messages, as seek already does;
  2. backfills every subscribed topic at the new time, not only the topic of the adjacent message;
  3. still delivers the stepped message if the backfill fails, logging a warning.

Why

Image panels treat a time that moves backwards as a rewind: they reset their worker and clear the canvas, then wait for the next frame.

  • stepMessage used to deliver the stepped message first and announce the time afterwards, so the reset wiped the frame that had just arrived.
  • Every other topic received no message at all.
  • While paused nothing else arrives, so the panels stayed empty.

Stepping forward was not affected, because the time only moves forward. The bug is easiest to notice after any later layout change, such as entering full screen, because the panels then stay empty.

Tests

  • IterablePlayer.test.ts: a new stepMessage test with two image topics. A backward step must announce the new time first and then deliver a frame on both topics. It fails before this change.
  • tests/step-back-images.spec.ts (Playwright, test_3cam.mcap): pause, step forward, then step back several times; no image panel may show "Waiting for image data". It fails before this change (3 of 3 panels empty) and passed 3 runs in a row after it.

Checks run locally: check:audit, check:i18n, lint, typecheck, test (739 passed), build, build:lib, test:e2e. In the e2e run, nine tests in basic, delivery and bvh-basic timed out on a heavily loaded machine; all of them passed on rerun.

Stepping one message back while paused left image panels black with
"Waiting for image data" until reload. stepMessage delivered the adjacent
message (one topic) before announcing the new time; panels treat a time
that moves backwards as a rewind and clear, so the frame that had just
arrived was wiped and the other topics never received one.

stepMessage now announces the new time first, as seek does, and then
backfills every subscribed topic at that time. If the backfill fails the
stepped message is still delivered.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
rosview 8e105ec Commit Preview URL

Branch Preview URL
Oct 17 2026, 02:31 PM

@joaner
joaner merged commit 6e77a00 into main Oct 17, 2026
7 checks passed
@joaner
joaner deleted the fix/fullscreen-image-panels branch October 18, 2026 05:25
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