From b0712a5bf0e96659402a06cee6eb2d6ee66e71b5 Mon Sep 17 00:00:00 2001 From: Henrik Muehe Date: Fri, 1 May 2026 16:29:25 +0200 Subject: [PATCH] run_macro: use fetch instead of api.get for /api/file api.get assumes JSON responses, but /api/file/ returns raw gcode text. The await threw on response.json() and start_pause() never fired. Use fetch directly and await response.text() to make sure FileHandler.get's select_file side effect has been processed before mach.start() runs. --- src/js/program-mixin.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/js/program-mixin.js b/src/js/program-mixin.js index a9f1a0d..e8c2aad 100644 --- a/src/js/program-mixin.js +++ b/src/js/program-mixin.js @@ -580,7 +580,18 @@ module.exports = { // right file. if (file_name != this.state.selected) { this.state.selected = file_name; - await api.get(`file/${encodeURIComponent(file_name)}`); + // GET /api/file/ returns gcode text (not JSON), so use + // fetch directly. The server's FileHandler.get sets + // state.selected as a side effect; we await the response + // before starting so mach.start() reads the right file. + const resp = await fetch( + `/api/file/${encodeURIComponent(file_name)}`, + { cache: "no-cache" } + ); + if (!resp.ok) { + throw new Error(`file fetch failed: ${resp.status}`); + } + await resp.text(); } this.load(); if (this.state.macros[id].alert == true) {