github jt196/vanilla-cookbook v1.6.0

6 hours ago

Before you upgrade

  • AI needs a model chosen in Site Settings. There's no longer a built-in list of chat/image models, so a retired model can't linger as a default. Most installs already have a model saved and won't notice. If yours has AI turned on without one, admins will see a warning at the top of every page with a link to Options → Site; pick a model from the live list and save. Until then, other users get an "ask your admin" message from AI actions. (#423, #438)
  • Node 24. The Docker image now runs on Node 24 LTS (Node 20 is end-of-life). Nothing to do for Docker users; if you run from source, use Node 24 (.nvmrc added). (#425)
  • A small database migration (adds the recipe equipment column) runs automatically on start.

Added

  • Recipe equipment. Recipes can list equipment (stand mixer, Dutch oven…), shown under the ingredients. Scraping fills it from sites that publish it, and AI extraction and translation handle it too. (#431, #405)
  • OpenAI-compatible AI provider. Point Vanilla Cookbook at anything that speaks the OpenAI API — LiteLLM, OpenRouter, Together, Groq, DeepInfra, LM Studio, vLLM — with OPENAI_COMPATIBLE_BASE_URL (and OPENAI_COMPATIBLE_API_KEY if needed). Works alongside the other providers, and Site Settings shows which service you're connected to. (#434, #415)
  • Live AI model lists. Model fields in Site Settings now fetch the available models from your provider and open as a dropdown with a loading spinner; you can still type any model name. Changing the embedding model warns how many recipes will need re-embedding. (#423, #430, #421)
  • Auto theme. Choose Light, Dark or Auto; Auto follows your device and switches live. New accounts and logged-out visitors default to Auto; existing users keep their theme. (#429, #407)
  • Settings → Recipes → Missing images. If some recipe photos are only links to other websites, this downloads them so they keep working. (#432)

Fixed

  • Sharing a YouTube video to the app now extracts its recipe — from a linked recipe page, the description, or the transcript — instead of falling back to the plain page scraper. Mobile m.youtube.com links are recognised, and video recipes keep the video as their source and use its thumbnail when there's no other image. (#437, #412)
  • Sharing to the Android app when it's already open now opens the new recipe instead of doing nothing. (#436, #413)
  • Scraped recipes from many WordPress recipe sites (e.g. RecipeTin Eats) now include their image. Sites that list their image as plain URLs were losing it. (#437)
  • AI parsing of pages and photos now says when there's no recipe instead of inventing one. (#437)
  • Stale recipe lists. Going from another user's recipes to "My Recipes" kept showing theirs until a refresh; several other pages could show stale data after navigating. (#432)
  • Recipe images from URLs are downloaded on save. If the download fails, nothing is added rather than a broken link-only photo. Copying another user's recipe now copies its photos properly. (#432)
  • "Test Enabled Providers" shows the real error (e.g. 404: model no longer available, 429: quota exceeded), and no longer fails silently on newer reasoning models. (#423, #434, #420)
  • Security: sharp upgraded to 0.35 for image-decoding security fixes (libvips, libheif, librsvg). (#424)

Internal

  • Dependencies updated (SvelteKit 2.70, Svelte 5.57, Prisma 7.10, Tailwind 4.3, LangChain, Playwright 1.64, and others); pnpm lint works again under ESLint 9. (#424)
  • Docker builds pin pnpm to the project's version. (#425)
  • Overlapping :latest builds no longer race to publish, and docs-only changes don't trigger a rebuild. (#435)

Full changelog: v1.5.15...v1.6.0

Don't miss a new vanilla-cookbook release

NewReleases is sending notifications on new releases.