From e6773c6bafcd5bf5f9e882795ac95cf3311dd8e9 Mon Sep 17 00:00:00 2001 From: claude Date: Wed, 10 Jun 2026 08:48:25 +0000 Subject: [PATCH] fix: read stored project compiler for quartoFlavor update options.compiler is set from req.body.compiler which the frontend never sends, so the condition was never true and quartoFlavor was never written. Use ProjectGetter to read the stored compiler instead. Fire-and-forget so it does not delay the compile response. Co-Authored-By: Claude Sonnet 4.6 --- .../Features/Compile/CompileController.mjs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/services/web/app/src/Features/Compile/CompileController.mjs b/services/web/app/src/Features/Compile/CompileController.mjs index 7af92f7e63..4fafdb13b5 100644 --- a/services/web/app/src/Features/Compile/CompileController.mjs +++ b/services/web/app/src/Features/Compile/CompileController.mjs @@ -303,14 +303,22 @@ const _CompileController = { // Persist quarto output flavor so the project-list badge can distinguish // RevealJS presentations from PDF documents without needing a compile. - if (status === 'success' && options.compiler === 'quarto') { + // options.compiler is not sent by the frontend, so we read the stored + // compiler from the DB. Done fire-and-forget so it never delays the response. + if (status === 'success') { const isHtml = outputFiles.some(f => f.path === 'output.html') - Project.updateOne( - { _id: projectId }, - { quartoFlavor: isHtml ? 'revealjs' : 'pdf' } - ).exec().catch(err => - logger.warn({ err, projectId }, 'failed to update quartoFlavor') - ) + ProjectGetter.promises + .getProject(projectId, { compiler: 1 }) + .then(project => { + if (project?.compiler !== 'quarto') return + return Project.updateOne( + { _id: projectId }, + { quartoFlavor: isHtml ? 'revealjs' : 'pdf' } + ).exec() + }) + .catch(err => + logger.warn({ err, projectId }, 'failed to update quartoFlavor') + ) } res.json({