diff --git a/frontend/src/components/editor/EditorToolbar.tsx b/frontend/src/components/editor/EditorToolbar.tsx index 759c38cb..d1d6a11a 100644 --- a/frontend/src/components/editor/EditorToolbar.tsx +++ b/frontend/src/components/editor/EditorToolbar.tsx @@ -827,6 +827,19 @@ export const EditorToolbar = ({ stopBoard(activeBoardId); await new Promise((resolve) => setTimeout(resolve, 300)); } + // QEMU-Linux boards (Raspberry Pi family + overlay piFamily kinds) + // boot straight from the rootfs — there is no firmware to compile, + // and handleCompile's Pi early-return never sets compiledProgram, so + // the gate below would surface a bogus "Compilation produced no + // firmware" error. Power the board on directly instead. + if (isPiBoardKind(board?.boardKind ?? '')) { + trackRunSimulation(board?.boardKind); + reportRun(board?.boardKind); + console.log('[handleRun] → startBoard (QEMU-Linux, no firmware)', activeBoardId); + startBoard(activeBoardId); + setMessage(null); + return; + } if (!board?.compiledProgram || codeChangedSinceLastCompile) { console.log('[handleRun] auto-compile + run'); autoRunAfterCompile.current = true;