feat: pantry notes/categories, ingredient-alias matching, cook-log edit/delete, fork-list popover (v0.83.0)
Pantry: notes + category fields (collapsible grouping like the shopping list), a "Merge duplicates" cleanup action, and fixed quantity display precision (was showing raw decimal(10,4) strings like "0.3333 kg" everywhere — pantry, shopping list, print views, Markdown exports). Ingredient-alias matching: the ingredients table (canonical name + aliases) existed but was never populated or used. Seeded ~10 bilingual EN/FR staples and wired resolution into pantry add/edit, can-cook scoring, auto-deduct-on-cook, and shopping-list pantry-awareness, so "sel"/"sel fin"/"table salt" are recognized as the same ingredient. Cook log: entries from "Mark cooked" can now be edited and deleted (previously log-only, no fix-a-mistake path). The "Cooked N times" text is a hover tooltip listing every date and opens a full manage sheet on click. Also: the "Forked by N others" backlink is now a click-to-open popover instead of an always-inline list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -161,6 +161,17 @@
|
||||
"markCookedCountSingular": "Cuisiné 1 fois",
|
||||
"markCookedCountPlural": "Cuisiné {count} fois",
|
||||
"markCookedLast": " · dernière fois le {date}",
|
||||
"cookLogMore": "+{count} de plus",
|
||||
"cookLogSheetTitle": "Historique de cuisine",
|
||||
"cookLogEmpty": "Aucune cuisson enregistrée pour le moment.",
|
||||
"cookLogNotesLabel": "Notes",
|
||||
"editCookLogTitle": "Modifier l'entrée",
|
||||
"editCookLogSaved": "Entrée mise à jour",
|
||||
"editCookLogFailed": "Échec de la mise à jour",
|
||||
"deleteCookLogSuccess": "Entrée supprimée",
|
||||
"deleteCookLogFailed": "Échec de la suppression",
|
||||
"deleteCookLogConfirmTitle": "Supprimer cette entrée ?",
|
||||
"deleteCookLogConfirmDescription": "Supprimer l'entrée du {date} de votre historique ? Cela n'annule pas la déduction du garde-manger effectuée lors de l'enregistrement.",
|
||||
"batchCookExpiresOn": "Cuisiné — bon jusqu'au {date}",
|
||||
"servings": "{count} portions",
|
||||
"prep": "{mins}m prép.",
|
||||
@@ -745,6 +756,7 @@
|
||||
"loading": "Chargement…",
|
||||
"error": "Une erreur s'est produite",
|
||||
"save": "Enregistrer",
|
||||
"saving": "Enregistrement…",
|
||||
"saved": "Enregistré",
|
||||
"saveFailed": "Échec de l'enregistrement",
|
||||
"exportMarkdown": "Exporter en Markdown",
|
||||
@@ -1149,7 +1161,19 @@
|
||||
"scanNotFound": "Produit introuvable. Essayez un scan photo.",
|
||||
"scanPhotoFailed": "Échec du scan photo",
|
||||
"scanNoItemsFound": "Aucun article reconnu sur cette photo",
|
||||
"cameraError": "Impossible d'accéder à la caméra"
|
||||
"cameraError": "Impossible d'accéder à la caméra",
|
||||
"editItem": "Modifier l'article",
|
||||
"editDialogTitle": "Modifier l'article du garde-manger",
|
||||
"editSaved": "Article mis à jour",
|
||||
"editFailed": "Échec de la mise à jour",
|
||||
"categoryLabel": "Catégorie",
|
||||
"notesLabel": "Notes",
|
||||
"notesPlaceholder": "ex. ouvert, à moitié utilisé, marque préférée…",
|
||||
"uncategorized": "Sans catégorie",
|
||||
"mergeDuplicates": "Fusionner les doublons",
|
||||
"mergeDuplicatesFailed": "Échec de la fusion des doublons",
|
||||
"mergeDuplicatesNoneFound": "Aucun doublon trouvé",
|
||||
"mergeDuplicatesSuccess": "{count, plural, one {1 doublon fusionné} other {{count} doublons fusionnés}}"
|
||||
},
|
||||
"feed": {
|
||||
"title": "Fil d'actualité",
|
||||
|
||||
Reference in New Issue
Block a user