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({