Skip to content

1.3.4: interaction preview sends every new picture, stuck closes logged and counted - #18

Merged
LeeO86 merged 5 commits into
mainfrom
fix/interact-preview
Nov 5, 2026
Merged

LeeO86 merged 5 commits into
mainfrom
fix/interact-preview

Conversation

@LeeO86

@LeeO86 LeeO86 commented Nov 5, 2026

Copy link
Copy Markdown
Owner

Fixes the interaction preview (platform D-354) and releases 1.3.4.

Repeated pictures. The WebSocket preview requested a new preview and waited only 20 ms for it (previewLoop, 10 × 2 ms); otherwise it sent the previous JPEG again. On test-all-gfx with YouTube 113 frames in 12 s carried only 21 distinct pictures. preview.jpg waits up to 100 ms and was fresh every time. Now the WebSocket waits the same way, and a session never gets the same picture twice (per-session last sequence).

Stuck closes. A WebSocket closed because its client does not read (this ends interaction control) now logs websocket_stuck_close (client, reason, outbox bytes) and counts websocket_stuck_closes_total{reason} (outbox_size, outbox_age, preview_not_taken; at 0 from the start).

Kernel buffer. WebSockets set TCP_NOTSENT_LOWAT to 64 KiB, so a slow path drops previews early instead of holding seconds of 49 KB JPEGs in the send buffer.

Also release 1.3.4: version, deploy and compose image tags, widget versions, CHANGELOG (also the heading of the first -codecs image, 1.3.3.2-codecs).

Tests: unit tests 111/111 locally (stuck reasons reported once each; counter at 0). Integration (CI): a moving page's preview must not repeat a picture; the stuck close is counted; the counter is on /metrics at 0.

After merge: tag v1.3.4 (normal image) and codecs-1.3.4 (1.3.4-codecs).

🤖 Generated with Claude Code

https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4

LeeO86 and others added 5 commits November 5, 2026 03:09
…ed and counted

The WebSocket preview waited 20 ms for a new preview and otherwise resent
the previous JPEG (about 2 new pictures a second on a busy page). It now
waits like preview.jpg (up to 100 ms) and never sends a session the same
picture twice. Stuck closes log websocket_stuck_close and count
websocket_stuck_closes_total{reason}. WebSockets keep at most 64 KiB
unsent (TCP_NOTSENT_LOWAT). Release 1.3.4: version, image tags, CHANGELOG.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4
…asured

With at most 64 KiB unsent in the kernel, a session that reads nothing is
closed after 5 s as SPEC §7.3 says; the test left one unread for ~8 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4
… refused)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4
…after 5 s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ybuzgBaGxuB5UiaE8dRa4
@LeeO86
LeeO86 merged commit e9ad50c into main Nov 5, 2026
3 checks passed
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