Reported privately by a user, reproduced on their machine, not reproduced here yet. Filing it because the path it touches has already produced one bug, and because a project that will not reopen is the worst class of failure this app has.
What they described
Suis arrivé à faire planter openscreen: si tu enregistres sans activer la cam ni le micro, et que tu rouvres le projet, ça plante chez moi.
- Windows 11
- version reported as "1.18", which does not exist. Most likely 1.8.0; to be confirmed
- record with no camera and no microphone, close, reopen the project, crash
What is missing, and worth asking for
- the exact version from Help / About
- what "plante" looks like: the window disappears, or an error is shown, or it hangs on a blank editor
- whether the project reopens after a restart, or fails every time
- whether the same recording with the camera enabled reopens fine, which would isolate the variable
Why this is plausible rather than surprising
The "project with no camera track" path already produced #265 (Export uses the screen recording as the webcam when a project has no camera track). Same family: code that assumes a camera asset exists and falls back to the screen recording when it does not.
That fallback shape is still visible in the editor and CLI export paths:
webcamPath: cam?.sourcePath ?? asset.originalPath,
ExportDialog.tsx:79 and CliExportRunner.tsx:91. Whether that is the same defect #265 fixed or a surviving instance of it needs checking rather than assuming, but it is the first place to look.
NativeCompositorOverlay.tsx handles the empty case differently again:
const webcamPath = cam && cam.visible && cam.sourcePath ? cam.sourcePath : "";
So there are at least two conventions in the codebase for "this project has no camera": an empty string in one place and a substituted screen recording in another. A reopen path that expects one and receives the other is a credible crash.
Microphone absence should be checked as its own variable. The report has both disabled at once, so it is not yet known whether either alone is enough.
Why it matters more than its frequency suggests
Recording without a camera is not an edge case, it is the default for anyone capturing a screen demo. And the failure lands at reopen, which means the recording exists on disk and the user cannot get to it. Even if the crash is trivial to fix, that combination deserves a regression test that creates a camera-less, microphone-less project and reopens it.
Reported privately by a user, reproduced on their machine, not reproduced here yet. Filing it because the path it touches has already produced one bug, and because a project that will not reopen is the worst class of failure this app has.
What they described
What is missing, and worth asking for
Why this is plausible rather than surprising
The "project with no camera track" path already produced #265 (Export uses the screen recording as the webcam when a project has no camera track). Same family: code that assumes a camera asset exists and falls back to the screen recording when it does not.
That fallback shape is still visible in the editor and CLI export paths:
ExportDialog.tsx:79 and CliExportRunner.tsx:91. Whether that is the same defect #265 fixed or a surviving instance of it needs checking rather than assuming, but it is the first place to look.
NativeCompositorOverlay.tsxhandles the empty case differently again:So there are at least two conventions in the codebase for "this project has no camera": an empty string in one place and a substituted screen recording in another. A reopen path that expects one and receives the other is a credible crash.
Microphone absence should be checked as its own variable. The report has both disabled at once, so it is not yet known whether either alone is enough.
Why it matters more than its frequency suggests
Recording without a camera is not an edge case, it is the default for anyone capturing a screen demo. And the failure lands at reopen, which means the recording exists on disk and the user cannot get to it. Even if the crash is trivial to fix, that combination deserves a regression test that creates a camera-less, microphone-less project and reopens it.