Skip to content

Import a Tandoor export - #435

Merged
BattermanZ merged 1 commit into
devfrom
feature/415-tandoor-import
Oct 23, 2026
Merged

BattermanZ merged 1 commit into
devfrom
feature/415-tandoor-import

Conversation

@BattermanZ

Copy link
Copy Markdown
Member

Summary

A fourth reader for "Import from another app": Tandoor's default export, a zip of one zip per recipe.

 READERS
   Mealie
   Paprika
+  Tandoor      src/tandoor.rs
   Crouton

Tandoor keeps ingredients inside each step and no written line, so the reader gathers them into one list and writes each line out:

step "Cake"                      ## Cake
  header "Wet"                   ## Wet
  225 · g · butter · "soft"      225 g butter, soft
  4 · — · egg/eggs               4 eggs
  no_amount · salt               salt
step "" (time 45)                Bake … clean.\n\nTime: 45 minutes
step "" with lines, after a ##   ## Step 2   (Étape 2 / Paso 2)
nutrition 320 kcal + 42/15/5     Nutrition 320 kcal a serving; Note: "Nutrition: carbohydrates 42, fats 15, proteins 5"

A recipe is known by its number and its name, 1 Orange cake. Every Tandoor numbers from 1, so the number alone took a second Tandoor's recipe 1 for the first's and filed its Tags there (chosen 23 October 2026, on the ticket).

Test files in tests/fixtures/tandoor/: Mealie's Tandoor 1 sample, vanilla-cookbook's Tandoor 2.0 export, and an export made with Tandoor 2.6.15 in a throwaway container, also as schema.org for #416.

Evidence

  • Before: a Tandoor export is refused as unrecognised; the import page names Mealie, Paprika and Crouton.
    After: live on the dev instance, the three files land 1, 10 and 2 recipes with 8 photos, nothing unreadable; each again lands all unchanged; the chili (recipe 1 of one Tandoor) arrives as its own recipe after the Orange cake (recipe 1 of another). The page lists Tandoor and where its export is.
  • two_tandoors_recipes_of_the_same_number_stay_apart: failed with the number alone (Orange cake offered onto the chili), passes now.
  • just check and just test pass: 391 unit, 654 behaviour, 1,396 screen tests.
  • Field table and live pass: Import a Tandoor export #415 comments.

Merge Danger

Door: two-way

Nothing is released yet; the ledger's foreign ids for Tandoor are only written once someone imports with this code.

Blast Radius: imports

A zip of zips is now asked of Tandoor before Crouton. Mealie, Paprika and Crouton files hold no inner .zip, and a test checks each is turned away by the Tandoor reader.

Closes #415

🤖 Generated with Claude Code

https://claude.ai/code/session_01126KLKw9pGwH2vG3r1i2VL

… them

Tandoor's default export is a zip of zips, one per recipe, and it keeps
no written line: each line is rebuilt from amount, unit, food and note.
Every step's ingredients come together in one list, a named step and a
header row each a Section. A step's own time is the last paragraph of
its text, and nutrition beyond calories a line of the Note.

A recipe is known by its number and its name, since every Tandoor
numbers its recipes from 1 and the number alone took one Tandoor's
recipe for another's.

The test files are Mealie's Tandoor 1 sample, vanilla-cookbook's
Tandoor 2.0 export, and an export made with Tandoor 2.6.15 in a
throwaway container, in its default format and as schema.org for #416.

Closes #415

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01126KLKw9pGwH2vG3r1i2VL
@BattermanZ
BattermanZ merged commit 694ce6a into dev Oct 23, 2026
1 check failed
@BattermanZ
BattermanZ deleted the feature/415-tandoor-import branch October 23, 2026 13:44
@github-actions github-actions Bot mentioned this pull request Oct 23, 2026
8 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant