diff --git a/CHANGELOG.md b/CHANGELOG.md index e73d291..b6b7904 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to Epicure are documented here. This file is mirrored in-app at `/changelog` (and in the admin dashboard) via `apps/web/lib/changelog.ts` — update both together. +## 0.20.0 — 2026-07-13 22:26 + +### Added +- **Duplicate your own recipe** — same one-click copy used for forking others' recipes, now also on your own, for making variations without touching version history. + ## 0.19.0 — 2026-07-13 22:21 ### Added diff --git a/apps/web/app/(app)/recipes/[id]/page.tsx b/apps/web/app/(app)/recipes/[id]/page.tsx index 5eff044..ccd0f28 100644 --- a/apps/web/app/(app)/recipes/[id]/page.tsx +++ b/apps/web/app/(app)/recipes/[id]/page.tsx @@ -222,7 +222,7 @@ export default async function RecipePage({ params }: Params) { order: s.order, }))} /> - {!isOwner && } + { void handleFork(); }} disabled={forking} aria-label={t("forkTooltip")}> - {forking ? : } + } /> - {t("forkTooltip")} + {label} ); diff --git a/apps/web/lib/changelog.ts b/apps/web/lib/changelog.ts index 68b6d2d..8652fc9 100644 --- a/apps/web/lib/changelog.ts +++ b/apps/web/lib/changelog.ts @@ -1,5 +1,5 @@ // Mirrors CHANGELOG.md at the repo root — update both together. -export const APP_VERSION = "0.19.0"; +export const APP_VERSION = "0.20.0"; export type ChangelogEntry = { version: string; @@ -11,6 +11,13 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + version: "0.20.0", + date: "2026-07-13 22:26", + added: [ + "**Duplicate your own recipe** — same one-click copy used for forking others' recipes, now also on your own, for making variations without touching version history.", + ], + }, { version: "0.19.0", date: "2026-07-13 22:21", diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 8c7d22e..1810466 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -121,6 +121,8 @@ "forked": "Recipe forked to your library", "forkFailed": "Failed to fork recipe", "forkLimitReached": "Recipe limit reached for your tier", + "duplicateTooltip": "Duplicate this recipe", + "duplicated": "Recipe duplicated", "forkedFrom": "Forked from {title}", "pairingFindingLabel": "Finding perfect pairings…", "pairingSuggestButton": "Suggest pairings", diff --git a/apps/web/messages/fr.json b/apps/web/messages/fr.json index 9ecd691..15e1f67 100644 --- a/apps/web/messages/fr.json +++ b/apps/web/messages/fr.json @@ -122,6 +122,8 @@ "forked": "Recette copiée dans votre bibliothèque", "forkFailed": "Échec de la copie de la recette", "forkLimitReached": "Limite de recettes atteinte pour votre offre", + "duplicateTooltip": "Dupliquer cette recette", + "duplicated": "Recette dupliquée", "forkedFrom": "Copiée depuis {title}", "pairingFindingLabel": "Recherche des meilleurs accords…", "pairingSuggestButton": "Suggérer des accompagnements", diff --git a/apps/web/package.json b/apps/web/package.json index ea79e48..4c34a3f 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@epicure/web", - "version": "0.19.0", + "version": "0.20.0", "private": true, "scripts": { "dev": "next dev", diff --git a/package.json b/package.json index ea62b8a..56e7584 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "epicure", - "version": "0.19.0", + "version": "0.20.0", "private": true, "scripts": { "dev": "pnpm --filter web dev",