diff --git a/frontend/src/components/RecipeDetailOverlay.vue b/frontend/src/components/RecipeDetailOverlay.vue index 2532a54..50bba81 100644 --- a/frontend/src/components/RecipeDetailOverlay.vue +++ b/frontend/src/components/RecipeDetailOverlay.vue @@ -829,7 +829,7 @@ onMounted(() => { else { selectedVolume.value = 'custom'; customVolumeValue.value = Math.round(ml) } loadBrand() - nextTick(() => generateCardImage()) + // Don't auto-generate card image on mount — generate on demand when saving }) function addIngredient() { diff --git a/frontend/src/views/OilReference.vue b/frontend/src/views/OilReference.vue index 587511a..239f38a 100644 --- a/frontend/src/views/OilReference.vue +++ b/frontend/src/views/OilReference.vue @@ -656,12 +656,8 @@ async function openOilDetail(name) { activeCard.value = card selectedOilName.value = null loadBrand() - // Pre-generate card image for instant save + // Generate image on demand when saving, not on open oilCardImageUrl.value = null - await nextTick() - await new Promise(r => setTimeout(r, 300)) - const el = document.querySelector('.oil-card-modal') - if (el) await generateImageFromRef({ value: el }, oilCardImageUrl) } else { activeCard.value = null activeCardName.value = null