Repository navigation
Render canvas frames through an app only watching the host - #32
Merged
Merged
Conversation
An app registered to render only on its main connection, so a session on a host the app watched, showing another, was told to open the app while it was open. An app now registers on those connections too, for renders alone: a Browser's actions need the app showing the host. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
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.
enowx-app canvas screenshotfrom a session on a server failed with "open the app connected to this host", while the app was open and watching that host.Cause
The daemon renders through an app in
browsers.serving(daemon/canvas.go:246). Only the app's main connection registers there (ui/connection.go:140). Connections to other hosts register onlyServeApp(ui/watch.go:141) and ignorecanvas.renderinwatchEvent(ui/watch.go:216). So with the app showing the Mac and watching enowxlabs, enowxlabs has an app connected and none to render.This is by design of the registration, not a lost one: a reconnect or restart registers again. It renders on the Mac because its app does show that host.
On enowxlabs,
enowxd.logshows connection83cdb953ecae(kind=app) open since 17:02:27 with no close, which fits. The log doesn't say which of the app's connections that is.Fix
canvas.serve: a watched host's connection registers for renders alone, so a Browser's actions still go only to an app showing the host.watchEventhandlescanvas.renderand replies through that host's connection (renderCanvasused to always reply through the main one).Mixed versions: an older daemon answers an unknown method and nothing changes; an older app never registers, as before.
Not changed: exporting a video still needs the app showing the host (
daemon/canvas_video.go:55), the same limit. Said indocs/canvas.md.Tests
New:
TestCanvasRendersThroughAnAppWatching,TestWatchedHostsRenderRequestGoesBackToIt. They run on CI; locally onlygo build,go vet, and recording the API, as asked.Not run: a real render from a real app, or from the failing session.
Touches no
go.mod,version/orcloud/, so merging doesn't deploy the cloud.🤖 Generated with Claude Code