ai cooking
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chef wording instead of tech wording (#300)

* chef wording

* editing

* revert to dismiss

* more editing

---------

Co-authored-by: paul miller <paul.miller>

authored by

Paul Miller
paul miller
and committed by
GitHub
48225e1d b79411f1

+27 -27
+6 -6
internal/recipes/buttons_test.go
··· 9 9 "time" 10 10 ) 11 11 12 - // Test that the HTML contains Save and Dismiss buttons for recipes 12 + // Test that the HTML contains Save and Dismiss buttons for recipes. 13 13 func TestFormatShoppingListHTML_ContainsSaveAndDismissButtons(t *testing.T) { 14 14 // Create a shopping list with multiple recipes 15 15 multiRecipeList := ai.ShoppingList{ ··· 60 60 t.Error("HTML should trigger HTMX requests on click") 61 61 } 62 62 63 - // Check for Save and Dismiss labels (without span tags) 63 + // Check for Save and Dismiss labels. 64 64 if !strings.Contains(html, `Save`) { 65 65 t.Error("HTML should contain Save label text") 66 66 } 67 - if !strings.Contains(html, `Dismiss`) { 67 + if !strings.Contains(html, `Dismis`) { 68 68 t.Error("HTML should contain Dismiss label text") 69 69 } 70 70 if !strings.Contains(html, `Details`) { ··· 76 76 t.Error("HTML should contain Try again, chef button") 77 77 } 78 78 79 - // Check that "Finalize" button exists 80 - if !strings.Contains(html, `Finalize`) { 81 - t.Error("HTML should contain Finalize button") 79 + // Check that "Save my picks" button exists. 80 + if !strings.Contains(html, `Assemble Shopping List`) { 81 + t.Error("HTML should contain Assemble Shopping List button") 82 82 } 83 83 84 84 // Check for finalize HTMX button
+4 -4
internal/templates/about.html
··· 109 109 <li>We store only the data needed to run the app, such as account information, saved recipes, and optional feedback.</li> 110 110 <li>We do not sell personal information.</li> 111 111 <li>If analytics are enabled, they are used to improve reliability and usability.</li> 112 - <li>Third-party providers (for authentication, grocery data, and AI responses) process requests needed to serve features.</li> 112 + <li>We work with trusted partners for sign-in, storage, and ai/large language models</li> 113 113 <li>You can request account data removal by opening a GitHub issue on the project repository.</li> 114 114 </ul> 115 115 <p class="mt-3 text-sm text-gray-500"> ··· 119 119 120 120 <section id="github" class="border-b border-brand-100 p-8"> 121 121 <h2 class="text-2xl font-bold text-brand-700">3. GitHub Links</h2> 122 - <p class="mt-2 text-gray-600">Project resources and contribution entry points.</p> 122 + <p class="mt-2 text-gray-600">Where to explore the project and share ideas.</p> 123 123 <div class="mt-4 grid gap-3 sm:grid-cols-2"> 124 124 <a href="https://github.com/paulgmiller/careme" target="_blank" rel="noreferrer" 125 125 class="rounded-xl border border-brand-100 bg-brand-50/40 p-4 transition hover:bg-brand-50"> ··· 152 152 </details> 153 153 <details class="rounded-xl border border-brand-100 bg-white p-4"> 154 154 <summary class="cursor-pointer font-semibold text-brand-700">Can I share a recipe page?</summary> 155 - <p class="mt-2 text-gray-700">Yes. Recipe pages have stable URLs and can be shared directly.</p> 155 + <p class="mt-2 text-gray-700">Yes. Every recipe page has its own shareable link.</p> 156 156 </details> 157 157 <details class="rounded-xl border border-brand-100 bg-white p-4"> 158 158 <summary class="cursor-pointer font-semibold text-brand-700">How do I suggest improvements?</summary> 159 - <p class="mt-2 text-gray-700">Use the GitHub issue tracker to propose ideas, report problems, or ask questions.</p> 159 + <p class="mt-2 text-gray-700">Use the GitHub page to share ideas, report problems, or ask questions.</p> 160 160 </details> 161 161 </div> 162 162 </section>
+1 -1
internal/templates/home.html
··· 109 109 110 110 Find your local grocery stores. 111 111 Check the store's inventory for fresh meat and seasonal produce. 112 - Generate a weekly meal plan from a variety of cuisines and cooking styles. 112 + Generate a weekly recipe plan from a variety of cuisines and cooking styles. 113 113 </p> 114 114 <!-- Signed-out state --> 115 115 <div class="mt-6">
+3 -3
internal/templates/locations.html
··· 15 15 <section class="mx-auto w-full max-w-3xl"> 16 16 <div class="rounded-2xl border border-brand-100 bg-white/90 shadow-xl"> 17 17 <div class="border-b border-brand-100 p-8"> 18 - <h1 class="text-4xl font-extrabold tracking-tight text-brand-700">Nearby Locations</h1> 18 + <h1 class="text-4xl font-extrabold tracking-tight text-brand-700">Nearby Stores</h1> 19 19 <p class="mt-2 text-gray-600">Showing results near ZIP <span class="font-semibold text-brand-700">{{.Zip}}</span>.</p> 20 20 </div> 21 21 ··· 50 50 </a> 51 51 <label for="instructions-{{.ID}}" 52 52 class="inline-flex cursor-pointer items-center justify-center rounded-lg border border-brand-300 bg-white px-3 py-2 text-sm font-semibold text-brand-700 shadow-sm transition hover:bg-brand-50 focus:outline-none focus:ring-2 focus:ring-brand-400 focus:ring-offset-2"> 53 - Instructions 53 + Chef notes 54 54 </label> 55 55 </div> 56 56 </div> ··· 62 62 <div class="flex flex-wrap items-center gap-2"> 63 63 <button type="submit" 64 64 class="rounded-lg bg-brand-600 px-4 py-2 text-sm font-semibold text-white shadow-sm transition hover:bg-brand-700 focus:outline-none focus:ring-2 focus:ring-brand-400 focus:ring-offset-2"> 65 - Generate 65 + Build Recipes 66 66 </button> 67 67 </div> 68 68 </form>
+2 -2
internal/templates/mail.html
··· 11 11 <div style="border-radius:16px; border:1px solid {{.Style.Colors.C100}}; background-color:rgba(255,255,255,0.9); box-shadow:0 10px 25px rgba(15,23,42,0.08);"> 12 12 <div style="border-bottom:1px solid {{.Style.Colors.C100}}; padding:32px 32px 24px 32px;"> 13 13 <h1 style="margin:0; font-size:32px; line-height:1.1; font-weight:800; letter-spacing:-0.02em; color:{{.Style.Colors.C700}};"> 14 - <a href="{{.Domain}}/recipes?h={{.Hash}}" style="text-decoration:none; color:{{.Style.Colors.C700}};"> Careme Recipes Mail</a> 14 + <a href="{{.Domain}}/recipes?h={{.Hash}}" style="text-decoration:none; color:{{.Style.Colors.C700}};"> This Week's Careme Recipes</a> 15 15 </h1> 16 16 <p style="margin:8px 0 0 0; font-size:14px; color:#4b5563;"> 17 17 Location: ··· 47 47 </div> 48 48 49 49 <p style="margin:16px 0 0 0; text-align:center; font-size:12px; color:#6b7280;"> 50 - Generated by Careme. 50 + Planned by Careme. 51 51 </p> 52 52 </section> 53 53 </main>
+2 -2
internal/templates/recipe.html
··· 132 132 <p id="question-error" class="hidden text-sm font-medium text-red-700">Could not answer your question. Please try again.</p> 133 133 {{else if .ServerSignedIn}} 134 134 <div class="flex flex-wrap items-center gap-3"> 135 - <p class="text-sm text-gray-500">Questions are unavailable for this recipe.</p> 135 + <p class="text-sm text-gray-500">Chef chat isn't available for this recipe yet.</p> 136 136 <button type="button" 137 137 id="cooked-feedback-button" 138 138 hx-post="/recipe/{{.RecipeHash}}/feedback" ··· 197 197 </div> 198 198 </div> 199 199 200 - <p class="text-center text-sm text-gray-500">Generated by Careme.</p> 200 + <p class="text-center text-sm text-gray-500">Planned by Careme.</p> 201 201 </section> 202 202 </main> 203 203 <script>
+2 -2
internal/templates/shoppinglist.html
··· 184 184 hx-post="/recipes/{{.Hash}}/finalize" 185 185 hx-swap="none" 186 186 class="inline-flex items-center justify-center rounded-lg bg-action-green-500 px-4 py-2.5 text-sm font-semibold text-white shadow-md transition hover:bg-action-green-600 focus:outline-none focus:ring-2 focus:ring-action-green-300 focus:ring-offset-2"> 187 - Finalize 187 + Assemble Shopping List 188 188 </button> 189 189 </div> 190 190 </div> 191 191 </div> 192 192 193 - <p class="text-center text-sm text-ink-500">Generated by Careme.</p> 193 + <p class="text-center text-sm text-ink-500">Planned by Careme.</p> 194 194 </section> 195 195 </main> 196 196 <script src="/static/htmx@2.0.8.js"></script>
+2 -2
internal/templates/spinner.html
··· 2 2 <html lang="en"> 3 3 <head> 4 4 <meta charset="utf-8" /> 5 - <title>Generating…</title> 5 + <title>Planning your recipes…</title> 6 6 <meta http-equiv="refresh" content="{{.RefreshInterval}}" /> 7 7 <meta name="viewport" content="width=device-width, initial-scale=1" /> 8 8 <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" /> ··· 19 19 <div class="mx-auto h-14 w-14 animate-spin rounded-full border-4 border-brand-100 border-t-brand-600" aria-hidden="true"></div> 20 20 <span class="sr-only">Loading</span> 21 21 <h1 class="mt-6 text-2xl font-semibold text-brand-700">Please wait…</h1> 22 - <p class="mt-2 text-sm text-ink-600">We’re generating your result. This page refreshes every {{.RefreshInterval}} seconds.</p> 22 + <p class="mt-2 text-sm text-ink-600">We’re putting your recipes together. We’ll check again every {{.RefreshInterval}} seconds.</p> 23 23 <p class="mt-4 text-sm"> 24 24 <a class="font-medium text-brand-600 underline-offset-4 hover:underline focus:outline-none focus:ring-2 focus:ring-brand-400 focus:ring-offset-2" href="">Refresh now</a> 25 25 </p>
+5 -5
internal/templates/user.html
··· 3 3 <head> 4 4 <meta charset="utf-8" /> 5 5 <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 - <title>Careme · User Profile</title> 6 + <title>Careme · Your Kitchen</title> 7 7 8 8 {{template "tailwind_head" .Style}} 9 9 ··· 56 56 name="favorite_store" 57 57 type="text" 58 58 value="{{.User.FavoriteStore}}" 59 - placeholder="Store ID" 59 + placeholder="Store name" 60 60 class="w-full max-w-md rounded-lg border border-gray-300 bg-white px-3 py-2 text-gray-900 shadow-sm focus:border-brand-500 focus:outline-none focus:ring-2 focus:ring-brand-400" /> 61 61 <p class="text-xs text-gray-500">Set your favorite store from the <a href="/" class="text-brand-600 hover:underline">home page</a> by searching for locations.</p> 62 62 {{end}} ··· 91 91 </div> 92 92 93 93 <div class="space-y-2"> 94 - <label for="directive" class="text-sm font-medium text-gray-700">Chef’s directive</label> 94 + <label for="directive" class="text-sm font-medium text-gray-700">Cooking preferences</label> 95 95 <textarea id="directive" 96 96 name="directive" 97 97 rows="8" 98 98 placeholder="Example: Generate 5 recipes for 4 people, avoid shellfish, prioritize high-protein meals, and keep prep under 30 minutes." 99 99 class="w-full rounded-lg border border-gray-300 bg-white px-3 py-2 text-gray-900 shadow-sm focus:border-brand-500 focus:outline-none focus:ring-2 focus:ring-brand-400">{{.User.Directive}}</textarea> 100 - <p class="text-xs text-gray-500">This is injected directly into recipe generation. Keep it free form and edit anytime.</p> 100 + <p class="text-xs text-gray-500">We use this when planning your recipes. Write it in your own words and edit anytime.</p> 101 101 <ul class="list-disc space-y-1 pl-5 text-xs text-gray-500"> 102 - <li>Override defaults: "Generate 5 recipes for 4 people."</li> 102 + <li>Set your basics: "Generate 5 recipes for 4 people."</li> 103 103 <li>Diet focus: "Low-carb, high-protein, no pork or shellfish."</li> 104 104 <li>Style: "One vegetarian meal and one soup each week."</li> 105 105 <li>Time/equipment: "Weeknight meals under 30 minutes, no slow cooker."</li>