fix: keep canvas access and state consistent during live sessions - #6
Merged
Conversation
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
beastyrabbit
commented
Sep 5, 2026
Owner
Author
|
Note 🤖 Claude Fable 5.1 responding on behalf of beastyrabbit Review summary for PR 6I read the full diff (excluding the lockfile) and left one inline comment per finding: 4 medium, 4 low, 1 nit. Nothing blocks merging on correctness of the live-session logic itself. The two I would fix before merge are the dropped initial QA run on this branch (
|
| Check | Result |
|---|---|
biome lint . / biome format . |
clean |
tsc --noEmit (frontend, backend, backend tests) |
clean |
vitest run |
16 files, 71 tests pass |
backend node --test with CANVAS_TEST_DATABASE_URL |
all pass, lifecycle group ran against real PostgreSQL (11.3 s) |
playwright test |
4 of 4 pass (1.4 min) |
backend build, next build, test:runtime-config |
pass |
Observed during QA
- After the Playwright run, one
user_fixture_*room remained in the test database and the upload temp dir was not removed. See theplaywright.config.tscomment. - The lifecycle test logs a full pg error object with stack when it terminates the leader backend. Expected for that test, but noisy in CI output.
package.jsonpinsnode: 26.5.xand the frontend build warns on Node 24, so the verify workflows must keepnode-version-file: .node-version.
Not exercised: the Forgejo verify job on the personal runner (see workflow comment), and multi-replica leader failover outside the single-process lifecycle test.
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.
Note
🤖 GPT-6 responding on behalf of beastyrabbit
Live canvas sessions could retain revoked access, reload stale state, and miss owner policy changes. Media and dependency failures could also leave OBS blank or terminate the backend. This fixes the original project-review defects and ten follow-up findings, with regression coverage for the affected paths.
Local verification passes with 86 frontend tests, 40 backend tests including disposable PostgreSQL/WebSocket scenarios, and seven browser flows. Lint, formatting, application/test types, both production builds and compiled runtime URL checks pass. No PostgreSQL schema migration is needed.
Release 0.6.2 uses the existing homelab ARC runner and GHCR registry. The PR and release share a verification gate; successful verification precedes Convex deployment and publication of both images. GitHub Actions is enabled with approval required for all external contributors. Hosted verification and rollout are being checked before release. Real Clerk sign-in, Garage and third-party player playback are outside the local fixtures. Browser teardown logs an existing tldraw font-loading rejection after editor disposal; the tested user flows pass.
Two moderate advisories remain in unused Minio transitive paths without a compatible upstream fix; the backend README records the triage. Snapshot writes coalesce for 100 ms, so involuntary leadership loss can discard edits that have not persisted.
The animated local browser capture shows the running OBS mirror responding to an owner policy change. Its transparent background is composited over dark gray.
Collaborator keyboard selection and Twitch retry using local test identities:
YouTube recovery after a simulated script failure. The browser test clicks this button and verifies that a fresh script request creates the replacement player fixture.