velxio/backend/app/services
David Montero Crespo 89025212ca fix(micropython): release the raw REPL's answer instead of buffering it (#219)
MicroPython over the QEMU worker stopped loading: every project failed with
"the board stopped answering while writing _vlx_main.py", the board sitting
idle at a healthy `>>>`.

The uploader shipped in 664c3581 waits for the board's end-of-execution marker
before sending the next step — that wait is the whole point, it replaced a
fixed delay that pushed 64 bytes every 150 ms. The marker never arrived. Raw
REPL answers each statement with `OK` <EOT> traceback <EOT> `>` and not one
newline in it, and the UART buffer flushed only on newline, carriage return, a
period or 256 bytes. The answer sat in the buffer; the uploader timed out
waiting for something the backend was holding.

Nothing had needed that answer before: the old uploader pasted the whole
program and never listened. EOT is a message boundary in this protocol, so the
buffer treats it as one.

Found by forcing a MicroPython project down the QEMU path with ?esp32sim=qemu —
the residual risk 664c3581 flagged and could not exercise, because velxio.dev
routes every supported ESP32 kind to the in-browser engines. Self-hosters from
this repo have no engines and always take this path, so it broke for exactly
the people the #219 fix was written for.
2026-08-21 22:06:16 +02:00
..
boot_images
…
esp-idf-template fix(espidf): enable BLE 4.2 legacy APIs on BLE5-only SoCs 2026-08-15 04:19:21 +02:00
__init__.py
…
arduino_cli.py perf(compile): stop three sources of per-request stall 2026-08-20 06:14:21 +02:00
asm8080.py
…
asmz80.py
…
board_access.py
…
c_compile.py
…
chip_compile.py
…
esp32_flash_image.py
…
esp32_i2c_slaves.py
…
esp32_lib_bridge.py
…
esp32_lib_manager.py fix(micropython): release the raw REPL's answer instead of buffering it (#219) 2026-08-21 22:06:16 +02:00
esp32_sd_slave.py
…
esp32_signals.py
…
esp32_spi_slaves.py
…
esp32_worker.py fix(esp32): the emulated chip keeps its radio, whatever the scan thinks (#260) 2026-08-21 22:05:10 +02:00
esp_qemu_manager.py
…
espidf_compiler.py fix(esp32): the emulated chip keeps its radio, whatever the scan thinks (#260) 2026-08-21 22:05:10 +02:00
gpio_shim.py
…
qemu_manager.py feat(pi): techo de capacidad para los guests QEMU (multiusuario) 2026-07-29 21:15:04 +02:00
rom_compile.py
…
signal_router.py
…
stm32_lib_manager.py
…
stm32_worker.py
…
symbol_extract.py feat(intellisense): /type/ follows inheritance; extractor records bases and splits comma declarators 2026-08-17 19:08:57 +02:00
wasm_chip_runtime.py
…
wasm_chip_slave.py
…
wifi_status_parser.py
…