From c0debf295a75bcf2310db76d16b2307b72474151 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 17:46:40 +0530 Subject: [PATCH 01/10] ci(rules): require jdk21 and enforce java version check --- .github/workflows/ci.yml | 6 +++++ test/rules/check-java.mjs | 53 +++++++++++++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 827ee6b..4e7026d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,12 @@ jobs: node-version: 20 cache: npm + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + - name: Install dependencies run: npm ci diff --git a/test/rules/check-java.mjs b/test/rules/check-java.mjs index 85824f0..8a77dda 100644 --- a/test/rules/check-java.mjs +++ b/test/rules/check-java.mjs @@ -1,17 +1,56 @@ import { spawnSync } from 'node:child_process'; -const result = spawnSync('java', ['-version'], { encoding: 'utf-8' }); -if (result.status === 0) { - process.exit(0); +const MIN_JAVA_MAJOR = 21; + +function extractMajorVersion(output) { + const match = output.match(/version\s+"([^"]+)"/i); + if (!match) { + return null; + } + + const versionString = match[1]; + const firstSegment = versionString.split('.')[0]; + if (firstSegment === '1') { + const legacySegment = versionString.split('.')[1]; + if (!legacySegment) { + return null; + } + const parsedLegacy = Number.parseInt(legacySegment, 10); + return Number.isNaN(parsedLegacy) ? null : parsedLegacy; + } + + const parsed = Number.parseInt(firstSegment, 10); + return Number.isNaN(parsed) ? null : parsed; } +const result = spawnSync('java', ['-version'], { encoding: 'utf-8' }); const stderr = result.stderr ? result.stderr.trim() : ''; const stdout = result.stdout ? result.stdout.trim() : ''; const details = stderr.length > 0 ? stderr : stdout; -console.error('Java runtime is required for Firestore Emulator tests.'); -if (details.length > 0) { +if (result.status !== 0) { + console.error('Java runtime is required for Firestore Emulator tests.'); + if (details.length > 0) { + console.error(details); + } + console.error(`Install Java ${MIN_JAVA_MAJOR}+ and ensure \`java\` is available in PATH, then rerun \`npm run rules:test\`.`); + process.exit(1); +} + +const majorVersion = extractMajorVersion(details); +if (majorVersion === null) { + console.error('Unable to detect Java major version from `java -version` output.'); console.error(details); + console.error(`Install Java ${MIN_JAVA_MAJOR}+ and ensure \`java\` is available in PATH, then rerun \`npm run rules:test\`.`); + process.exit(1); } -console.error('Install Java 17+ and ensure `java` is available in PATH, then rerun `npm run rules:test`.'); -process.exit(1); + +if (majorVersion < MIN_JAVA_MAJOR) { + console.error(`Java ${MIN_JAVA_MAJOR}+ is required for Firestore Emulator tests.`); + console.error(`Detected Java major version: ${majorVersion}`); + console.error(details); + console.error(`Install Java ${MIN_JAVA_MAJOR}+ and ensure \`java\` is available in PATH, then rerun \`npm run rules:test\`.`); + process.exit(1); +} + +process.exit(0); From a560be12a8ab8075b7072ffa5981bd7f054b3614 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 18:46:41 +0530 Subject: [PATCH 02/10] feat(auth): fallback to redirect when popup login fails --- src/firebase.ts | 50 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/src/firebase.ts b/src/firebase.ts index 372e7ab..9c13536 100644 --- a/src/firebase.ts +++ b/src/firebase.ts @@ -1,5 +1,5 @@ import { initializeApp } from 'firebase/app'; -import { getAuth, GoogleAuthProvider, signInWithPopup, signOut } from 'firebase/auth'; +import { AuthError, getAuth, GoogleAuthProvider, signInWithPopup, signInWithRedirect, signOut } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; import firebaseConfig from '../firebase-applet-config.json'; @@ -8,7 +8,53 @@ export const db = getFirestore(app, firebaseConfig.firestoreDatabaseId); export const auth = getAuth(app); export const googleProvider = new GoogleAuthProvider(); -export const loginWithGoogle = () => signInWithPopup(auth, googleProvider); +const REDIRECT_ELIGIBLE_POPUP_ERROR_CODES: ReadonlySet = new Set([ + 'auth/popup-blocked', + 'auth/popup-closed-by-user', + 'auth/cancelled-popup-request', + 'auth/operation-not-supported-in-this-environment', +]); + +function isAuthError(error: unknown): error is AuthError { + if (!error || typeof error !== 'object') { + return false; + } + + const candidate = error as Partial; + return typeof candidate.code === 'string'; +} + +function shouldFallbackToRedirect(error: AuthError): boolean { + return REDIRECT_ELIGIBLE_POPUP_ERROR_CODES.has(error.code); +} + +export const loginWithGoogle = async (): Promise => { + try { + await signInWithPopup(auth, googleProvider); + } catch (error) { + if (isAuthError(error) && shouldFallbackToRedirect(error)) { + // COOP/preview-related popup constraints can be non-fatal; redirect login remains valid. + console.warn('google_login_popup_failed_redirect_fallback', { + code: error.code, + message: error.message, + }); + await signInWithRedirect(auth, googleProvider); + return; + } + + if (isAuthError(error)) { + console.error('google_login_failed', { + code: error.code, + message: error.message, + }); + throw error; + } + + console.error('google_login_failed_unknown_error', { error }); + throw error; + } +}; + export const logout = () => signOut(auth); export enum OperationType { From c3f25324a9a904209c7fdf3ba13d0aee1ef8b935 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 19:59:07 +0530 Subject: [PATCH 03/10] feat: revamp pantry and meal planning workflows --- .env.example | 4 + firestore.rules | 63 +++ package.json | 1 + src/App.tsx | 237 +++++++---- src/components/CookView.tsx | 117 ++++-- src/components/GroceryList.tsx | 98 ++++- src/components/MealPlanner.tsx | 39 +- src/components/OwnerView.tsx | 202 +++++++-- src/components/Pantry.tsx | 526 +++++++++++++++++++----- src/i18n/copy.ts | 69 +++- src/services/inventoryService.ts | 133 +++++- src/services/seedService.ts | 52 ++- src/types.ts | 18 + src/utils/ingredientVisuals.ts | 677 +++++++++++++++++++++++++++++++ 14 files changed, 1939 insertions(+), 297 deletions(-) create mode 100644 src/utils/ingredientVisuals.ts diff --git a/.env.example b/.env.example index 96689b0..92dda81 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,7 @@ # Required for local development when testing AI-assisted pantry parsing. # Set this in your local .env.local and in Vercel project environment variables. GEMINI_API_KEY="YOUR_GEMINI_API_KEY" + +# Base URL for pinned catalog images (owned CDN/bucket). Required. +# Example: https://cdn.example.com/rasoi/ingredients +VITE_INGREDIENT_IMAGE_BASE_URL="https://cdn.example.com/rasoi/ingredients" diff --git a/firestore.rules b/firestore.rules index 0b14469..b11920f 100644 --- a/firestore.rules +++ b/firestore.rules @@ -45,6 +45,21 @@ service cloud.firestore { // - newStatus: string (required, 'in-stock', 'low', 'out') // - timestamp: string (required, ISO date) // - role: string (required, 'owner', 'cook') + // + // Collection: households/{householdId}/unknownIngredientQueue + // Document ID: auto-generated + // Fields: + // - name: string (required, max 100 chars) + // - category: string (required, max 50 chars) + // - status: string (required, 'open', 'resolved') + // - requestedStatus: string (required, 'in-stock', 'low', 'out') + // - createdAt: string (required, ISO date) + // - createdBy: string (required, 'owner', 'cook') + // - requestedQuantity: string (optional, max 50 chars) + // - resolvedAt: string (optional, ISO date) + // - resolvedBy: string (optional, 'owner', 'cook') + // - resolution: string (optional, 'promoted', 'dismissed') + // - promotedInventoryItemId: string (optional, max 100 chars) // =============================================================== function isAuthenticated() { @@ -129,6 +144,43 @@ service cloud.firestore { (!('cookLanguage' in data) || data.cookLanguage in ['en', 'hi']); } + function isValidUnknownIngredientQueueItem(data) { + return data.keys().hasAll(['name', 'category', 'status', 'requestedStatus', 'createdAt', 'createdBy']) && + isValidString(data.name, 1, 100) && + isValidString(data.category, 1, 50) && + data.status in ['open', 'resolved'] && + data.requestedStatus in ['in-stock', 'low', 'out'] && + data.createdAt is string && + data.createdBy in ['owner', 'cook'] && + (!('requestedQuantity' in data) || isValidOptionalString(data.requestedQuantity, 0, 50)) && + (!('resolvedAt' in data) || data.resolvedAt is string) && + (!('resolvedBy' in data) || data.resolvedBy in ['owner', 'cook']) && + (!('resolution' in data) || data.resolution in ['promoted', 'dismissed']) && + (!('promotedInventoryItemId' in data) || isValidOptionalString(data.promotedInventoryItemId, 1, 100)); + } + + function isValidUnknownQueueCreate(householdId, data) { + return data.status == 'open' && + data.createdBy == effectiveRole(householdId) && + !('resolvedAt' in data) && + !('resolvedBy' in data) && + !('resolution' in data) && + !('promotedInventoryItemId' in data); + } + + function isValidUnknownQueueResolve(householdId, currentData, nextData) { + return currentData.status == 'open' && + nextData.status == 'resolved' && + nextData.createdAt == currentData.createdAt && + nextData.createdBy == currentData.createdBy && + nextData.name == currentData.name && + nextData.category == currentData.category && + nextData.requestedStatus == currentData.requestedStatus && + nextData.resolvedBy == effectiveRole(householdId) && + nextData.resolution in ['promoted', 'dismissed'] && + nextData.resolvedAt is string; + } + function isValidInventoryWrite(householdId, data) { return !('updatedBy' in data) || data.updatedBy == effectiveRole(householdId); } @@ -198,6 +250,17 @@ service cloud.firestore { allow update: if false; // Logs are immutable allow delete: if isOwner(householdId); } + + match /unknownIngredientQueue/{queueId} { + allow read: if isHouseholdMember(householdId); + allow create: if isHouseholdMember(householdId) && + isValidUnknownIngredientQueueItem(request.resource.data) && + isValidUnknownQueueCreate(householdId, request.resource.data); + allow update: if isOwner(householdId) && + isValidUnknownIngredientQueueItem(request.resource.data) && + isValidUnknownQueueResolve(householdId, resource.data, request.resource.data); + allow delete: if false; + } } // Keep legacy users path for migration diff --git a/package.json b/package.json index ea173f7..71e4589 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "unit:test": "node --import tsx test/unit/run.ts", "rules:test": "node test/rules/check-java.mjs && firebase emulators:exec --only firestore --project demo-rasoi-planner \"tsx test/rules/run.ts\"", "e2e": "node test/e2e/run.mjs", + "e2e:headed": "E2E_HEADLESS=false node test/e2e/run.mjs", "verify:local": "npm run lint && npm run unit:test && npm run build && npm run rules:test && npm run e2e", "prepare": "husky" }, diff --git a/src/App.tsx b/src/App.tsx index 42b6828..f92227c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { ChefHat, User, LogIn, Loader2, AlertCircle, CheckCircle2 } from 'lucide-react'; +import { ChefHat, User, LogIn, Loader2, AlertCircle, CheckCircle2, Globe2, Mail } from 'lucide-react'; import { onAuthStateChanged, User as FirebaseUser } from 'firebase/auth'; import { collection, @@ -13,13 +13,15 @@ import { import OwnerView from './components/OwnerView'; import CookView from './components/CookView'; import { auth, db, loginWithGoogle, logout } from './firebase'; -import { InventoryItem, InventoryStatus, MealPlan, PantryLog, Role, UiLanguage } from './types'; +import { InventoryItem, InventoryStatus, MealPlan, PantryLog, Role, UiLanguage, UnknownIngredientQueueItem } from './types'; import { toUserFacingError } from './utils/error'; import { addInventoryItem, - addUnlistedItemWithLog, clearAnomaly, deleteInventoryItem, + dismissUnknownIngredientQueueItem, + promoteUnknownIngredientQueueItem, + queueUnknownIngredient, updateInventoryStatusWithLog, } from './services/inventoryService'; import { upsertMealField } from './services/mealService'; @@ -43,6 +45,7 @@ export default function App() { const [inventory, setInventory] = useState([]); const [meals, setMeals] = useState>({}); const [logs, setLogs] = useState([]); + const [unknownIngredientQueue, setUnknownIngredientQueue] = useState([]); const [inviteEmail, setInviteEmail] = useState(''); const [isInviting, setIsInviting] = useState(false); @@ -54,7 +57,7 @@ export default function App() { const appCopy = getAppCopy(activeLanguage); const shellWidthClass = isOwner ? 'max-w-7xl' : 'max-w-5xl'; const shellSectionClass = `${shellWidthClass} mx-auto px-4 md:px-6`; - const shellMainClass = `${shellWidthClass} mx-auto p-4 md:p-6 pb-24`; + const shellMainClass = `${shellWidthClass} mx-auto px-4 pb-24 pt-6 md:px-6`; useEffect(() => { const unsubscribe = onAuthStateChanged(auth, (currentUser) => { @@ -80,9 +83,11 @@ export default function App() { let inventoryUnsub: Unsubscribe | null = null; let mealsUnsub: Unsubscribe | null = null; let logsUnsub: Unsubscribe | null = null; + let unknownQueueUnsub: Unsubscribe | null = null; let hasLoadedHousehold = false; let hasLoadedInventory = false; let hasLoadedMeals = false; + let hasLoadedUnknownQueue = false; let hasResolvedInitialView = false; const markInitialViewReady = (): void => { @@ -90,7 +95,7 @@ export default function App() { return; } - if (hasLoadedHousehold && hasLoadedInventory && hasLoadedMeals) { + if (hasLoadedHousehold && hasLoadedInventory && hasLoadedMeals && hasLoadedUnknownQueue) { hasResolvedInitialView = true; setIsDataLoaded(true); setIsAuthReady(true); @@ -181,6 +186,25 @@ export default function App() { setUiFeedback({ kind: 'error', message: 'Failed to load activity logs.' }); }, ); + + unknownQueueUnsub = onSnapshot( + query(collection(db, `households/${resolved.householdId}/unknownIngredientQueue`), orderBy('createdAt', 'desc')), + (snapshot) => { + const queueItems: UnknownIngredientQueueItem[] = snapshot.docs.map((queueDoc) => ({ + id: queueDoc.id, + ...(queueDoc.data() as Omit), + })); + setUnknownIngredientQueue(queueItems); + hasLoadedUnknownQueue = true; + markInitialViewReady(); + }, + (error) => { + console.error('unknown_queue_snapshot_failed', { error, householdId: resolved.householdId }); + setUiFeedback({ kind: 'error', message: 'Failed to load unknown ingredient queue.' }); + hasLoadedUnknownQueue = true; + markInitialViewReady(); + }, + ); } catch (error) { console.error('household_initialize_failed', { error, userId: user.uid }); setUiFeedback({ kind: 'error', message: 'Failed to initialize household data.' }); @@ -203,6 +227,9 @@ export default function App() { if (logsUnsub) { logsUnsub(); } + if (unknownQueueUnsub) { + unknownQueueUnsub(); + } }; }, [user]); @@ -262,7 +289,7 @@ export default function App() { } }; - const handleAddUnlistedItem = async ( + const handleQueueUnknownIngredient = async ( name: string, status: InventoryStatus, category: string, @@ -273,7 +300,7 @@ export default function App() { } try { - await addUnlistedItemWithLog({ + await queueUnknownIngredient({ db, householdId, name, @@ -282,10 +309,48 @@ export default function App() { requestedQuantity, role, }); - setUiFeedback({ kind: 'success', message: 'Added new requested ingredient.' }); + setUiFeedback({ kind: 'success', message: 'Queued unknown ingredient for owner review.' }); + } catch (error) { + console.error('unknown_ingredient_queue_add_failed', { error, householdId, name, status, category, requestedQuantity }); + setUiFeedback({ kind: 'error', message: toUserFacingError(error, 'Could not queue unknown ingredient.') }); + } + }; + + const handlePromoteUnknownIngredient = async (queueItem: UnknownIngredientQueueItem): Promise => { + if (!user || !householdId) { + return; + } + + try { + await promoteUnknownIngredientQueueItem({ + db, + householdId, + queueItem, + role, + }); + setUiFeedback({ kind: 'success', message: 'Queued ingredient promoted to pantry.' }); + } catch (error) { + console.error('unknown_ingredient_promote_failed', { error, householdId, queueItemId: queueItem.id }); + setUiFeedback({ kind: 'error', message: toUserFacingError(error, 'Could not promote queued ingredient.') }); + } + }; + + const handleDismissUnknownIngredient = async (queueItem: UnknownIngredientQueueItem): Promise => { + if (!user || !householdId) { + return; + } + + try { + await dismissUnknownIngredientQueueItem({ + db, + householdId, + queueItem, + role, + }); + setUiFeedback({ kind: 'success', message: 'Queued ingredient dismissed.' }); } catch (error) { - console.error('inventory_add_unlisted_failed', { error, householdId, name, status, category, requestedQuantity }); - setUiFeedback({ kind: 'error', message: toUserFacingError(error, 'Could not add requested ingredient.') }); + console.error('unknown_ingredient_dismiss_failed', { error, householdId, queueItemId: queueItem.id }); + setUiFeedback({ kind: 'error', message: toUserFacingError(error, 'Could not dismiss queued ingredient.') }); } }; @@ -472,71 +537,96 @@ export default function App() { {role === 'owner' && householdData && (
-
-
-

{appCopy.householdSettings}

-

- {householdData.cookEmail - ? `Cook access granted to: ${householdData.cookEmail}` - : appCopy.inviteCookHint} -

-
- - +
+
+
+

{appCopy.householdSettings}

+

{appCopy.householdSettings}

+

{appCopy.householdSettingsHelper}

-
-
{householdData.cookEmail ? ( - - ) : ( -
- setInviteEmail(event.target.value)} - className="px-3 py-2 border border-stone-300 rounded-lg text-sm w-full sm:w-64 focus:ring-2 focus:ring-orange-500 outline-none" - /> - +
+ + {householdData.cookEmail}
- )} + ) : null}
-
+ +
+
+
+ + {appCopy.languageProfiles} +
+
+ + +
+
+ +
+
+
+ + {appCopy.cookAccess} +
+

{householdData.cookEmail ? householdData.cookEmail : appCopy.inviteCookHint}

+
+ +
+ {householdData.cookEmail ? ( + + ) : ( +
+ setInviteEmail(event.target.value)} + className="w-full rounded-xl border border-stone-300 bg-white px-3 py-3 text-sm text-stone-700 outline-none transition focus:border-orange-500 focus:ring-2 focus:ring-orange-100 sm:min-w-[17rem]" + /> + +
+ )} +
+
+
+
)} @@ -555,6 +645,9 @@ export default function App() { onDeleteInventoryItem={handleDeleteInventoryItem} onClearAnomaly={handleClearAnomaly} logs={logs} + unknownIngredientQueue={unknownIngredientQueue} + onPromoteUnknownIngredient={handlePromoteUnknownIngredient} + onDismissUnknownIngredient={handleDismissUnknownIngredient} language={ownerLanguage} /> ) : ( @@ -562,7 +655,7 @@ export default function App() { meals={meals} inventory={inventory} onUpdateInventory={handleUpdateInventory} - onAddUnlistedItem={handleAddUnlistedItem} + onQueueUnknownIngredient={handleQueueUnknownIngredient} language={cookLanguage} /> )} diff --git a/src/components/CookView.tsx b/src/components/CookView.tsx index 4dccfaa..0cd47e5 100644 --- a/src/components/CookView.tsx +++ b/src/components/CookView.tsx @@ -3,13 +3,14 @@ import { Sun, Moon, AlertCircle, CheckCircle2, Search, Mic, Info, ShoppingCart, import { MealPlan, InventoryItem, InventoryStatus, UiLanguage } from '../types'; import { parseCookVoiceInput } from '../services/ai'; import { getLocalDateKey } from '../utils/date'; -import { getCookCopy } from '../i18n/copy'; +import { getIngredientNativeContextLabel, resolveInventoryItemVisual } from '../utils/ingredientVisuals'; +import { getCookCopy, getInventoryCopy } from '../i18n/copy'; interface Props { meals: Record; inventory: InventoryItem[]; onUpdateInventory: (id: string, status: InventoryStatus, requestedQuantity?: string) => void; - onAddUnlistedItem: (name: string, status: InventoryStatus, category: string, requestedQuantity?: string) => void; + onQueueUnknownIngredient: (name: string, status: InventoryStatus, category: string, requestedQuantity?: string) => void; language: UiLanguage; } @@ -23,17 +24,11 @@ const DICT = { pantryCheck: "Pantry Check", pantryDesc: "Mark items that are running low or finished.", search: "Search ingredients...", - inStock: "Full", - low: "Low", - out: "Empty", voicePrompt: "Tell AI what's finished...", voiceBtn: "Update", notPlanned: "Not planned", success: "Updated successfully!", processing: "Processing...", - onList: "On List", - addNote: "Add Note", - save: "Save", }, hi: { todayMenu: "आज का मेनू", @@ -44,21 +39,15 @@ const DICT = { pantryCheck: "राशन चेक करें", pantryDesc: "जो सामान कम है या खत्म हो गया है, उसे मार्क करें।", search: "सामान खोजें...", - inStock: "पूरा है", - low: "कम है", - out: "खत्म", voicePrompt: "AI को बताएं क्या खत्म हुआ...", voiceBtn: "अपडेट करें", notPlanned: "तय नहीं है", success: "अपडेट हो गया!", processing: "प्रोसेस हो रहा है...", - onList: "सूची में है", - addNote: "नोट लिखें", - save: "सेव", } }; -export default function CookView({ meals, inventory, onUpdateInventory, onAddUnlistedItem, language }: Props) { +export default function CookView({ meals, inventory, onUpdateInventory, onQueueUnknownIngredient, language }: Props) { const [searchTerm, setSearchTerm] = useState(''); const [aiInput, setAiInput] = useState(''); const [isProcessing, setIsProcessing] = useState(false); @@ -66,10 +55,12 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl const [errorMessage, setErrorMessage] = useState(null); const [editingNoteId, setEditingNoteId] = useState(null); const [noteValue, setNoteValue] = useState(''); + const [failedImageIds, setFailedImageIds] = useState>({}); const lang = language; const t = DICT[lang]; const copy = getCookCopy(lang); + const inventoryCopy = getInventoryCopy(lang); const today = getLocalDateKey(new Date()); const todaysMeals = meals[today] || { morning: t.notPlanned, evening: t.notPlanned, notes: undefined, leftovers: undefined }; @@ -94,11 +85,7 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl setNoteValue(''); } - let statusText = ''; - if (status === 'in-stock') statusText = t.inStock; - if (status === 'low') statusText = t.low; - if (status === 'out') statusText = t.out; - + const statusText = inventoryCopy.statusLabels[status]; const displayName = lang === 'hi' && itemHiName ? itemHiName : itemName; showToast(`${displayName} ➔ ${statusText}`); }; @@ -107,7 +94,20 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl onUpdateInventory(id, status, noteValue); setEditingNoteId(null); setNoteValue(''); - showToast(lang === 'hi' ? 'नोट सेव हो गया' : 'Note saved'); + showToast(inventoryCopy.noteSaved); + }; + + const handleVisualImageError = (itemId: string): void => { + setFailedImageIds((current) => { + if (current[itemId]) { + return current; + } + + return { + ...current, + [itemId]: true, + }; + }); }; const handleAiSubmit = async (e: React.FormEvent) => { @@ -132,7 +132,7 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl }); result.unlistedItems.forEach(item => { - onAddUnlistedItem(item.name, item.status as InventoryStatus, item.category, item.requestedQuantity); + onQueueUnknownIngredient(item.name, item.status as InventoryStatus, item.category, item.requestedQuantity); updatedCount++; }); @@ -304,76 +304,111 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl
-
- {filteredInventory.map((item) => ( + {filteredInventory.length === 0 ? ( +
+ {lang === 'hi' ? 'कोई आइटम नहीं मिला। दूसरा नाम खोजें।' : 'No matching items found. Try another search term.'} +
+ ) : ( +
+ {filteredInventory.map((item) => { + const visual = resolveInventoryItemVisual(item); + const nativeContext = getIngredientNativeContextLabel(item, visual); + const showImage = visual.imageUrl !== null && failedImageIds[item.id] !== true; + + return (
- {item.icon} + {showImage ? ( + {visual.altText} handleVisualImageError(item.id)} + /> + ) : ( + + {visual.fallbackIcon} + + )}

{lang === 'hi' && item.nameHi ? item.nameHi : item.name}

{lang === 'hi' &&

{item.name}

} + {nativeContext !== null && (lang === 'en' || item.nameHi === undefined) ? ( + + {nativeContext} + + ) : null}
{(item.status === 'low' || item.status === 'out') && (
- {t.onList} + {inventoryCopy.onGroceryList}
)}
-
+
{(item.status === 'low' || item.status === 'out') && (
{editingNoteId === item.id ? ( -
+
setNoteValue(e.target.value)} - placeholder={lang === 'hi' ? 'कितना चाहिए? (उदा: 2kg)' : 'Quantity? (e.g. 2kg)'} + placeholder={inventoryCopy.quantityPlaceholder} className="min-w-0 flex-1 rounded-xl border border-stone-300 px-3 py-2 text-sm outline-none transition focus:border-orange-500 focus:ring-2 focus:ring-orange-100" autoFocus /> @@ -389,18 +424,20 @@ export default function CookView({ meals, inventory, onUpdateInventory, onAddUnl {item.requestedQuantity ? ( - {lang === 'hi' ? 'नोट:' : 'Note:'} {item.requestedQuantity} + {inventoryCopy.noteLabel}: {item.requestedQuantity} ) : ( - {t.addNote} + {inventoryCopy.addNote} )} )}
)}
- ))} -
+ ); + })} +
+ )}
diff --git a/src/components/GroceryList.tsx b/src/components/GroceryList.tsx index 3cfc11f..3717339 100644 --- a/src/components/GroceryList.tsx +++ b/src/components/GroceryList.tsx @@ -1,15 +1,48 @@ import React from 'react'; import { ShoppingCart, CheckCircle2 } from 'lucide-react'; -import { InventoryItem, InventoryStatus } from '../types'; +import { InventoryItem, InventoryStatus, UiLanguage } from '../types'; +import { getIngredientNativeContextLabel, resolveInventoryItemVisual } from '../utils/ingredientVisuals'; import { getPantryCategoryLabel } from '../utils/pantryCategory'; +import { getInventoryCopy } from '../i18n/copy'; interface Props { inventory: InventoryItem[]; onUpdateInventory: (id: string, status: InventoryStatus) => void; + language: UiLanguage; } -export default function GroceryList({ inventory, onUpdateInventory }: Props) { +export default function GroceryList({ inventory, onUpdateInventory, language }: Props) { + const [failedImageIds, setFailedImageIds] = React.useState>({}); const lowStockItems = inventory.filter((item) => item.status === 'low' || item.status === 'out'); + const inventoryCopy = getInventoryCopy(language); + const content = language === 'hi' + ? { + tag: 'ओनर किराना सूची', + title: 'किराना सूची', + helper: 'जो सामान कम हो रहा है या खत्म हो गया है, उसे यहां ट्रैक करें और भरने के बाद अपडेट करें।', + emptyTitle: 'अभी सब ठीक है', + emptyHelper: 'जब कोई आइटम कम होगा या खत्म होगा, वह यहां दिखेगा।', + } + : { + tag: 'Owner Grocery List', + title: 'Grocery List', + helper: 'Track items that are running low or out of stock, then update them once restocked.', + emptyTitle: 'All caught up', + emptyHelper: 'Nothing is currently running low. When pantry items drop to running low or out of stock, they will appear here.', + }; + + const handleVisualImageError = (itemId: string): void => { + setFailedImageIds((current) => { + if (current[itemId]) { + return current; + } + + return { + ...current, + [itemId]: true, + }; + }); + }; return (
@@ -18,11 +51,9 @@ export default function GroceryList({ inventory, onUpdateInventory }: Props) {
-

Owner Grocery List

-

Grocery List

-

- Track running-low items and mark them bought when restocked. -

+

{content.tag}

+

{content.title}

+

{content.helper}

@@ -31,18 +62,21 @@ export default function GroceryList({ inventory, onUpdateInventory }: Props) {
-

All caught up

-

- Nothing is currently running low. When pantry items drop to low or out of stock, they will appear here. -

+

{content.emptyTitle}

+

{content.emptyHelper}

) : (
    - {lowStockItems.map((item) => ( + {lowStockItems.map((item) => { + const visual = resolveInventoryItemVisual(item); + const nativeContext = getIngredientNativeContextLabel(item, visual); + const showImage = visual.imageUrl !== null && failedImageIds[item.id] !== true; + + return (
  • - {item.icon} + {showImage ? ( + {visual.altText} handleVisualImageError(item.id)} + /> + ) : ( + + {visual.fallbackIcon} + + )} {item.name} @@ -62,21 +113,30 @@ export default function GroceryList({ inventory, onUpdateInventory }: Props) { )}
    -

    - {getPantryCategoryLabel(item.category)} • {item.status === 'out' ? 'Finished' : 'Running Low'} + {nativeContext !== null ? ( + + {nativeContext} + + ) : null} +

    + {getPantryCategoryLabel(item.category)} • {inventoryCopy.statusLabels[item.status]}

  • - ))} + ); + })}
)} diff --git a/src/components/MealPlanner.tsx b/src/components/MealPlanner.tsx index b88f79c..e0d4f12 100644 --- a/src/components/MealPlanner.tsx +++ b/src/components/MealPlanner.tsx @@ -31,6 +31,18 @@ function getMealDetailValue(meal: MealPlan | undefined, field: MealDetailField): return meal[field] ?? ''; } +function formatWeekRangeLabel(weekDays: Date[]): string { + return `${weekDays[0].toLocaleDateString('en-US', { month: 'short', day: 'numeric' })} - ${weekDays[6].toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}`; +} + +function formatWeekdayLabel(day: Date): string { + return day.toLocaleDateString('en-US', { weekday: 'short' }); +} + +function formatMonthDayLabel(day: Date): string { + return day.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }); +} + export default function MealPlanner({ meals, onUpdateMeal }: Props) { const [currentDate, setCurrentDate] = useState(new Date()); const [detailDrafts, setDetailDrafts] = useState({}); @@ -50,6 +62,7 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) { }; const weekDays = getWeekDays(currentDate); + const weekRangeLabel = formatWeekRangeLabel(weekDays); const prevWeek = (): void => { const newDate = new Date(currentDate); @@ -125,26 +138,23 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) { return (
-
+

Weekly Meal Plan

-

- {weekDays[0].toLocaleDateString('en-US', { month: 'short', day: 'numeric' })} -{' '} - {weekDays[6].toLocaleDateString('en-US', { month: 'short', day: 'numeric' })} -

+

{weekRangeLabel}

-
+
{weekDays.map((day, index) => { const dateStr = getLocalDateKey(day); const isToday = dateStr === todayDateKey; @@ -177,9 +187,10 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) { isToday ? 'text-orange-700' : 'text-stone-500' }`} > - {day.toLocaleDateString('en-US', { weekday: 'short' })} + {formatWeekdayLabel(day)}

{day.getDate()}

+

{formatMonthDayLabel(day)}

{isToday ? ( @@ -189,7 +200,7 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) {
-
+
Breakfast / Lunch @@ -199,11 +210,11 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) { onChange={(event) => handleMealChange(dateStr, 'morning', event.target.value)} data-testid={`meal-day-${index}-morning`} placeholder="Plan morning/lunch..." - className="min-h-32 w-full resize-y rounded-2xl border border-stone-200 bg-stone-50 px-4 py-3.5 text-[15px] leading-6 text-stone-800 outline-none transition focus:border-orange-400 focus:bg-white focus:ring-2 focus:ring-orange-200" + className="mt-3 min-h-28 w-full resize-y rounded-2xl border border-stone-200 bg-white px-4 py-3.5 text-[15px] leading-6 text-stone-800 outline-none transition focus:border-orange-400 focus:ring-2 focus:ring-orange-200" />
-
+
Dinner @@ -213,7 +224,7 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) { onChange={(event) => handleMealChange(dateStr, 'evening', event.target.value)} data-testid={`meal-day-${index}-evening`} placeholder="Dinner" - className="min-h-32 w-full resize-y rounded-2xl border border-stone-200 bg-stone-50 px-4 py-3.5 text-[15px] leading-6 text-stone-800 outline-none transition focus:border-orange-400 focus:bg-white focus:ring-2 focus:ring-orange-200" + className="mt-3 min-h-28 w-full resize-y rounded-2xl border border-stone-200 bg-white px-4 py-3.5 text-[15px] leading-6 text-stone-800 outline-none transition focus:border-orange-400 focus:ring-2 focus:ring-orange-200" />
@@ -224,7 +235,7 @@ export default function MealPlanner({ meals, onUpdateMeal }: Props) {

Details

-

Add leftovers and notes here. Changes save after a short pause or when you leave the field.

+

Add leftovers and notes here. Changes save after a short pause or when you leave the field.

diff --git a/src/components/OwnerView.tsx b/src/components/OwnerView.tsx index d9ba0fd..2aa54c6 100644 --- a/src/components/OwnerView.tsx +++ b/src/components/OwnerView.tsx @@ -1,10 +1,22 @@ -import React, { useState } from 'react'; +import React, { useRef, useState } from 'react'; import { CalendarDays, ShoppingCart, Package } from 'lucide-react'; -import { MealPlan, InventoryItem, InventoryStatus, PantryLog, UiLanguage } from '../types'; +import { MealPlan, InventoryItem, InventoryStatus, PantryLog, UiLanguage, UnknownIngredientQueueItem } from '../types'; import MealPlanner from './MealPlanner'; import GroceryList from './GroceryList'; import Pantry from './Pantry'; -import { getOwnerCopy } from '../i18n/copy'; +import { getInventoryCopy, getOwnerCopy } from '../i18n/copy'; + +type OwnerTab = 'meals' | 'grocery' | 'pantry'; + +const ownerTabs: OwnerTab[] = ['meals', 'grocery', 'pantry']; + +function getOwnerTabId(tab: OwnerTab): string { + return `owner-tab-${tab}`; +} + +function getOwnerPanelId(tab: OwnerTab): string { + return `owner-panel-${tab}`; +} interface Props { meals: Record; @@ -15,30 +27,103 @@ interface Props { onDeleteInventoryItem: (id: string) => void; onClearAnomaly: (id: string) => void; logs: PantryLog[]; + unknownIngredientQueue: UnknownIngredientQueueItem[]; + onPromoteUnknownIngredient: (queueItem: UnknownIngredientQueueItem) => void; + onDismissUnknownIngredient: (queueItem: UnknownIngredientQueueItem) => void; language: UiLanguage; } -export default function OwnerView({ meals, onUpdateMeal, inventory, onAddInventoryItem, onUpdateInventory, onDeleteInventoryItem, onClearAnomaly, logs, language }: Props) { - const [activeTab, setActiveTab] = useState<'meals' | 'grocery' | 'pantry'>('meals'); +export default function OwnerView({ meals, onUpdateMeal, inventory, onAddInventoryItem, onUpdateInventory, onDeleteInventoryItem, onClearAnomaly, logs, unknownIngredientQueue, onPromoteUnknownIngredient, onDismissUnknownIngredient, language }: Props) { + const [activeTab, setActiveTab] = useState('meals'); + const tabRefs = useRef>({ + meals: null, + grocery: null, + pantry: null, + }); const copy = getOwnerCopy(language); + const inventoryCopy = getInventoryCopy(language); + const groceryPendingCount = inventory.filter((item) => item.status === 'low' || item.status === 'out').length; + const pantryAnomalyCount = inventory.filter((item) => item.verificationNeeded === true).length; + const unknownQueueOpenCount = unknownIngredientQueue.filter((item) => item.status === 'open').length; + const pantryAttentionCount = pantryAnomalyCount + unknownQueueOpenCount; const panelClassName = 'min-h-[600px] rounded-[28px] border border-stone-200/80 bg-stone-50/60 p-3 shadow-sm md:p-4'; - const tabButtonClass = (tab: 'meals' | 'grocery' | 'pantry'): string => - `flex min-w-0 items-center justify-center gap-2 rounded-[20px] px-4 py-3 text-sm font-semibold transition-all ${ + const tabButtonClass = (tab: OwnerTab): string => + `flex min-w-0 items-center justify-center gap-2 rounded-[20px] border px-4 py-3 text-sm font-semibold transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-orange-300 md:px-5 ${ activeTab === tab - ? 'border border-orange-200 bg-orange-100 text-orange-800 shadow-sm' - : 'border border-transparent bg-transparent text-stone-500 hover:border-stone-200 hover:bg-white hover:text-stone-800' + ? 'border-orange-200 bg-white text-orange-800 shadow-sm ring-1 ring-orange-100' + : 'border-transparent bg-transparent text-stone-500 hover:border-stone-200 hover:bg-white/90 hover:text-stone-800' }`; + const counterClassName = (count: number): string => + `inline-flex min-w-7 items-center justify-center rounded-full px-2 py-0.5 text-xs font-bold ${ + count > 0 ? 'bg-orange-100 text-orange-700' : 'bg-stone-200 text-stone-500' + }`; + + const setAndFocusTab = (tab: OwnerTab): void => { + setActiveTab(tab); + tabRefs.current[tab]?.focus(); + }; + + const handleTabKeyDown = (tab: OwnerTab, event: React.KeyboardEvent): void => { + const currentIndex = ownerTabs.indexOf(tab); + let nextTab: OwnerTab | null = null; + + if (event.key === 'ArrowRight') { + nextTab = ownerTabs[(currentIndex + 1) % ownerTabs.length]; + } + + if (event.key === 'ArrowLeft') { + nextTab = ownerTabs[(currentIndex - 1 + ownerTabs.length) % ownerTabs.length]; + } + + if (event.key === 'Home') { + nextTab = ownerTabs[0]; + } + + if (event.key === 'End') { + nextTab = ownerTabs[ownerTabs.length - 1]; + } + + if (nextTab === null) { + return; + } + + event.preventDefault(); + setAndFocusTab(nextTab); + }; + + const renderPanelContent = (tab: OwnerTab): React.ReactNode => { + if (tab === 'meals') { + return ; + } + + if (tab === 'grocery') { + return ; + } + + return ( + + ); + }; return ( -
+
-
+

{copy.workspaceTag}

{copy.title}

-

- {copy.helper} -

+

{copy.helper}

@@ -49,30 +134,91 @@ export default function OwnerView({ meals, onUpdateMeal, inventory, onAddInvento
-
-
- - -
-
-
- {activeTab === 'meals' && } - {activeTab === 'grocery' && } - {activeTab === 'pantry' && } + {ownerTabs.map((tab) => ( + -
-
+ ))} +
); } diff --git a/src/components/Pantry.tsx b/src/components/Pantry.tsx index d259151..33afbbe 100644 --- a/src/components/Pantry.tsx +++ b/src/components/Pantry.tsx @@ -1,7 +1,9 @@ import React, { useState } from 'react'; import { AlertTriangle, CheckCircle2, Clock, History, Package, Plus, Search, Trash2 } from 'lucide-react'; -import { InventoryItem, InventoryStatus, PantryLog } from '../types'; +import { InventoryItem, InventoryStatus, PantryLog, Role, UiLanguage, UnknownIngredientQueueItem } from '../types'; import { generateId } from '../utils/id'; +import { getIngredientNativeContextLabel, resolveIngredientVisual, resolveInventoryItemVisual } from '../utils/ingredientVisuals'; +import { getInventoryCopy } from '../i18n/copy'; import { getPantryCategoryLabel, getPantryCategoryOptions, @@ -17,16 +19,139 @@ interface Props { onDeleteInventoryItem: (id: string) => void; onClearAnomaly: (id: string) => void; logs: PantryLog[]; + unknownIngredientQueue: UnknownIngredientQueueItem[]; + onPromoteUnknownIngredient: (queueItem: UnknownIngredientQueueItem) => void; + onDismissUnknownIngredient: (queueItem: UnknownIngredientQueueItem) => void; + language: UiLanguage; } const categoryOptions = getPantryCategoryOptions(); -export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventory, onDeleteInventoryItem, onClearAnomaly, logs }: Props) { +function getStatusSelectToneClass(status: InventoryStatus): string { + if (status === 'in-stock') { + return 'border-emerald-200 bg-emerald-50 text-emerald-700'; + } + + if (status === 'low') { + return 'border-yellow-200 bg-yellow-50 text-yellow-700'; + } + + return 'border-red-200 bg-red-50 text-red-700'; +} + +function getStatusTextToneClass(status: InventoryStatus): string { + if (status === 'in-stock') { + return 'text-emerald-600'; + } + + if (status === 'low') { + return 'text-yellow-600'; + } + + return 'text-red-600'; +} + +function getStatusIconToneClass(status: InventoryStatus): string { + if (status === 'in-stock') { + return 'bg-emerald-100 text-emerald-600'; + } + + if (status === 'low') { + return 'bg-yellow-100 text-yellow-600'; + } + + return 'bg-red-100 text-red-600'; +} + +function getRoleLabel(language: UiLanguage, role: Role): string { + if (language === 'hi') { + return role === 'owner' ? 'ओनर' : 'कुक'; + } + + return role === 'owner' ? 'Owner' : 'Cook'; +} + +export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventory, onDeleteInventoryItem, onClearAnomaly, logs, unknownIngredientQueue, onPromoteUnknownIngredient, onDismissUnknownIngredient, language }: Props) { const [newItemName, setNewItemName] = useState(''); const [newItemCategory, setNewItemCategory] = useState('spices'); const [newItemQuantity, setNewItemQuantity] = useState(''); const [searchTerm, setSearchTerm] = useState(''); const [viewMode, setViewMode] = useState<'inventory' | 'logs'>('inventory'); + const [failedImageIds, setFailedImageIds] = useState>({}); + const inventoryCopy = getInventoryCopy(language); + const content = language === 'hi' + ? { + workspaceTag: 'ओनर वर्कस्पेस', + title: 'पेंट्री मैनेजमेंट', + helper: 'इन्वेंटरी ट्रैक करें, विसंगतियां साफ करें, और गतिविधि लॉग्स देखें।', + inventoryView: 'इन्वेंटरी', + logsView: 'एक्टिविटी लॉग्स', + addTitle: 'नया सामान जोड़ें', + addHelper: 'मोबाइल पर फॉर्म कॉम्पैक्ट रखें और बड़ी स्क्रीन पर आराम से भरें।', + namePlaceholder: 'सामान का नाम (उदा: जीरा)', + defaultSizePlaceholder: 'डिफ़ॉल्ट मात्रा (उदा: 500g)', + addItem: 'आइटम जोड़ें', + inventoryTitle: 'इन्वेंटरी', + inventoryHelper: 'एक ही जगह से खोजें, अपडेट करें, वेरिफाई करें, और हटाएँ।', + searchPlaceholder: 'पेंट्री खोजें...', + nameColumn: 'नाम', + categoryColumn: 'कैटेगरी', + defaultSizeColumn: 'डिफ़ॉल्ट मात्रा', + statusColumn: 'स्थिति', + lastUpdatedColumn: 'आखिरी अपडेट', + actionsColumn: 'एक्शन', + mobileMetaLabel: 'आखिरी अपडेट', + updatedByPrefix: 'द्वारा', + clearWarning: 'चेतावनी साफ करें', + deleteItem: 'आइटम हटाएँ', + noItems: 'कोई आइटम नहीं मिला।', + queueTitle: 'अज्ञात सामग्री समीक्षा कतार', + queueHelper: 'कुक की नई अनमैच सामग्री रिक्वेस्ट यहां आएगी। पेंट्री में प्रमोट करें या खारिज करें।', + queueEmpty: 'समीक्षा के लिए कोई लंबित रिक्वेस्ट नहीं है।', + queueRequestedBy: 'रिक्वेस्ट', + queuePromote: 'प्रमोट करें', + queueDismiss: 'खारिज करें', + logsTitle: 'एक्टिविटी लॉग्स', + logsHelper: 'हाल के पेंट्री बदलाव, वेरिफिकेशन इवेंट्स, और स्टेटस अपडेट्स।', + noLogsTitle: 'अभी कोई एक्टिविटी लॉग नहीं है।', + noLogsHelper: 'पेंट्री आइटम में बदलाव यहां दिखाई देंगे।', + } + : { + workspaceTag: 'Owner Workspace', + title: 'Pantry Management', + helper: 'Track inventory, resolve anomalies, and review activity without losing the table workflow.', + inventoryView: 'Inventory', + logsView: 'Activity Logs', + addTitle: 'Add New Ingredient', + addHelper: 'Keep the form compact on mobile and open it up on larger screens.', + namePlaceholder: 'Ingredient name (e.g., Jeera)', + defaultSizePlaceholder: 'Default Size (e.g., 500g)', + addItem: 'Add Item', + inventoryTitle: 'Inventory', + inventoryHelper: 'Search, update, verify, and delete items from one place.', + searchPlaceholder: 'Search pantry...', + nameColumn: 'Name', + categoryColumn: 'Category', + defaultSizeColumn: 'Default Size', + statusColumn: 'Status', + lastUpdatedColumn: 'Last Updated', + actionsColumn: 'Actions', + mobileMetaLabel: 'Last updated', + updatedByPrefix: 'by', + clearWarning: 'Verify & Clear Warning', + deleteItem: 'Delete Item', + noItems: 'No items found.', + queueTitle: 'Unknown Ingredient Review Queue', + queueHelper: 'New unmatched ingredient requests from cook are collected here for owner review.', + queueEmpty: 'No pending unknown ingredient requests.', + queueRequestedBy: 'Requested', + queuePromote: 'Promote', + queueDismiss: 'Dismiss', + logsTitle: 'Activity Logs', + logsHelper: 'Recent pantry changes, verification events, and status updates.', + noLogsTitle: 'No activity logs yet.', + noLogsHelper: 'Changes to pantry items will appear here.', + }; const handleAddItem = (event: React.FormEvent): void => { event.preventDefault(); @@ -34,12 +159,17 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor return; } + const category = normalizePantryCategory(newItemCategory); + const visual = resolveIngredientVisual({ + name: newItemName.trim(), + category, + }); const newItem: InventoryItem = { id: generateId(), name: newItemName.trim(), - category: newItemCategory, + category, status: 'in-stock', - icon: '📦', + icon: visual.fallbackIcon, lastUpdated: new Date().toISOString(), updatedBy: 'owner', defaultQuantity: newItemQuantity || undefined, @@ -51,12 +181,30 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor }; const handleDeleteItem = (id: string): void => { + const confirmed = window.confirm('Delete this pantry item? This action cannot be undone.'); + if (!confirmed) { + return; + } onDeleteInventoryItem(id); }; + const handleVisualImageError = (itemId: string): void => { + setFailedImageIds((current) => { + if (current[itemId]) { + return current; + } + + return { + ...current, + [itemId]: true, + }; + }); + }; + const filteredInventory = inventory.filter( (item) => item.name.toLowerCase().includes(searchTerm.toLowerCase()) || + (item.nameHi !== undefined && item.nameHi.includes(searchTerm)) || pantryCategoryMatchesSearch(item.category, searchTerm), ); @@ -70,6 +218,108 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor }); }; + const renderItemVisual = (item: InventoryItem): React.ReactNode => { + const visual = resolveInventoryItemVisual(item); + const showImage = visual.imageUrl !== null && failedImageIds[item.id] !== true; + + if (showImage) { + return ( + {visual.altText} handleVisualImageError(item.id)} + /> + ); + } + + return ( + + {visual.fallbackIcon} + + ); + }; + + const renderStatusSelect = (item: InventoryItem, testId?: string): React.ReactNode => ( + + ); + + const renderUpdatedMeta = (item: InventoryItem): React.ReactNode => { + if (!item.lastUpdated) { + return -; + } + + return ( +
+ + + {formatTime(item.lastUpdated)} + + + {content.updatedByPrefix} {item.updatedBy ? getRoleLabel(language, item.updatedBy) : '-'} + +
+ ); + }; + + const getNativeContext = (item: InventoryItem): { label: string | null; title: string | undefined } => { + const visual = resolveInventoryItemVisual(item); + return { + label: getIngredientNativeContextLabel(item, visual), + title: visual.catalogMatch?.canonicalName, + }; + }; + + const renderActionButtons = (item: InventoryItem, className: string, clearTestId?: string, deleteTestId?: string): React.ReactNode => ( +
+ {item.verificationNeeded ? ( + + ) : null} + +
+ ); + + const formatLogMessage = (log: PantryLog): string => { + const roleLabel = getRoleLabel(language, log.role); + + if (language === 'hi') { + return `${roleLabel} ने ${log.itemName} को`; + } + + return `${roleLabel} ${inventoryCopy.logMarkedAs} ${log.itemName} as`; + }; + + const openQueueItems = unknownIngredientQueue.filter((queueItem) => queueItem.status === 'open'); + return (
@@ -79,11 +329,9 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor
-

Owner Workspace

-

Pantry Management

-

- Track inventory, resolve anomalies, and review activity without losing the table workflow. -

+

{content.workspaceTag}

+

{content.title}

+

{content.helper}

@@ -95,7 +343,7 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor }`} data-testid="pantry-view-inventory" > - Inventory + {content.inventoryView}
@@ -115,13 +363,13 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor
-

Add New Ingredient

-

Keep the form compact on mobile and open it up on larger screens.

+

{content.addTitle}

+

{content.addHelper}

setNewItemName(event.target.value)} className="w-full rounded-xl border border-stone-300 bg-white px-4 py-3 text-sm outline-none transition focus:border-orange-500 focus:ring-2 focus:ring-orange-100" @@ -141,7 +389,7 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor setNewItemQuantity(event.target.value)} className="w-full rounded-xl border border-stone-300 bg-white px-4 py-3 text-sm outline-none transition focus:border-orange-500 focus:ring-2 focus:ring-orange-100" @@ -153,22 +401,70 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor data-testid="pantry-add-item" > - Add Item + {content.addItem}
+
+
+

{content.queueTitle}

+

{content.queueHelper}

+
+ {openQueueItems.length === 0 ? ( +

{content.queueEmpty}

+ ) : ( +
+ {openQueueItems.map((queueItem) => ( +
+
+
+

{queueItem.name}

+

{getPantryCategoryLabel(queueItem.category)}

+

+ {content.queueRequestedBy} {getRoleLabel(language, queueItem.createdBy)} • {formatTime(queueItem.createdAt)} +

+ {queueItem.requestedQuantity ? ( +

{queueItem.requestedQuantity}

+ ) : null} +
+ + {inventoryCopy.statusLabels[queueItem.requestedStatus]} + +
+
+ + +
+
+ ))} +
+ )} +
+
-

Inventory Table

-

Search, update, verify, and delete items from one place.

+

{content.inventoryTitle}

+

{content.inventoryHelper}

setSearchTerm(event.target.value)} className="w-full rounded-xl border border-stone-300 bg-white py-3 pl-10 pr-4 text-base outline-none shadow-sm transition focus:border-orange-500 focus:ring-2 focus:ring-orange-100" @@ -178,26 +474,99 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor
-
- + {filteredInventory.length === 0 ? ( +
+ {content.noItems} +
+ ) : ( + <> +
+ {filteredInventory.map((item) => { + const nativeContext = getNativeContext(item); + + return ( +
+
+ {renderItemVisual(item)} +
+
+
+

{item.name}

+ {nativeContext.label !== null ? ( + + {nativeContext.label} + + ) : null} +

{getPantryCategoryLabel(item.category)}

+
+ {item.defaultQuantity ? ( + + {item.defaultQuantity} + + ) : null} +
+ {item.verificationNeeded ? ( + + + {item.anomalyReason} + + ) : null} +
+
+ +
+
+

{content.statusColumn}

+ {renderStatusSelect(item, `pantry-mobile-status-${item.id}`)} +
+
+

{content.mobileMetaLabel}

+ {renderUpdatedMeta(item)} +
+
+ +
+ {renderActionButtons(item, 'flex flex-wrap gap-2', `pantry-mobile-clear-anomaly-${item.id}`, `pantry-mobile-delete-${item.id}`)} +
+
+ ); + })} +
+ +
+
- - - - - - + + + + + + - {filteredInventory.map((item) => ( + {filteredInventory.map((item) => { + const nativeContext = getNativeContext(item); + + return ( - + - ))} + ); + })}
NameCategoryDefault SizeStatusLast UpdatedActions{content.nameColumn}{content.categoryColumn}{content.defaultSizeColumn}{content.statusColumn}{content.lastUpdatedColumn}{content.actionsColumn}
- {item.icon} + {renderItemVisual(item)}
{item.name} + {nativeContext.label !== null ? ( + + {nativeContext.label} + + ) : null} {item.verificationNeeded ? ( @@ -210,112 +579,51 @@ export default function Pantry({ inventory, onAddInventoryItem, onUpdateInventor
{getPantryCategoryLabel(item.category)} {item.defaultQuantity || '-'} - - - {item.lastUpdated ? ( -
- - - {formatTime(item.lastUpdated)} - - by {item.updatedBy} -
- ) : ( - - - )} +
+ {renderStatusSelect(item, `pantry-status-${item.id}`)} +
{renderUpdatedMeta(item)} -
- {item.verificationNeeded ? ( - - ) : null} - -
+ {renderActionButtons(item, 'flex flex-wrap justify-end gap-2', `pantry-clear-anomaly-${item.id}`, `pantry-delete-${item.id}`)}
-
- {filteredInventory.length === 0 ? ( -
- No items found. -
- ) : null} +
+ + )}
) : (
-

Activity Logs

-

Recent pantry changes, verification events, and status updates.

+

{content.logsTitle}

+

{content.logsHelper}

{logs.length === 0 ? (
-

No activity logs yet.

-

Changes to pantry items will appear here.

+

{content.noLogsTitle}

+

{content.noLogsHelper}

) : (
    {logs.map((log) => (
  • -
    +

    - {log.role} marked {log.itemName} as{' '} - - {log.newStatus === 'in-stock' ? 'In Stock' : log.newStatus === 'low' ? 'Running Low' : 'Finished'} + {formatLogMessage(log)}{' '} + + {inventoryCopy.statusLabels[log.newStatus]} + {language === 'hi' ? {' मार्क किया'} : null}

    diff --git a/src/i18n/copy.ts b/src/i18n/copy.ts index c1ce069..03daa12 100644 --- a/src/i18n/copy.ts +++ b/src/i18n/copy.ts @@ -1,4 +1,4 @@ -import { UiLanguage } from '../types'; +import { InventoryStatus, UiLanguage } from '../types'; export interface AppCopy { ownerWorkspace: string; @@ -11,11 +11,14 @@ export interface AppCopy { accessRemoved: string; accessRemovedDetail: string; householdSettings: string; + householdSettingsHelper: string; inviteCookHint: string; inviteCookPlaceholder: string; invite: string; inviting: string; removeCook: string; + languageProfiles: string; + cookAccess: string; ownerLanguageLabel: string; cookLanguageLabel: string; ownerLanguageHint: string; @@ -42,6 +45,21 @@ export interface CookCopy { switchLabel: string; } +export interface InventoryCopy { + statusLabels: Record; + onGroceryList: string; + markRestocked: string; + addNote: string; + noteLabel: string; + saveNote: string; + quantityPlaceholder: string; + noteSaved: string; + groceryPendingCountLabel: string; + pantryAnomaliesCountLabel: string; + pantryReviewItemsCountLabel: string; + logMarkedAs: string; +} + const appCopyByLanguage: Record = { en: { ownerWorkspace: 'Owner workspace', @@ -54,11 +72,14 @@ const appCopyByLanguage: Record = { accessRemoved: 'Access Removed', accessRemovedDetail: 'Your owner removed this cook access. Sign out and ask the owner to invite you again.', householdSettings: 'Household Settings', + householdSettingsHelper: 'Manage access and language preferences without leaving the owner workspace.', inviteCookHint: 'Invite your cook to sync the pantry.', inviteCookPlaceholder: "Cook's Gmail address", invite: 'Invite', inviting: 'Inviting...', removeCook: 'Remove Cook', + languageProfiles: 'Language profiles', + cookAccess: 'Cook access', ownerLanguageLabel: 'Owner language profile', cookLanguageLabel: 'Cook language profile', ownerLanguageHint: 'English first with Hinglish helper is recommended for owner operations.', @@ -75,11 +96,14 @@ const appCopyByLanguage: Record = { accessRemoved: 'एक्सेस हटाया गया', accessRemovedDetail: 'ओनर ने यह कुक एक्सेस हटा दिया है। साइन आउट करें और फिर से इनवाइट के लिए कहें।', householdSettings: 'घर की सेटिंग्स', + householdSettingsHelper: 'ओनर वर्कस्पेस छोड़े बिना एक्सेस और भाषा पसंद संभालें।', inviteCookHint: 'पेंट्री सिंक के लिए अपने कुक को इनवाइट करें।', inviteCookPlaceholder: 'कुक का Gmail पता', invite: 'इनवाइट', inviting: 'इनवाइट भेज रहे हैं...', removeCook: 'कुक हटाएँ', + languageProfiles: 'भाषा प्रोफाइल', + cookAccess: 'कुक एक्सेस', ownerLanguageLabel: 'ओनर भाषा प्रोफाइल', cookLanguageLabel: 'कुक भाषा प्रोफाइल', ownerLanguageHint: 'ओनर काम के लिए English + Hinglish helper सबसे आसान रहता है।', @@ -129,6 +153,45 @@ const cookCopyByLanguage: Record = { }, }; +const inventoryCopyByLanguage: Record = { + en: { + statusLabels: { + 'in-stock': 'In Stock', + low: 'Running Low', + out: 'Out of Stock', + }, + onGroceryList: 'On List', + markRestocked: 'Mark Restocked', + addNote: 'Add Note', + noteLabel: 'Note', + saveNote: 'Save note', + quantityPlaceholder: 'Quantity? (e.g. 2kg)', + noteSaved: 'Note saved', + groceryPendingCountLabel: 'pending grocery items', + pantryAnomaliesCountLabel: 'pantry anomalies', + pantryReviewItemsCountLabel: 'pantry review items', + logMarkedAs: 'marked', + }, + hi: { + statusLabels: { + 'in-stock': 'स्टॉक में है', + low: 'कम हो रहा है', + out: 'खत्म हो गया', + }, + onGroceryList: 'सूची में है', + markRestocked: 'फिर से भर गया', + addNote: 'नोट जोड़ें', + noteLabel: 'नोट', + saveNote: 'नोट सेव करें', + quantityPlaceholder: 'कितना चाहिए? (उदा: 2kg)', + noteSaved: 'नोट सेव हो गया', + groceryPendingCountLabel: 'किराना आइटम लंबित', + pantryAnomaliesCountLabel: 'पेंट्री विसंगतियां', + pantryReviewItemsCountLabel: 'पेंट्री समीक्षा आइटम', + logMarkedAs: 'मार्क किया', + }, +}; + export function getAppCopy(language: UiLanguage): AppCopy { return appCopyByLanguage[language]; } @@ -140,3 +203,7 @@ export function getOwnerCopy(language: UiLanguage): OwnerCopy { export function getCookCopy(language: UiLanguage): CookCopy { return cookCopyByLanguage[language]; } + +export function getInventoryCopy(language: UiLanguage): InventoryCopy { + return inventoryCopyByLanguage[language]; +} diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index aa21156..a43e99c 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -6,9 +6,10 @@ import { updateDoc, writeBatch, } from 'firebase/firestore'; -import { InventoryItem, InventoryStatus, Role } from '../types'; +import { InventoryItem, InventoryStatus, Role, UnknownIngredientQueueItem } from '../types'; import { sanitizeFirestorePayload } from '../utils/firestorePayload'; import { generateId } from '../utils/id'; +import { resolveIngredientVisual } from '../utils/ingredientVisuals'; import { normalizePantryCategory } from '../utils/pantryCategory'; import { buildPantryLog } from './logService'; @@ -31,6 +32,31 @@ interface AddUnlistedItemWithLogInput { role: Role; } +interface QueueUnknownIngredientInput { + db: Firestore; + householdId: string; + name: string; + status: InventoryStatus; + category: string; + requestedQuantity?: string; + role: Role; +} + +interface ResolveUnknownIngredientQueueItemInput { + db: Firestore; + householdId: string; + queueItem: UnknownIngredientQueueItem; + role: Role; +} + +function getResolvedNameHi(currentNameHi: string | undefined, resolvedNativeName: string | undefined): string | undefined { + if (typeof currentNameHi === 'string' && currentNameHi.trim().length > 0) { + return currentNameHi; + } + + return resolvedNativeName; +} + function getInventoryAnomaly(item: InventoryItem, nextStatus: InventoryStatus): { verificationNeeded: boolean; anomalyReason?: string } { if (nextStatus !== 'out' || !item.lastUpdated || item.status !== 'in-stock') { return { verificationNeeded: false }; @@ -83,9 +109,19 @@ export async function updateInventoryStatusWithLog(input: UpdateInventoryWithLog } export async function addInventoryItem(db: Firestore, householdId: string, item: InventoryItem): Promise { + const category = normalizePantryCategory(item.category); + const visual = resolveIngredientVisual({ + name: item.name, + nameHi: item.nameHi, + category, + icon: item.icon, + }); + const normalizedItem: InventoryItem = { ...item, - category: normalizePantryCategory(item.category), + category, + icon: visual.fallbackIcon, + nameHi: getResolvedNameHi(item.nameHi, visual.catalogMatch?.nativeName), }; await setDoc( @@ -101,12 +137,18 @@ export async function deleteInventoryItem(db: Firestore, householdId: string, it export async function addUnlistedItemWithLog(input: AddUnlistedItemWithLogInput): Promise { const { db, householdId, name, status, category, requestedQuantity, role } = input; const timestampIso = new Date().toISOString(); + const normalizedCategory = normalizePantryCategory(category); + const visual = resolveIngredientVisual({ + name, + category: normalizedCategory, + }); const inventoryItem: InventoryItem = { id: generateId(), name, - category: normalizePantryCategory(category), + nameHi: getResolvedNameHi(undefined, visual.catalogMatch?.nativeName), + category: normalizedCategory, status, - icon: '🆕', + icon: visual.fallbackIcon, requestedQuantity, lastUpdated: timestampIso, updatedBy: role, @@ -132,6 +174,89 @@ export async function addUnlistedItemWithLog(input: AddUnlistedItemWithLogInput) await batch.commit(); } +export async function queueUnknownIngredient(input: QueueUnknownIngredientInput): Promise { + const { db, householdId, name, status, category, requestedQuantity, role } = input; + const queueId = generateId(); + const createdAt = new Date().toISOString(); + const normalizedCategory = normalizePantryCategory(category); + + const queueItem: UnknownIngredientQueueItem = { + id: queueId, + name, + status: 'open', + requestedStatus: status, + category: normalizedCategory, + requestedQuantity, + createdAt, + createdBy: role, + resolution: undefined, + resolvedAt: undefined, + resolvedBy: undefined, + promotedInventoryItemId: undefined, + }; + + await setDoc( + doc(db, `households/${householdId}/unknownIngredientQueue`, queueId), + sanitizeFirestorePayload(queueItem), + ); +} + +export async function dismissUnknownIngredientQueueItem(input: ResolveUnknownIngredientQueueItemInput): Promise { + const { db, householdId, queueItem, role } = input; + if (queueItem.status !== 'open') { + throw new Error(`Cannot dismiss queue item ${queueItem.id} because it is already resolved.`); + } + + await updateDoc(doc(db, `households/${householdId}/unknownIngredientQueue`, queueItem.id), { + status: 'resolved', + resolution: 'dismissed', + resolvedAt: new Date().toISOString(), + resolvedBy: role, + }); +} + +export async function promoteUnknownIngredientQueueItem(input: ResolveUnknownIngredientQueueItemInput): Promise { + const { db, householdId, queueItem, role } = input; + if (queueItem.status !== 'open') { + throw new Error(`Cannot promote queue item ${queueItem.id} because it is already resolved.`); + } + + const timestampIso = new Date().toISOString(); + const normalizedCategory = normalizePantryCategory(queueItem.category); + const visual = resolveIngredientVisual({ + name: queueItem.name, + category: normalizedCategory, + }); + const inventoryItemId = generateId(); + const inventoryItem: InventoryItem = { + id: inventoryItemId, + name: queueItem.name, + nameHi: getResolvedNameHi(undefined, visual.catalogMatch?.nativeName), + category: normalizedCategory, + status: queueItem.requestedStatus, + icon: visual.fallbackIcon, + requestedQuantity: queueItem.requestedQuantity, + lastUpdated: timestampIso, + updatedBy: role, + verificationNeeded: false, + anomalyReason: '', + }; + + const batch = writeBatch(db); + batch.set( + doc(db, `households/${householdId}/inventory`, inventoryItemId), + sanitizeFirestorePayload(inventoryItem), + ); + batch.update(doc(db, `households/${householdId}/unknownIngredientQueue`, queueItem.id), { + status: 'resolved', + resolution: 'promoted', + resolvedAt: timestampIso, + resolvedBy: role, + promotedInventoryItemId: inventoryItemId, + }); + await batch.commit(); +} + export async function clearAnomaly(db: Firestore, householdId: string, itemId: string): Promise { await updateDoc(doc(db, `households/${householdId}/inventory`, itemId), { verificationNeeded: false, diff --git a/src/services/seedService.ts b/src/services/seedService.ts index 3f55c1f..c091937 100644 --- a/src/services/seedService.ts +++ b/src/services/seedService.ts @@ -8,19 +8,51 @@ import { } from 'firebase/firestore'; import { InventoryItem, MealPlan } from '../types'; import { getLocalDateKey } from '../utils/date'; +import { resolveIngredientVisual } from '../utils/ingredientVisuals'; import { normalizePantryCategory } from '../utils/pantryCategory'; +function createSeedInventoryItem(item: Omit): InventoryItem { + const visual = resolveIngredientVisual({ + name: item.name, + nameHi: item.nameHi, + category: item.category, + }); + + return { + ...item, + icon: visual.fallbackIcon, + }; +} + const initialInventory: InventoryItem[] = [ - { id: '1', name: 'Turmeric (Haldi)', nameHi: 'हल्दी', category: normalizePantryCategory('Spices'), status: 'in-stock', icon: '🟡', defaultQuantity: '200g' }, - { id: '2', name: 'Red Chilli Powder', nameHi: 'लाल मिर्च', category: normalizePantryCategory('Spices'), status: 'in-stock', icon: '🌶️', defaultQuantity: '200g' }, - { id: '3', name: 'Garam Masala', nameHi: 'गरम मसाला', category: normalizePantryCategory('Spices'), status: 'in-stock', icon: '🧆', defaultQuantity: '100g' }, - { id: '4', name: 'Toor Dal', nameHi: 'तूर दाल', category: normalizePantryCategory('Pulses'), status: 'in-stock', icon: '🥣', defaultQuantity: '1kg' }, - { id: '5', name: 'Basmati Rice', nameHi: 'चावल', category: normalizePantryCategory('Staples'), status: 'in-stock', icon: '🍚', defaultQuantity: '5kg' }, - { id: '6', name: 'Atta (Wheat Flour)', nameHi: 'आटा', category: normalizePantryCategory('Staples'), status: 'low', icon: '🌾', defaultQuantity: '5kg' }, - { id: '7', name: 'Mustard Oil', nameHi: 'सरसों का तेल', category: normalizePantryCategory('Staples'), status: 'in-stock', icon: '🛢️', defaultQuantity: '1L' }, - { id: '8', name: 'Onions', nameHi: 'प्याज', category: normalizePantryCategory('Veggies'), status: 'in-stock', icon: '🧅', defaultQuantity: '2kg' }, - { id: '9', name: 'Tomatoes', nameHi: 'टमाटर', category: normalizePantryCategory('Veggies'), status: 'out', icon: '🍅', defaultQuantity: '1kg' }, - { id: '10', name: 'Milk', nameHi: 'दूध', category: normalizePantryCategory('Dairy'), status: 'in-stock', icon: '🥛', defaultQuantity: '1L' }, + createSeedInventoryItem({ id: '1', name: 'Turmeric (Haldi)', nameHi: 'हल्दी', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '200g' }), + createSeedInventoryItem({ id: '2', name: 'Red Chilli Powder', nameHi: 'लाल मिर्च', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '200g' }), + createSeedInventoryItem({ id: '3', name: 'Garam Masala', nameHi: 'गरम मसाला', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '100g' }), + createSeedInventoryItem({ id: '4', name: 'Jeera (Cumin Seeds)', nameHi: 'जीरा', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '200g' }), + createSeedInventoryItem({ id: '5', name: 'Dhania Powder', nameHi: 'धनिया पाउडर', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '200g' }), + createSeedInventoryItem({ id: '6', name: 'Ajwain', nameHi: 'अजवाइन', category: normalizePantryCategory('Spices'), status: 'in-stock', defaultQuantity: '100g' }), + createSeedInventoryItem({ id: '7', name: 'Kasuri Methi', nameHi: 'कसूरी मेथी', category: normalizePantryCategory('Spices'), status: 'low', defaultQuantity: '50g' }), + createSeedInventoryItem({ id: '8', name: 'Toor Dal', nameHi: 'तूर दाल', category: normalizePantryCategory('Pulses'), status: 'in-stock', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '9', name: 'Moong Dal', nameHi: 'मूंग दाल', category: normalizePantryCategory('Pulses'), status: 'in-stock', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '10', name: 'Masoor Dal', nameHi: 'मसूर दाल', category: normalizePantryCategory('Pulses'), status: 'in-stock', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '11', name: 'Chana Dal', nameHi: 'चना दाल', category: normalizePantryCategory('Pulses'), status: 'low', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '12', name: 'Rajma', nameHi: 'राजमा', category: normalizePantryCategory('Pulses'), status: 'in-stock', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '13', name: 'Basmati Rice', nameHi: 'चावल', category: normalizePantryCategory('Staples'), status: 'in-stock', defaultQuantity: '5kg' }), + createSeedInventoryItem({ id: '14', name: 'Atta (Wheat Flour)', nameHi: 'आटा', category: normalizePantryCategory('Staples'), status: 'low', defaultQuantity: '10kg' }), + createSeedInventoryItem({ id: '15', name: 'Besan', nameHi: 'बेसन', category: normalizePantryCategory('Staples'), status: 'in-stock', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '16', name: 'Suji (Semolina)', nameHi: 'सूजी', category: normalizePantryCategory('Staples'), status: 'in-stock', defaultQuantity: '500g' }), + createSeedInventoryItem({ id: '17', name: 'Mustard Oil', nameHi: 'सरसों का तेल', category: normalizePantryCategory('Staples'), status: 'in-stock', defaultQuantity: '1L' }), + createSeedInventoryItem({ id: '18', name: 'Ghee', nameHi: 'घी', category: normalizePantryCategory('Dairy'), status: 'in-stock', defaultQuantity: '500g' }), + createSeedInventoryItem({ id: '19', name: 'Onions', nameHi: 'प्याज', category: normalizePantryCategory('Veggies'), status: 'in-stock', defaultQuantity: '2kg' }), + createSeedInventoryItem({ id: '20', name: 'Tomatoes', nameHi: 'टमाटर', category: normalizePantryCategory('Veggies'), status: 'out', defaultQuantity: '1kg' }), + createSeedInventoryItem({ id: '21', name: 'Potatoes', nameHi: 'आलू', category: normalizePantryCategory('Veggies'), status: 'in-stock', defaultQuantity: '3kg' }), + createSeedInventoryItem({ id: '22', name: 'Ginger', nameHi: 'अदरक', category: normalizePantryCategory('Veggies'), status: 'in-stock', defaultQuantity: '250g' }), + createSeedInventoryItem({ id: '23', name: 'Garlic', nameHi: 'लहसुन', category: normalizePantryCategory('Veggies'), status: 'in-stock', defaultQuantity: '250g' }), + createSeedInventoryItem({ id: '24', name: 'Green Chillies', nameHi: 'हरी मिर्च', category: normalizePantryCategory('Veggies'), status: 'low', defaultQuantity: '100g' }), + createSeedInventoryItem({ id: '25', name: 'Coriander Leaves', nameHi: 'हरा धनिया', category: normalizePantryCategory('Veggies'), status: 'low', defaultQuantity: '2 bunches' }), + createSeedInventoryItem({ id: '26', name: 'Milk', nameHi: 'दूध', category: normalizePantryCategory('Dairy'), status: 'in-stock', defaultQuantity: '1L' }), + createSeedInventoryItem({ id: '27', name: 'Curd (Dahi)', nameHi: 'दही', category: normalizePantryCategory('Dairy'), status: 'in-stock', defaultQuantity: '500g' }), + createSeedInventoryItem({ id: '28', name: 'Paneer', nameHi: 'पनीर', category: normalizePantryCategory('Dairy'), status: 'in-stock', defaultQuantity: '400g' }), ]; function getInitialMeals(): Record { diff --git a/src/types.ts b/src/types.ts index 4c59ce1..577a911 100644 --- a/src/types.ts +++ b/src/types.ts @@ -36,11 +36,29 @@ export interface PantryLog { role: Role; } +export type UnknownIngredientQueueStatus = 'open' | 'resolved'; + +export interface UnknownIngredientQueueItem { + id: string; + name: string; + category: string; + status: UnknownIngredientQueueStatus; + requestedStatus: InventoryStatus; + requestedQuantity?: string; + createdAt: string; + createdBy: Role; + resolvedAt?: string; + resolvedBy?: Role; + resolution?: 'promoted' | 'dismissed'; + promotedInventoryItemId?: string; +} + export interface AppState { role: Role; inventory: InventoryItem[]; meals: Record; logs: PantryLog[]; + unknownIngredientQueue: UnknownIngredientQueueItem[]; } export interface HouseholdPreferences { diff --git a/src/utils/ingredientVisuals.ts b/src/utils/ingredientVisuals.ts new file mode 100644 index 0000000..15db423 --- /dev/null +++ b/src/utils/ingredientVisuals.ts @@ -0,0 +1,677 @@ +import { InventoryItem } from '../types'; +import { PantryCategoryKey, normalizePantryCategory } from './pantryCategory'; + +export type IngredientVisualSource = 'catalog-match' | 'existing-icon' | 'category-fallback'; + +export interface IngredientCatalogMetadata { + key: IngredientVisualKey; + canonicalName: string; + transliteration: string; + nativeName: string; + matchedKeyword: string; +} + +export interface IngredientVisual { + imageUrl: string | null; + fallbackIcon: string; + altText: string; + source: IngredientVisualSource; + catalogMatch?: IngredientCatalogMetadata; +} + +export interface IngredientVisualInput { + name: string; + nameHi?: string; + category: string; + icon?: string; +} + +interface IngredientCatalogEntry { + key: TKey; + fallbackIcon: string; + altText: string; + imageObjectKey: string; + canonicalName: string; + transliteration: string; + nativeName: string; + keywords: readonly string[]; +} + +interface IngredientCatalogEntryDefinition { + key: TKey; + fallbackIcon: string; + canonicalName: string; + transliteration: string; + nativeName: string; + imageObjectKey: string; + keywords: readonly string[]; +} + +interface IngredientCatalogMatch { + entry: IngredientCatalogEntry; + normalizedKeyword: string; + score: number; + entryIndex: number; +} + +const CATEGORY_FALLBACK_ICONS: Record = { + spices: '🫙', + pulses: '🥣', + staples: '🌾', + veggies: '🥕', + dairy: '🥛', + other: '📦', +}; + +function buildCatalogImageUrl(baseUrl: string, objectKey: string): string { + return `${baseUrl}/${encodeURIComponent(objectKey)}`; +} + +function normalizeCatalogImageBaseUrl(rawBaseUrl: string): string { + const trimmedValue = rawBaseUrl.trim(); + if (trimmedValue.length === 0) { + throw new Error('VITE_INGREDIENT_IMAGE_BASE_URL is configured but empty.'); + } + + let parsedUrl: URL; + try { + parsedUrl = new URL(trimmedValue); + } catch (error) { + throw new Error(`VITE_INGREDIENT_IMAGE_BASE_URL is invalid: ${trimmedValue}`, { + cause: error instanceof Error ? error : undefined, + }); + } + + if (parsedUrl.protocol !== 'https:' && parsedUrl.protocol !== 'http:') { + throw new Error(`VITE_INGREDIENT_IMAGE_BASE_URL must use http or https: ${trimmedValue}`); + } + + return trimmedValue.replace(/\/+$/u, ''); +} + +function getCatalogImageBaseUrl(): string { + const viteEnvCandidate = (import.meta as ImportMeta & { env?: Record }).env; + const processEnvCandidate = typeof process !== 'undefined' ? process.env : undefined; + const configuredBaseUrl = viteEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL ?? processEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL; + + if (configuredBaseUrl === undefined) { + throw new Error('VITE_INGREDIENT_IMAGE_BASE_URL is required for ingredient catalog images.'); + } + + return normalizeCatalogImageBaseUrl(configuredBaseUrl); +} + +function createIngredientCatalogEntry( + definition: IngredientCatalogEntryDefinition, +): IngredientCatalogEntry { + return { + key: definition.key, + fallbackIcon: definition.fallbackIcon, + altText: `Photo of ${definition.canonicalName.toLowerCase()} (${definition.transliteration})`, + imageObjectKey: definition.imageObjectKey, + canonicalName: definition.canonicalName, + transliteration: definition.transliteration, + nativeName: definition.nativeName, + keywords: [ + definition.canonicalName, + definition.transliteration, + definition.nativeName, + ...definition.keywords, + ], + }; +} + +const INGREDIENT_CATALOG = [ + createIngredientCatalogEntry({ + key: 'turmeric', + fallbackIcon: '🟡', + canonicalName: 'Turmeric', + transliteration: 'Haldi', + nativeName: 'हल्दी', + imageObjectKey: 'turmeric.webp', + keywords: ['turmeric powder'], + }), + createIngredientCatalogEntry({ + key: 'red-chilli', + fallbackIcon: '🌶️', + canonicalName: 'Red Chilli Powder', + transliteration: 'Lal Mirch', + nativeName: 'लाल मिर्च', + imageObjectKey: 'red-chilli.webp', + keywords: ['red chili powder', 'red chilli', 'red chili', 'kashmiri mirch', 'lal mirch powder'], + }), + createIngredientCatalogEntry({ + key: 'coriander-powder', + fallbackIcon: '🟤', + canonicalName: 'Coriander Powder', + transliteration: 'Dhania Powder', + nativeName: 'धनिया पाउडर', + imageObjectKey: 'coriander-powder.webp', + keywords: ['coriander', 'dhania', 'ground coriander'], + }), + createIngredientCatalogEntry({ + key: 'garam-masala', + fallbackIcon: '🧆', + canonicalName: 'Garam Masala', + transliteration: 'Garam Masala', + nativeName: 'गरम मसाला', + imageObjectKey: 'garam-masala.webp', + keywords: ['punjabi garam masala'], + }), + createIngredientCatalogEntry({ + key: 'cumin', + fallbackIcon: '🟤', + canonicalName: 'Cumin Seeds', + transliteration: 'Jeera', + nativeName: 'जीरा', + imageObjectKey: 'cumin.webp', + keywords: ['cumin', 'cumin seed', 'cumin seeds', 'jeera seeds'], + }), + createIngredientCatalogEntry({ + key: 'mustard-seeds', + fallbackIcon: '⚫', + canonicalName: 'Mustard Seeds', + transliteration: 'Rai', + nativeName: 'राई', + imageObjectKey: 'mustard-seeds.webp', + keywords: ['mustard seed', 'sarson dana', 'rai dana'], + }), + createIngredientCatalogEntry({ + key: 'ajwain', + fallbackIcon: '🟫', + canonicalName: 'Carom Seeds', + transliteration: 'Ajwain', + nativeName: 'अजवाइन', + imageObjectKey: 'ajwain.webp', + keywords: ['ajowan', 'carom seed', 'carom seeds'], + }), + createIngredientCatalogEntry({ + key: 'hing', + fallbackIcon: '🧂', + canonicalName: 'Asafoetida', + transliteration: 'Hing', + nativeName: 'हींग', + imageObjectKey: 'hing.webp', + keywords: ['asafoetida powder'], + }), + createIngredientCatalogEntry({ + key: 'kasuri-methi', + fallbackIcon: '🌿', + canonicalName: 'Dried Fenugreek Leaves', + transliteration: 'Kasuri Methi', + nativeName: 'कसूरी मेथी', + imageObjectKey: 'kasuri-methi.webp', + keywords: ['fenugreek leaves', 'dried fenugreek', 'methi leaves'], + }), + createIngredientCatalogEntry({ + key: 'black-pepper', + fallbackIcon: '⚫', + canonicalName: 'Black Pepper', + transliteration: 'Kali Mirch', + nativeName: 'काली मिर्च', + imageObjectKey: 'black-pepper.webp', + keywords: ['peppercorn', 'peppercorns'], + }), + createIngredientCatalogEntry({ + key: 'cinnamon', + fallbackIcon: '🪵', + canonicalName: 'Cinnamon', + transliteration: 'Dalchini', + nativeName: 'दालचीनी', + imageObjectKey: 'cinnamon.webp', + keywords: ['cinnamon stick', 'cinnamon sticks'], + }), + createIngredientCatalogEntry({ + key: 'cardamom', + fallbackIcon: '🫛', + canonicalName: 'Green Cardamom', + transliteration: 'Elaichi', + nativeName: 'इलायची', + imageObjectKey: 'cardamom.webp', + keywords: ['cardamom', 'cardamom pods', 'green elaichi', 'elaichi dana'], + }), + createIngredientCatalogEntry({ + key: 'clove', + fallbackIcon: '📍', + canonicalName: 'Cloves', + transliteration: 'Laung', + nativeName: 'लौंग', + imageObjectKey: 'clove.webp', + keywords: ['clove', 'whole cloves'], + }), + createIngredientCatalogEntry({ + key: 'bay-leaf', + fallbackIcon: '🍃', + canonicalName: 'Bay Leaf', + transliteration: 'Tej Patta', + nativeName: 'तेज पत्ता', + imageObjectKey: 'bay-leaf.webp', + keywords: ['bay leaves', 'tej patta'], + }), + createIngredientCatalogEntry({ + key: 'mustard-oil', + fallbackIcon: '🛢️', + canonicalName: 'Mustard Oil', + transliteration: 'Sarson Ka Tel', + nativeName: 'सरसों का तेल', + imageObjectKey: 'mustard-oil.webp', + keywords: ['sarson oil', 'sarso oil'], + }), + createIngredientCatalogEntry({ + key: 'sunflower-oil', + fallbackIcon: '🛢️', + canonicalName: 'Sunflower Oil', + transliteration: 'Sunflower Tel', + nativeName: 'सनफ्लावर तेल', + imageObjectKey: 'sunflower-oil.webp', + keywords: ['refined oil', 'refined tel', 'cooking oil'], + }), + createIngredientCatalogEntry({ + key: 'ghee', + fallbackIcon: '🫙', + canonicalName: 'Ghee', + transliteration: 'Ghee', + nativeName: 'घी', + imageObjectKey: 'ghee.webp', + keywords: ['desi ghee', 'clarified butter'], + }), + createIngredientCatalogEntry({ + key: 'onion', + fallbackIcon: '🧅', + canonicalName: 'Onion', + transliteration: 'Pyaz', + nativeName: 'प्याज', + imageObjectKey: 'onion.webp', + keywords: ['onions', 'pyaaz'], + }), + createIngredientCatalogEntry({ + key: 'tomato', + fallbackIcon: '🍅', + canonicalName: 'Tomato', + transliteration: 'Tamatar', + nativeName: 'टमाटर', + imageObjectKey: 'tomato.webp', + keywords: ['tomatoes'], + }), + createIngredientCatalogEntry({ + key: 'potato', + fallbackIcon: '🥔', + canonicalName: 'Potato', + transliteration: 'Aloo', + nativeName: 'आलू', + imageObjectKey: 'potato.webp', + keywords: ['potatoes'], + }), + createIngredientCatalogEntry({ + key: 'ginger', + fallbackIcon: '🫚', + canonicalName: 'Ginger', + transliteration: 'Adrak', + nativeName: 'अदरक', + imageObjectKey: 'ginger.webp', + keywords: ['fresh ginger'], + }), + createIngredientCatalogEntry({ + key: 'garlic', + fallbackIcon: '🧄', + canonicalName: 'Garlic', + transliteration: 'Lehsun', + nativeName: 'लहसुन', + imageObjectKey: 'garlic.webp', + keywords: ['lahsun', 'garlic cloves'], + }), + createIngredientCatalogEntry({ + key: 'green-chilli', + fallbackIcon: '🌶️', + canonicalName: 'Green Chilli', + transliteration: 'Hari Mirch', + nativeName: 'हरी मिर्च', + imageObjectKey: 'green-chilli.webp', + keywords: ['green chili', 'green chillies', 'green chiles', 'hari mirch'], + }), + createIngredientCatalogEntry({ + key: 'coriander-leaves', + fallbackIcon: '🌿', + canonicalName: 'Coriander Leaves', + transliteration: 'Hara Dhania', + nativeName: 'हरा धनिया', + imageObjectKey: 'coriander-leaves.webp', + keywords: ['coriander leaf', 'coriander leaves', 'cilantro', 'dhania patta', 'hara dhaniya'], + }), + createIngredientCatalogEntry({ + key: 'mint', + fallbackIcon: '🌿', + canonicalName: 'Mint Leaves', + transliteration: 'Pudina', + nativeName: 'पुदीना', + imageObjectKey: 'mint.webp', + keywords: ['mint', 'mint leaf', 'mint leaves'], + }), + createIngredientCatalogEntry({ + key: 'lemon', + fallbackIcon: '🍋', + canonicalName: 'Lemon', + transliteration: 'Nimbu', + nativeName: 'नींबू', + imageObjectKey: 'lemon.webp', + keywords: ['lemons', 'nimbu'], + }), + createIngredientCatalogEntry({ + key: 'rice', + fallbackIcon: '🍚', + canonicalName: 'Basmati Rice', + transliteration: 'Chawal', + nativeName: 'चावल', + imageObjectKey: 'rice.webp', + keywords: ['rice', 'rice grains', 'basmati', 'basmati chawal'], + }), + createIngredientCatalogEntry({ + key: 'atta', + fallbackIcon: '🌾', + canonicalName: 'Whole Wheat Flour', + transliteration: 'Atta', + nativeName: 'आटा', + imageObjectKey: 'atta.webp', + keywords: ['atta flour', 'wheat flour', 'whole wheat atta', 'gehun ka atta', 'गेहूं का आटा'], + }), + createIngredientCatalogEntry({ + key: 'besan', + fallbackIcon: '🟨', + canonicalName: 'Gram Flour', + transliteration: 'Besan', + nativeName: 'बेसन', + imageObjectKey: 'besan.webp', + keywords: ['chickpea flour', 'gram flour', 'besan flour'], + }), + createIngredientCatalogEntry({ + key: 'suji', + fallbackIcon: '🥣', + canonicalName: 'Semolina', + transliteration: 'Suji', + nativeName: 'सूजी', + imageObjectKey: 'suji.webp', + keywords: ['sooji', 'rava', 'rawa', 'semolina', 'upma rava'], + }), + createIngredientCatalogEntry({ + key: 'maida', + fallbackIcon: '⚪', + canonicalName: 'Refined Flour', + transliteration: 'Maida', + nativeName: 'मैदा', + imageObjectKey: 'maida.webp', + keywords: ['all purpose flour', 'all-purpose flour', 'plain flour'], + }), + createIngredientCatalogEntry({ + key: 'poha', + fallbackIcon: '🍚', + canonicalName: 'Flattened Rice', + transliteration: 'Poha', + nativeName: 'पोहा', + imageObjectKey: 'poha.webp', + keywords: ['beaten rice', 'flattened rice', 'poha rice'], + }), + createIngredientCatalogEntry({ + key: 'toor-dal', + fallbackIcon: '🥣', + canonicalName: 'Toor Dal', + transliteration: 'Arhar Dal', + nativeName: 'तूर दाल', + imageObjectKey: 'toor-dal.webp', + keywords: ['tur dal', 'tuar dal', 'arhar', 'arhar dal', 'pigeon pea', 'pigeon peas'], + }), + createIngredientCatalogEntry({ + key: 'moong-dal', + fallbackIcon: '🥣', + canonicalName: 'Moong Dal', + transliteration: 'Moong Dal', + nativeName: 'मूंग दाल', + imageObjectKey: 'moong-dal.webp', + keywords: ['mung dal', 'moong', 'yellow moong dal', 'split moong dal'], + }), + createIngredientCatalogEntry({ + key: 'masoor-dal', + fallbackIcon: '🥣', + canonicalName: 'Masoor Dal', + transliteration: 'Masoor Dal', + nativeName: 'मसूर दाल', + imageObjectKey: 'masoor-dal.webp', + keywords: ['red lentil', 'red lentils', 'masoor'], + }), + createIngredientCatalogEntry({ + key: 'chana-dal', + fallbackIcon: '🥣', + canonicalName: 'Chana Dal', + transliteration: 'Chana Dal', + nativeName: 'चना दाल', + imageObjectKey: 'chana-dal.webp', + keywords: ['split chickpea', 'split chickpeas', 'split bengal gram', 'bengal gram'], + }), + createIngredientCatalogEntry({ + key: 'urad-dal', + fallbackIcon: '🥣', + canonicalName: 'Urad Dal', + transliteration: 'Urad Dal', + nativeName: 'उड़द दाल', + imageObjectKey: 'urad-dal.webp', + keywords: ['udad dal', 'urad', 'black gram'], + }), + createIngredientCatalogEntry({ + key: 'rajma', + fallbackIcon: '🫘', + canonicalName: 'Kidney Beans', + transliteration: 'Rajma', + nativeName: 'राजमा', + imageObjectKey: 'rajma.webp', + keywords: ['rajma beans', 'kidney bean', 'kidney beans'], + }), + createIngredientCatalogEntry({ + key: 'chole', + fallbackIcon: '🫘', + canonicalName: 'Chickpeas', + transliteration: 'Chole', + nativeName: 'छोले', + imageObjectKey: 'chole.webp', + keywords: ['kabuli chana', 'chana', 'white chana', 'white chickpeas', 'chickpea', 'chickpeas'], + }), + createIngredientCatalogEntry({ + key: 'milk', + fallbackIcon: '🥛', + canonicalName: 'Milk', + transliteration: 'Doodh', + nativeName: 'दूध', + imageObjectKey: 'milk.webp', + keywords: ['full cream milk'], + }), + createIngredientCatalogEntry({ + key: 'curd', + fallbackIcon: '🥣', + canonicalName: 'Curd', + transliteration: 'Dahi', + nativeName: 'दही', + imageObjectKey: 'curd.webp', + keywords: ['yogurt', 'yoghurt', 'plain curd'], + }), + createIngredientCatalogEntry({ + key: 'paneer', + fallbackIcon: '🧈', + canonicalName: 'Paneer', + transliteration: 'Paneer', + nativeName: 'पनीर', + imageObjectKey: 'paneer.webp', + keywords: ['cottage cheese', 'paneer cubes'], + }), + createIngredientCatalogEntry({ + key: 'salt', + fallbackIcon: '🧂', + canonicalName: 'Salt', + transliteration: 'Namak', + nativeName: 'नमक', + imageObjectKey: 'salt.webp', + keywords: ['table salt', 'iodized salt'], + }), + createIngredientCatalogEntry({ + key: 'black-salt', + fallbackIcon: '🧂', + canonicalName: 'Black Salt', + transliteration: 'Kala Namak', + nativeName: 'काला नमक', + imageObjectKey: 'black-salt.webp', + keywords: ['kala namak', 'black salt powder'], + }), + createIngredientCatalogEntry({ + key: 'sugar', + fallbackIcon: '🍚', + canonicalName: 'Sugar', + transliteration: 'Cheeni', + nativeName: 'चीनी', + imageObjectKey: 'sugar.webp', + keywords: ['granulated sugar'], + }), +] as const; + +function assertIngredientCatalogImageCoverage(catalog: readonly IngredientCatalogEntry[]): void { + const seenImageObjectKeys = new Set(); + for (const entry of catalog) { + const normalizedImageObjectKey = entry.imageObjectKey.trim(); + if (normalizedImageObjectKey.length === 0) { + throw new Error(`Ingredient catalog entry "${entry.key}" is missing imageObjectKey.`); + } + + if (seenImageObjectKeys.has(normalizedImageObjectKey)) { + throw new Error(`Ingredient catalog imageObjectKey is duplicated: ${normalizedImageObjectKey}`); + } + + seenImageObjectKeys.add(normalizedImageObjectKey); + } +} + +assertIngredientCatalogImageCoverage(INGREDIENT_CATALOG); + +export type IngredientVisualKey = (typeof INGREDIENT_CATALOG)[number]['key']; + +function normalizeIngredientText(value: string): string { + return value + .trim() + .toLowerCase() + .normalize('NFKC') + .replace(/[^\p{L}\p{N}]+/gu, ' ') + .replace(/\s+/g, ' ') + .trim(); +} + +function buildIngredientSearchText(input: IngredientVisualInput): string { + return normalizeIngredientText([input.name, input.nameHi].filter(Boolean).join(' ')); +} + +function matchesKeyword(searchText: string, keyword: string): boolean { + const paddedSearchText = ` ${searchText} `; + const paddedKeyword = ` ${keyword} `; + return paddedSearchText.includes(paddedKeyword); +} + +function compareIngredientCatalogMatches(candidate: IngredientCatalogMatch, currentBest: IngredientCatalogMatch): number { + if (candidate.score !== currentBest.score) { + return candidate.score - currentBest.score; + } + + if (candidate.entryIndex !== currentBest.entryIndex) { + return currentBest.entryIndex - candidate.entryIndex; + } + + return currentBest.normalizedKeyword.localeCompare(candidate.normalizedKeyword); +} + +function findIngredientCatalogMatch(searchText: string): IngredientCatalogMatch | null { + let bestMatch: IngredientCatalogMatch | null = null; + + for (const [entryIndex, entry] of INGREDIENT_CATALOG.entries()) { + for (const keywordValue of entry.keywords) { + const normalizedKeyword = normalizeIngredientText(keywordValue); + if (normalizedKeyword.length === 0 || !matchesKeyword(searchText, normalizedKeyword)) { + continue; + } + + const candidate: IngredientCatalogMatch = { + entry, + normalizedKeyword, + score: (searchText === normalizedKeyword ? 1000 : 0) + normalizedKeyword.length, + entryIndex, + }; + + if (bestMatch === null || compareIngredientCatalogMatches(candidate, bestMatch) > 0) { + bestMatch = candidate; + } + } + } + + return bestMatch; +} + +function hasRenderableIcon(icon: string | undefined): icon is string { + return typeof icon === 'string' && icon.trim().length > 0; +} + +function getFallbackAltText(input: IngredientVisualInput): string { + return `Ingredient icon for ${input.name}`; +} + +function createIngredientCatalogMetadata(match: IngredientCatalogMatch): IngredientCatalogMetadata { + return { + key: match.entry.key as IngredientVisualKey, + canonicalName: match.entry.canonicalName, + transliteration: match.entry.transliteration, + nativeName: match.entry.nativeName, + matchedKeyword: match.normalizedKeyword, + }; +} + +export function getIngredientNativeContextLabel(input: Pick, visual: IngredientVisual): string | null { + const trimmedNameHi = typeof input.nameHi === 'string' ? input.nameHi.trim() : ''; + if (visual.catalogMatch !== undefined) { + const resolvedNativeName = trimmedNameHi.length > 0 ? trimmedNameHi : visual.catalogMatch.nativeName; + return `${visual.catalogMatch.transliteration} / ${resolvedNativeName}`; + } + + return trimmedNameHi.length > 0 ? trimmedNameHi : null; +} + +export function resolveIngredientVisual(input: IngredientVisualInput): IngredientVisual { + const searchText = buildIngredientSearchText(input); + const catalogMatch = findIngredientCatalogMatch(searchText); + if (catalogMatch !== null) { + const imageBaseUrl = getCatalogImageBaseUrl(); + return { + imageUrl: buildCatalogImageUrl(imageBaseUrl, catalogMatch.entry.imageObjectKey), + fallbackIcon: catalogMatch.entry.fallbackIcon, + altText: catalogMatch.entry.altText, + source: 'catalog-match', + catalogMatch: createIngredientCatalogMetadata(catalogMatch), + }; + } + + if (hasRenderableIcon(input.icon)) { + return { + imageUrl: null, + fallbackIcon: input.icon.trim(), + altText: getFallbackAltText(input), + source: 'existing-icon', + }; + } + + const category = normalizePantryCategory(input.category); + return { + imageUrl: null, + fallbackIcon: CATEGORY_FALLBACK_ICONS[category], + altText: getFallbackAltText(input), + source: 'category-fallback', + }; +} + +export function resolveInventoryItemVisual(item: InventoryItem): IngredientVisual { + return resolveIngredientVisual({ + name: item.name, + nameHi: item.nameHi, + category: item.category, + icon: item.icon, + }); +} From 7959e79dd225b8e984aba5f98fba9da938dee58f Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 19:59:51 +0530 Subject: [PATCH 04/10] test: expand unit, rules, and e2e coverage for inventory flows --- test/e2e/artifacts/summary.json | 83 ++++++-- test/e2e/mocks/firebase-auth.ts | 7 + test/e2e/run.mjs | 207 ++++++++++++++++++-- test/e2e/vite.e2e.config.ts | 2 + test/rules/run.ts | 216 +++++++++++++++++++++ test/unit/run.ts | 333 ++++++++++++++++++++++++++++++++ 6 files changed, 816 insertions(+), 32 deletions(-) diff --git a/test/e2e/artifacts/summary.json b/test/e2e/artifacts/summary.json index 46a7b02..3228182 100644 --- a/test/e2e/artifacts/summary.json +++ b/test/e2e/artifacts/summary.json @@ -1,13 +1,13 @@ { - "startedAt": "2026-03-23T16:08:17.174Z", - "finishedAt": "2026-03-23T16:08:21.690Z", + "startedAt": "2026-03-25T14:24:01.381Z", + "finishedAt": "2026-03-25T14:24:11.431Z", "baseUrl": "http://127.0.0.1:3000", "browserExecutablePath": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", - "overallPass": true, + "overallPass": false, "results": [ { "name": "owner-core-journey", - "pass": true, + "pass": false, "repro": [ "Open /?e2e-role=owner.", "Click \"Sign in with Google\".", @@ -15,18 +15,30 @@ "Open Grocery List and mark Tomatoes as bought.", "Open Pantry & Logs, add Jeera, then mark it Running Low.", "Open Activity Logs and verify the new entry is shown." - ] + ], + "error": { + "name": "Error", + "message": "Unable to click button \"Mark Bought\" for row containing \"Tomatoes\".", + "stack": "Error: Unable to click button \"Mark Bought\" for row containing \"Tomatoes\".\n at clickTableRowButton (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:330:11)\n at async Object.runOwnerCoreFlow [as run] (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:483:3)\n at async runScenario (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:740:12)\n at async main (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:899:24)" + }, + "screenshotPath": "/Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/artifacts/owner-core-journey.png" }, { "name": "cook-ai-journey", - "pass": true, + "pass": false, "repro": [ "Open /?e2e-role=cook.", "Click \"Sign in with Google\".", - "Switch to English.", + "Use default cook language profile.", "Use Smart Assistant with the standard pantry update prompt.", - "Search Tomatoes, mark it Full, add a note for Atta, and verify the note is rendered." - ] + "Search tomatoes, mark it Full, add a note for atta, and verify the note is rendered." + ], + "error": { + "name": "Error", + "message": "Unable to set cook status Full for Tomatoes.", + "stack": "Error: Unable to set cook status Full for Tomatoes.\n at setCookStatus (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:368:11)\n at async Object.runCookCoreFlow [as run] (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:525:3)\n at async runScenario (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:740:12)\n at async main (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:899:24)" + }, + "screenshotPath": "/Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/artifacts/cook-ai-journey.png" }, { "name": "ai-malformed-response", @@ -34,7 +46,7 @@ "repro": [ "Open /?e2e-role=cook.", "Click \"Sign in with Google\".", - "Switch to English.", + "Use default cook language profile.", "Submit the malformed AI marker prompt.", "Verify the safe AI error message is rendered and the page stays usable." ] @@ -45,34 +57,73 @@ "repro": [ "Open /?e2e-role=cook.", "Click \"Sign in with Google\".", - "Switch to English.", + "Use default cook language profile.", "Submit the unmatched item marker prompt.", "Verify the successful update path runs and Milk moves onto the list." ] }, { "name": "note-save-path", - "pass": true, + "pass": false, "repro": [ "Open /?e2e-role=cook.", "Click \"Sign in with Google\".", - "Switch to English.", + "Use default cook language profile.", "Search for Atta.", "Add a note and save it.", "Verify the note renders as saved quantity text." - ] + ], + "error": { + "name": "Error", + "message": "Unable to open note editor for Atta.", + "stack": "Error: Unable to open note editor for Atta.\n at setCookNote (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:402:11)\n at async Object.runNoteSavePathCheck [as run] (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:617:3)\n at async runScenario (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:740:12)\n at async main (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:899:24)" + }, + "screenshotPath": "/Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/artifacts/note-save-path.png" }, { "name": "remove-from-grocery-path", - "pass": true, + "pass": false, "repro": [ "Open /?e2e-role=owner.", "Click \"Sign in with Google\".", "Open Grocery List.", "Mark Tomatoes as bought.", "Verify Tomatoes is removed from the grocery list." + ], + "error": { + "name": "Error", + "message": "Unable to click button \"Mark Bought\" for row containing \"Tomatoes\".", + "stack": "Error: Unable to click button \"Mark Bought\" for row containing \"Tomatoes\".\n at clickTableRowButton (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:330:11)\n at async Object.runRemoveFromGroceryPathCheck [as run] (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:642:3)\n at async runScenario (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:740:12)\n at async main (file:///Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/run.mjs:899:24)" + }, + "screenshotPath": "/Users/vijaysehgal/Downloads/02-Portfolio/Rasoi-Planner-Project/test/e2e/artifacts/remove-from-grocery-path.png" + }, + { + "name": "owner-tab-keyboard-navigation", + "pass": true, + "repro": [ + "Open /?e2e-role=owner and sign in.", + "Focus owner tabs and navigate with ArrowRight, End, and Home.", + "Verify selected tab and panel mapping after each keypress." + ] + }, + { + "name": "owner-tab-keyboard-navigation-mobile", + "pass": true, + "repro": [ + "Open /?e2e-role=owner on mobile viewport and sign in.", + "Navigate owner tabs with keyboard keys.", + "Verify tab selection and active panel on mobile layout." + ] + }, + { + "name": "owner-pantry-mobile-card-workflow", + "pass": true, + "repro": [ + "Open /?e2e-role=owner on mobile viewport and sign in.", + "Open Pantry tab and update Tomatoes through mobile card status select.", + "Verify pantry update success feedback is shown." ] } ], - "serverOutput": "\n> react-example@0.0.0 dev:e2e\n> vite --config test/e2e/vite.e2e.config.ts\n\n9:38:17 PM [vite] (client) Re-optimizing dependencies because vite config has changed\n\n VITE v6.4.1 ready in 425 ms\n\n ➜ Local: http://127.0.0.1:3000/\n" + "serverOutput": "\n> react-example@0.0.0 dev:e2e\n> vite --config test/e2e/vite.e2e.config.ts\n\n\n VITE v6.4.1 ready in 267 ms\n\n ➜ Local: http://127.0.0.1:3000/\n" } diff --git a/test/e2e/mocks/firebase-auth.ts b/test/e2e/mocks/firebase-auth.ts index 9ee7158..ff9dc2c 100644 --- a/test/e2e/mocks/firebase-auth.ts +++ b/test/e2e/mocks/firebase-auth.ts @@ -56,6 +56,13 @@ export async function signInWithPopup(auth: Auth, _provider?: GoogleAuthProvider return { user: nextUser }; } +export async function signInWithRedirect(auth: Auth, _provider?: GoogleAuthProvider): Promise { + const nextUser = createMockUser(resolveRequestedRole()); + saveSignedInUser(nextUser); + auth.currentUser = nextUser; + notifyAuthListeners(); +} + export async function signOut(auth: Auth): Promise { saveSignedInUser(null); auth.currentUser = null; diff --git a/test/e2e/run.mjs b/test/e2e/run.mjs index bc1976d..a2839d5 100644 --- a/test/e2e/run.mjs +++ b/test/e2e/run.mjs @@ -16,6 +16,39 @@ const pageViewport = { width: 1440, height: 1200, }; +const mobileViewport = { + width: 390, + height: 844, +}; + +function parseBooleanEnv(value, fallbackValue) { + if (value === undefined) { + return fallbackValue; + } + + const normalized = value.trim().toLowerCase(); + if (normalized === '1' || normalized === 'true' || normalized === 'yes') { + return true; + } + if (normalized === '0' || normalized === 'false' || normalized === 'no') { + return false; + } + + return fallbackValue; +} + +function parseNumberEnv(value) { + if (value === undefined || value.trim().length === 0) { + return undefined; + } + + const parsed = Number(value); + if (!Number.isFinite(parsed) || parsed < 0) { + return undefined; + } + + return parsed; +} function sleep(durationMs) { return new Promise((resolve) => { @@ -100,7 +133,7 @@ async function resetBrowserState(page) { window.sessionStorage.clear(); }); await page.reload({ waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); + await page.waitForFunction(() => document.readyState === 'complete', { timeout: uiTimeoutMs }); } async function waitForText(page, expectedText, timeoutMs) { @@ -201,6 +234,41 @@ async function clickByTestId(page, testId) { await page.click(selector); } +async function setSelectByTestId(page, testId, nextValue) { + const selector = `[data-testid="${testId}"]`; + await page.waitForSelector(selector); + await page.evaluate( + ({ cssSelector, value }) => { + const select = document.querySelector(cssSelector); + if (!(select instanceof HTMLSelectElement)) { + throw new Error(`Select not found: ${cssSelector}`); + } + select.value = value; + select.dispatchEvent(new Event('change', { bubbles: true })); + }, + { cssSelector: selector, value: nextValue }, + ); +} + +async function waitForOwnerTabSelection(page, tabTestId, panelId, timeoutMs) { + const tabSelector = `[data-testid="${tabTestId}"]`; + const panelSelector = `#${panelId}`; + await page.waitForFunction( + ({ tabCss, panelCss }) => { + const tab = document.querySelector(tabCss); + const panel = document.querySelector(panelCss); + if (!(tab instanceof HTMLElement) || !(panel instanceof HTMLElement)) { + return false; + } + const isSelected = tab.getAttribute('aria-selected') === 'true'; + const isVisible = panel.hidden === false; + return isSelected && isVisible; + }, + { timeout: timeoutMs }, + { tabCss: tabSelector, panelCss: panelSelector }, + ); +} + async function setRowSelectValue(page, rowText, nextValue) { const didUpdate = await page.evaluate( ({ expectedRowText, value }) => { @@ -382,8 +450,8 @@ async function runOwnerCoreFlow(page) { ]; await page.goto(`${baseUrl}/?e2e-role=owner`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Owner View', uiTimeoutMs); await waitForText(page, 'Household Settings', uiTimeoutMs); await fillByTestId(page, 'meal-day-0-morning', 'E2E Poha and fruit'); @@ -444,15 +512,13 @@ async function runCookCoreFlow(page) { ]; await page.goto(`${baseUrl}/?e2e-role=cook`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Cook View', uiTimeoutMs); await waitForAnyText(page, ["Today's Menu", 'आज का मेनू'], uiTimeoutMs); await fillByTestId(page, 'cook-ai-input', 'Tamatar aur atta khatam ho gaya hai, dhania 2 bunch chahiye'); await clickByTestId(page, 'cook-ai-submit'); await waitForAnyText(page, ['Updated successfully!', 'अपडेट हो गया!'], uiTimeoutMs); - await waitForText(page, 'Dhania', uiTimeoutMs); - await waitForAnyText(page, ['On List', 'सूची में है'], uiTimeoutMs); await fillByTestId(page, 'cook-pantry-search', 'Tomatoes'); await waitForText(page, 'Tomatoes', uiTimeoutMs); @@ -481,8 +547,8 @@ async function runMalformedAiResponseCheck(page) { ]; await page.goto(`${baseUrl}/?e2e-role=cook`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Cook View', uiTimeoutMs); await waitForAnyText(page, ["Today's Menu", 'आज का मेनू'], uiTimeoutMs); await fillByTestId(page, 'cook-ai-input', '__e2e_malformed_ai__'); @@ -513,8 +579,8 @@ async function runUnmatchedItemWarningCheck(page) { ]; await page.goto(`${baseUrl}/?e2e-role=cook`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Cook View', uiTimeoutMs); await waitForAnyText(page, ["Today's Menu", 'आज का मेनू'], uiTimeoutMs); await fillByTestId(page, 'cook-ai-input', '__e2e_unmatched_item__'); @@ -542,8 +608,8 @@ async function runNoteSavePathCheck(page) { ]; await page.goto(`${baseUrl}/?e2e-role=cook`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Cook View', uiTimeoutMs); await waitForAnyText(page, ["Today's Menu", 'आज का मेनू'], uiTimeoutMs); await fillByTestId(page, 'cook-pantry-search', 'Atta'); @@ -568,8 +634,8 @@ async function runRemoveFromGroceryPathCheck(page) { ]; await page.goto(`${baseUrl}/?e2e-role=owner`, { waitUntil: 'domcontentloaded' }); - await waitForText(page, 'Sign in with Google', uiTimeoutMs); - await clickExactText(page, 'button', 'Sign in with Google'); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); await waitForText(page, 'Owner View', uiTimeoutMs); await clickByTestId(page, 'owner-tab-grocery'); await waitForText(page, 'Tomatoes', uiTimeoutMs); @@ -584,6 +650,86 @@ async function runRemoveFromGroceryPathCheck(page) { }; } +async function runOwnerTabKeyboardNavigationCheck(page) { + const repro = [ + 'Open /?e2e-role=owner and sign in.', + 'Focus owner tabs and navigate with ArrowRight, End, and Home.', + 'Verify selected tab and panel mapping after each keypress.', + ]; + + await page.goto(`${baseUrl}/?e2e-role=owner`, { waitUntil: 'domcontentloaded' }); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); + await waitForText(page, 'Owner View', uiTimeoutMs); + + await page.focus('[data-testid="owner-tab-meals"]'); + await page.keyboard.press('ArrowRight'); + await waitForOwnerTabSelection(page, 'owner-tab-grocery', 'owner-panel-grocery', uiTimeoutMs); + await page.keyboard.press('End'); + await waitForOwnerTabSelection(page, 'owner-tab-pantry', 'owner-panel-pantry', uiTimeoutMs); + await page.keyboard.press('Home'); + await waitForOwnerTabSelection(page, 'owner-tab-meals', 'owner-panel-meals', uiTimeoutMs); + + return { + name: 'owner-tab-keyboard-navigation', + pass: true, + repro, + }; +} + +async function runOwnerTabKeyboardNavigationMobileCheck(page) { + const repro = [ + 'Open /?e2e-role=owner on mobile viewport and sign in.', + 'Navigate owner tabs with keyboard keys.', + 'Verify tab selection and active panel on mobile layout.', + ]; + + await page.setViewport(mobileViewport); + await page.goto(`${baseUrl}/?e2e-role=owner`, { waitUntil: 'domcontentloaded' }); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); + await waitForText(page, 'Owner View', uiTimeoutMs); + + await page.focus('[data-testid="owner-tab-meals"]'); + await page.keyboard.press('ArrowRight'); + await waitForOwnerTabSelection(page, 'owner-tab-grocery', 'owner-panel-grocery', uiTimeoutMs); + await page.keyboard.press('End'); + await waitForOwnerTabSelection(page, 'owner-tab-pantry', 'owner-panel-pantry', uiTimeoutMs); + await page.keyboard.press('Home'); + await waitForOwnerTabSelection(page, 'owner-tab-meals', 'owner-panel-meals', uiTimeoutMs); + + return { + name: 'owner-tab-keyboard-navigation-mobile', + pass: true, + repro, + }; +} + +async function runOwnerPantryMobileCardWorkflowCheck(page) { + const repro = [ + 'Open /?e2e-role=owner on mobile viewport and sign in.', + 'Open Pantry tab and update Tomatoes through mobile card status select.', + 'Verify pantry update success feedback is shown.', + ]; + + await page.setViewport(mobileViewport); + await page.goto(`${baseUrl}/?e2e-role=owner`, { waitUntil: 'domcontentloaded' }); + await page.waitForSelector('[data-testid="sign-in-button"]', { timeout: uiTimeoutMs }); + await clickByTestId(page, 'sign-in-button'); + await waitForText(page, 'Owner View', uiTimeoutMs); + await clickByTestId(page, 'owner-tab-pantry'); + await waitForText(page, 'Pantry Management', uiTimeoutMs); + await setSelectByTestId(page, 'pantry-mobile-status-9', 'in-stock'); + await waitForText(page, 'Pantry status updated.', uiTimeoutMs); + await page.waitForSelector('[data-testid="pantry-mobile-card-9"]', { timeout: uiTimeoutMs }); + + return { + name: 'owner-pantry-mobile-card-workflow', + pass: true, + repro, + }; +} + async function runScenario(browser, scenario) { const page = await browser.newPage(); page.setDefaultTimeout(uiTimeoutMs); @@ -674,6 +820,33 @@ const scenarios = [ ], run: runRemoveFromGroceryPathCheck, }, + { + name: 'owner-tab-keyboard-navigation', + repro: [ + 'Open /?e2e-role=owner and sign in.', + 'Navigate owner tabs with keyboard arrows and Home/End.', + 'Verify tab and panel selection updates.', + ], + run: runOwnerTabKeyboardNavigationCheck, + }, + { + name: 'owner-tab-keyboard-navigation-mobile', + repro: [ + 'Open /?e2e-role=owner on mobile viewport and sign in.', + 'Navigate owner tabs with keyboard arrows and Home/End.', + 'Verify tab and panel selection updates on mobile.', + ], + run: runOwnerTabKeyboardNavigationMobileCheck, + }, + { + name: 'owner-pantry-mobile-card-workflow', + repro: [ + 'Open /?e2e-role=owner on mobile viewport and sign in.', + 'Open Pantry tab and use mobile card status control.', + 'Verify pantry update feedback appears.', + ], + run: runOwnerPantryMobileCardWorkflowCheck, + }, ]; async function main() { @@ -714,7 +887,9 @@ async function main() { const browser = await puppeteer.launch({ executablePath: resolveBrowserExecutablePath(), - headless: true, + headless: parseBooleanEnv(process.env.E2E_HEADLESS, true), + slowMo: parseNumberEnv(process.env.E2E_SLOW_MO), + devtools: parseBooleanEnv(process.env.E2E_DEVTOOLS, false), defaultViewport: pageViewport, args: ['--no-sandbox', '--disable-dev-shm-usage'], }); diff --git a/test/e2e/vite.e2e.config.ts b/test/e2e/vite.e2e.config.ts index 0e1cd40..c7a77da 100644 --- a/test/e2e/vite.e2e.config.ts +++ b/test/e2e/vite.e2e.config.ts @@ -63,6 +63,8 @@ export default defineConfig({ plugins: [react(), tailwindcss(), aiParseMockPlugin], define: { 'process.env.GEMINI_API_KEY': JSON.stringify('e2e-mock-key'), + 'process.env.VITE_INGREDIENT_IMAGE_BASE_URL': JSON.stringify('https://example.com/ingredients'), + 'import.meta.env.VITE_INGREDIENT_IMAGE_BASE_URL': JSON.stringify('https://example.com/ingredients'), }, resolve: { alias: { diff --git a/test/rules/run.ts b/test/rules/run.ts index 263bef7..e858f7b 100644 --- a/test/rules/run.ts +++ b/test/rules/run.ts @@ -31,6 +31,7 @@ interface EmulatorHostPort { type TestAuthContext = ReturnType; type TestUnauthContext = ReturnType; type TestFirestore = ReturnType; +type InventoryStatusValue = 'in-stock' | 'low' | 'out'; const projectId = 'demo-rasoi-planner'; const ownerUid = 'owner-uid-1'; @@ -102,6 +103,33 @@ async function seedInventoryItem(testEnv: RulesTestEnvironment): Promise { }); } +interface InventorySeedInput { + itemId: string; + name: string; + status: InventoryStatusValue; + lastUpdated: string; + updatedBy: 'owner' | 'cook'; + requestedQuantity: string; +} + +async function seedInventoryItemWithStatus(testEnv: RulesTestEnvironment, input: InventorySeedInput): Promise { + await testEnv.withSecurityRulesDisabled(async (context) => { + const adminDb = context.firestore(); + await setDoc(doc(adminDb, 'households', householdId, 'inventory', input.itemId), { + name: input.name, + category: 'Staples', + status: input.status, + icon: '🍅', + lastUpdated: input.lastUpdated, + updatedBy: input.updatedBy, + defaultQuantity: '1kg', + requestedQuantity: input.requestedQuantity, + verificationNeeded: false, + anomalyReason: '', + }); + }); +} + async function seedLogItem(testEnv: RulesTestEnvironment): Promise { await testEnv.withSecurityRulesDisabled(async (context) => { const adminDb = context.firestore(); @@ -116,6 +144,21 @@ async function seedLogItem(testEnv: RulesTestEnvironment): Promise { }); } +async function seedUnknownQueueItem(testEnv: RulesTestEnvironment): Promise { + await testEnv.withSecurityRulesDisabled(async (context) => { + const adminDb = context.firestore(); + await setDoc(doc(adminDb, 'households', householdId, 'unknownIngredientQueue', 'queue-item-1'), { + name: 'Curry Leaves', + category: 'veggies', + status: 'open', + requestedStatus: 'low', + createdAt: '2026-03-25T09:00:00.000Z', + createdBy: 'cook', + requestedQuantity: '1 bunch', + }); + }); +} + async function testUnauthenticatedCannotReadOrWriteHousehold(testEnv: RulesTestEnvironment): Promise { const unauthDb = getUnauthenticatedDb(testEnv); await assertFails(getDoc(doc(unauthDb, 'households', householdId))); @@ -241,6 +284,112 @@ async function testInventoryAndLogWritesEnforceRules(testEnv: RulesTestEnvironme await assertFails(invalidBatch.commit()); } +async function testOwnerCanWriteMatchingInventoryAndLogTransition(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedInventoryItem(testEnv); + + const ownerDb = getAuthenticatedDb(testEnv, ownerUid, ownerEmail); + const timestamp = '2026-03-25T11:00:00.000Z'; + const batch = writeBatch(ownerDb); + batch.update(doc(ownerDb, 'households', householdId, 'inventory', 'tomatoes'), { + status: 'low', + lastUpdated: timestamp, + updatedBy: 'owner', + requestedQuantity: '2kg', + }); + batch.set(doc(ownerDb, 'households', householdId, 'logs', 'log-owner-low'), { + itemId: 'tomatoes', + itemName: 'Tomatoes', + oldStatus: 'in-stock', + newStatus: 'low', + timestamp, + role: 'owner', + }); + + await assertSucceeds(batch.commit()); +} + +async function testCookCanWriteMatchingInventoryAndLogTransition(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedInventoryItemWithStatus(testEnv, { + itemId: 'atta', + name: 'Atta', + status: 'low', + lastUpdated: '2026-03-24T08:00:00.000Z', + updatedBy: 'owner', + requestedQuantity: '5kg', + }); + + const cookDb = getAuthenticatedDb(testEnv, cookUid, cookEmail); + const timestamp = '2026-03-25T11:05:00.000Z'; + const batch = writeBatch(cookDb); + batch.update(doc(cookDb, 'households', householdId, 'inventory', 'atta'), { + status: 'out', + lastUpdated: timestamp, + updatedBy: 'cook', + requestedQuantity: '3kg', + }); + batch.set(doc(cookDb, 'households', householdId, 'logs', 'log-cook-out'), { + itemId: 'atta', + itemName: 'Atta', + oldStatus: 'low', + newStatus: 'out', + timestamp, + role: 'cook', + }); + + await assertSucceeds(batch.commit()); +} + +async function testMismatchedLogStatusIsRejected(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedInventoryItem(testEnv); + + const ownerDb = getAuthenticatedDb(testEnv, ownerUid, ownerEmail); + const timestamp = '2026-03-25T11:10:00.000Z'; + const batch = writeBatch(ownerDb); + batch.update(doc(ownerDb, 'households', householdId, 'inventory', 'tomatoes'), { + status: 'low', + lastUpdated: timestamp, + updatedBy: 'owner', + requestedQuantity: '2kg', + }); + batch.set(doc(ownerDb, 'households', householdId, 'logs', 'log-mismatch-status'), { + itemId: 'tomatoes', + itemName: 'Tomatoes', + oldStatus: 'in-stock', + newStatus: 'out', + timestamp, + role: 'owner', + }); + + await assertFails(batch.commit()); +} + +async function testUpdatedByRoleMismatchIsRejected(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedInventoryItem(testEnv); + + const cookDb = getAuthenticatedDb(testEnv, cookUid, cookEmail); + const batch = writeBatch(cookDb); + batch.update(doc(cookDb, 'households', householdId, 'inventory', 'tomatoes'), { + status: 'low', + lastUpdated: '2026-03-25T11:15:00.000Z', + updatedBy: 'owner', + requestedQuantity: '2kg', + }); + batch.set(doc(cookDb, 'households', householdId, 'logs', 'log-role-mismatch'), { + itemId: 'tomatoes', + itemName: 'Tomatoes', + oldStatus: 'in-stock', + newStatus: 'low', + timestamp: '2026-03-25T11:15:00.000Z', + role: 'cook', + }); + + await assertFails(batch.commit()); +} + async function testLegacyUsersPathRestrictedByUid(testEnv: RulesTestEnvironment): Promise { const userADb = getAuthenticatedDb(testEnv, userAUid, 'legacya@example.com'); const userBDb = getAuthenticatedDb(testEnv, userBUid, 'legacyb@example.com'); @@ -264,6 +413,49 @@ async function testLegacyUsersPathRestrictedByUid(testEnv: RulesTestEnvironment) ); } +async function testCookCanCreateUnknownQueueItemButCannotResolve(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + const cookDb = getAuthenticatedDb(testEnv, cookUid, cookEmail); + + await assertSucceeds( + setDoc(doc(cookDb, 'households', householdId, 'unknownIngredientQueue', 'queue-item-cook'), { + name: 'Curry Leaves', + category: 'veggies', + status: 'open', + requestedStatus: 'low', + createdAt: '2026-03-25T10:00:00.000Z', + createdBy: 'cook', + requestedQuantity: '1 bunch', + }), + ); + + await seedUnknownQueueItem(testEnv); + await assertFails( + updateDoc(doc(cookDb, 'households', householdId, 'unknownIngredientQueue', 'queue-item-1'), { + status: 'resolved', + resolution: 'dismissed', + resolvedAt: '2026-03-25T10:05:00.000Z', + resolvedBy: 'cook', + }), + ); +} + +async function testOwnerCanResolveUnknownQueueItemWithValidTransition(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedUnknownQueueItem(testEnv); + const ownerDb = getAuthenticatedDb(testEnv, ownerUid, ownerEmail); + + await assertSucceeds( + updateDoc(doc(ownerDb, 'households', householdId, 'unknownIngredientQueue', 'queue-item-1'), { + status: 'resolved', + resolution: 'promoted', + resolvedAt: '2026-03-25T10:10:00.000Z', + resolvedBy: 'owner', + promotedInventoryItemId: 'inventory-123', + }), + ); +} + async function executeTestCase(testEnv: RulesTestEnvironment, testCase: TestCase): Promise { await testEnv.clearFirestore(); try { @@ -304,10 +496,34 @@ async function runAllTests(testEnv: RulesTestEnvironment): Promise { name: 'Inventory/log writes must satisfy rules constraints', run: testInventoryAndLogWritesEnforceRules, }, + { + name: 'Owner can write matching inventory/log transition', + run: testOwnerCanWriteMatchingInventoryAndLogTransition, + }, + { + name: 'Cook can write matching inventory/log transition', + run: testCookCanWriteMatchingInventoryAndLogTransition, + }, + { + name: 'Mismatched log status is rejected', + run: testMismatchedLogStatusIsRejected, + }, + { + name: 'Role mismatch on inventory updatedBy is rejected', + run: testUpdatedByRoleMismatchIsRejected, + }, { name: 'Legacy users path is restricted by uid', run: testLegacyUsersPathRestrictedByUid, }, + { + name: 'Cook can create unknown queue item but cannot resolve it', + run: testCookCanCreateUnknownQueueItemButCannotResolve, + }, + { + name: 'Owner can resolve unknown queue item with valid transition', + run: testOwnerCanResolveUnknownQueueItemWithValidTransition, + }, ]; for (const testCase of testCases) { diff --git a/test/unit/run.ts b/test/unit/run.ts index e963dbd..49987f2 100644 --- a/test/unit/run.ts +++ b/test/unit/run.ts @@ -1,12 +1,19 @@ import assert from 'node:assert/strict'; import { getAppCopy, getCookCopy, getOwnerCopy } from '../../src/i18n/copy'; +import { validateAiParseResult } from '../../src/services/aiValidation'; +import { buildPantryLog } from '../../src/services/logService'; +import { sanitizeFirestorePayload } from '../../src/utils/firestorePayload'; +import { getIngredientNativeContextLabel, resolveIngredientVisual } from '../../src/utils/ingredientVisuals'; import { + getLocalizedCategoryName, getPantryCategoryLabel, getPantryCategoryOptions, normalizePantryCategory, pantryCategoryMatchesSearch, } from '../../src/utils/pantryCategory'; +process.env.VITE_INGREDIENT_IMAGE_BASE_URL = 'https://cdn.example.com/rasoi/ingredients'; + function testPantryCategoryNormalization(): void { assert.equal(normalizePantryCategory('Spices'), 'spices'); assert.equal(normalizePantryCategory('Staples'), 'staples'); @@ -47,12 +54,338 @@ function testCopyCoverage(): void { assert.ok(cookHi.smartAssistant.length > 0); } +function testAiParseValidationAcceptsMixedResult(): void { + const result = validateAiParseResult({ + understood: true, + message: 'Applied updates.', + updates: [ + { + itemId: 'atta', + newStatus: 'low', + requestedQuantity: '4kg', + }, + { + itemId: 'tomatoes', + newStatus: 'out', + }, + ], + unlistedItems: [ + { + name: 'Jeera', + status: 'low', + category: 'Spices', + requestedQuantity: '200g', + }, + ], + }); + + assert.deepEqual(result, { + understood: true, + message: 'Applied updates.', + updates: [ + { + itemId: 'atta', + newStatus: 'low', + requestedQuantity: '4kg', + }, + { + itemId: 'tomatoes', + newStatus: 'out', + requestedQuantity: undefined, + }, + ], + unlistedItems: [ + { + name: 'Jeera', + status: 'low', + category: 'Spices', + requestedQuantity: '200g', + }, + ], + }); +} + +function testAiParseValidationRejectsInvalidUnderstoodType(): void { + assert.throws( + () => + validateAiParseResult({ + understood: 'true', + updates: [], + unlistedItems: [], + }), + /AI response missing understood boolean\./, + ); +} + +function testAiParseValidationRejectsOversizedRequestedQuantity(): void { + assert.throws( + () => + validateAiParseResult({ + understood: true, + updates: [ + { + itemId: 'atta', + newStatus: 'low', + requestedQuantity: 'x'.repeat(201), + }, + ], + unlistedItems: [], + }), + /AI update requestedQuantity is invalid\./, + ); +} + +function testLocalizedCategoryLabels(): void { + assert.equal(getLocalizedCategoryName('staples', 'en'), 'Main Ration'); + assert.equal(getLocalizedCategoryName('staples', 'hi'), 'मुख्य राशन'); + assert.equal(getLocalizedCategoryName('milk', 'hi'), 'डेयरी'); + assert.equal(getPantryCategoryLabel('milk').includes('डेयरी'), true); +} + +function withMockedRandomUUID(value: string, callback: () => T): T { + const originalCrypto = globalThis.crypto; + Object.defineProperty(globalThis, 'crypto', { + configurable: true, + value: { + randomUUID: () => value, + }, + }); + + try { + return callback(); + } finally { + Object.defineProperty(globalThis, 'crypto', { + configurable: true, + value: originalCrypto, + }); + } +} + +function testBuildPantryLogIsDeterministic(): void { + const log = withMockedRandomUUID('mock-log-id', () => + buildPantryLog({ + itemId: 'tomatoes', + itemName: 'Tomatoes', + oldStatus: 'in-stock', + newStatus: 'low', + role: 'owner', + timestampIso: '2026-03-25T10:00:00.000Z', + }), + ); + + assert.deepEqual(log, { + id: 'mock-log-id', + itemId: 'tomatoes', + itemName: 'Tomatoes', + oldStatus: 'in-stock', + newStatus: 'low', + timestamp: '2026-03-25T10:00:00.000Z', + role: 'owner', + }); +} + +function testSanitizeFirestorePayloadOmitsUndefinedFields(): void { + const payload = sanitizeFirestorePayload({ + status: 'low' as const, + lastUpdated: '2026-03-25T10:05:00.000Z', + updatedBy: 'cook' as const, + requestedQuantity: undefined, + anomalyReason: '', + }); + + assert.deepEqual(payload, { + status: 'low', + lastUpdated: '2026-03-25T10:05:00.000Z', + updatedBy: 'cook', + anomalyReason: '', + }); +} + +function testIngredientVisualCatalogMatch(): void { + const visual = resolveIngredientVisual({ + name: 'Turmeric (Haldi)', + nameHi: 'हल्दी', + category: 'spices', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🟡'); + assert.equal(visual.altText.includes('turmeric'), true); + assert.equal(visual.catalogMatch?.canonicalName, 'Turmeric'); + assert.equal(visual.catalogMatch?.transliteration, 'Haldi'); + assert.equal(visual.catalogMatch?.nativeName, 'हल्दी'); + assert.equal(visual.imageUrl, 'https://cdn.example.com/rasoi/ingredients/turmeric.webp'); +} + +function testIngredientVisualRequiresConfiguredBaseUrl(): void { + const previousValue = process.env.VITE_INGREDIENT_IMAGE_BASE_URL; + delete process.env.VITE_INGREDIENT_IMAGE_BASE_URL; + + try { + assert.throws( + () => + resolveIngredientVisual({ + name: 'Turmeric', + category: 'spices', + }), + /VITE_INGREDIENT_IMAGE_BASE_URL is required/, + ); + } finally { + process.env.VITE_INGREDIENT_IMAGE_BASE_URL = previousValue; + } +} + +function testIngredientVisualHindiMatch(): void { + const visual = resolveIngredientVisual({ + name: 'Requested item', + nameHi: 'नमक', + category: 'other', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🧂'); + assert.equal(visual.altText.includes('salt'), true); + assert.equal(visual.catalogMatch?.canonicalName, 'Salt'); + assert.equal(visual.catalogMatch?.matchedKeyword, 'नमक'); +} + +function testExpandedIngredientVisualCoverage(): void { + const cases = [ + { input: { name: 'Jeera', category: 'spices' }, expectedKey: 'cumin', expectedName: 'Cumin Seeds', expectedNativeName: 'जीरा' }, + { input: { name: 'Sarson ka tel', category: 'staples' }, expectedKey: 'mustard-oil', expectedName: 'Mustard Oil', expectedNativeName: 'सरसों का तेल' }, + { input: { name: 'Rajma', category: 'pulses' }, expectedKey: 'rajma', expectedName: 'Kidney Beans', expectedNativeName: 'राजमा' }, + { input: { name: 'दही', category: 'dairy' }, expectedKey: 'curd', expectedName: 'Curd', expectedNativeName: 'दही' }, + { input: { name: 'Hara Dhaniya', category: 'veggies' }, expectedKey: 'coriander-leaves', expectedName: 'Coriander Leaves', expectedNativeName: 'हरा धनिया' }, + { input: { name: 'Besan', category: 'staples' }, expectedKey: 'besan', expectedName: 'Gram Flour', expectedNativeName: 'बेसन' }, + ] as const; + + for (const testCase of cases) { + const visual = resolveIngredientVisual(testCase.input); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.catalogMatch?.key, testCase.expectedKey); + assert.equal(visual.catalogMatch?.canonicalName, testCase.expectedName); + assert.equal(visual.catalogMatch?.nativeName, testCase.expectedNativeName); + } +} + +function testIngredientVisualChoosesMostSpecificKeyword(): void { + const visual = resolveIngredientVisual({ + name: 'Kala Namak', + category: 'spices', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.catalogMatch?.key, 'black-salt'); + assert.equal(visual.catalogMatch?.canonicalName, 'Black Salt'); +} + +function testIngredientNativeContextLabel(): void { + const visual = resolveIngredientVisual({ + name: 'Jeera', + category: 'spices', + }); + + assert.equal(getIngredientNativeContextLabel({}, visual), 'Jeera / जीरा'); + assert.equal(getIngredientNativeContextLabel({ nameHi: 'जीरा' }, visual), 'Jeera / जीरा'); +} + +function testIngredientVisualExistingIconFallback(): void { + const visual = resolveIngredientVisual({ + name: 'Future Pantry Item', + category: 'spices', + icon: '🌿', + }); + + assert.equal(visual.source, 'existing-icon'); + assert.equal(visual.imageUrl, null); + assert.equal(visual.fallbackIcon, '🌿'); + assert.equal(visual.catalogMatch, undefined); +} + +function testIngredientVisualCategoryFallback(): void { + const visual = resolveIngredientVisual({ + name: 'Unknown packet', + category: 'other', + }); + + assert.equal(visual.source, 'category-fallback'); + assert.equal(visual.imageUrl, null); + assert.equal(visual.fallbackIcon, '📦'); + assert.equal(visual.catalogMatch, undefined); +} + function run(): void { testPantryCategoryNormalization(); testPantryCategoryLabels(); testPantryCategoryOptions(); testCopyCoverage(); + testAiParseValidationAcceptsMixedResult(); + testAiParseValidationRejectsInvalidUnderstoodType(); + testAiParseValidationRejectsOversizedRequestedQuantity(); + testLocalizedCategoryLabels(); + testBuildPantryLogIsDeterministic(); + testSanitizeFirestorePayloadOmitsUndefinedFields(); + testIngredientVisualCatalogMatch(); + testIngredientVisualRequiresConfiguredBaseUrl(); + testIngredientVisualHindiMatch(); + testExpandedIngredientVisualCoverage(); + testIngredientVisualChoosesMostSpecificKeyword(); + testIngredientNativeContextLabel(); + testIngredientVisualExistingIconFallback(); + testIngredientVisualCategoryFallback(); console.log('All unit tests passed.'); } run(); +function testIngredientVisualMixedLanguageCuminMatch(): void { + const visual = resolveIngredientVisual({ + name: 'Cumin Seeds', + nameHi: 'जीरा', + category: 'other', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🟤'); + assert.equal(visual.altText.includes('cumin'), true); +} + +function testIngredientVisualFutureIngredientFallback(): void { + const visual = resolveIngredientVisual({ + name: 'Curry Leaves', + nameHi: 'करी पत्ता', + category: 'veggies', + }); + + assert.equal(visual.source, 'category-fallback'); + assert.equal(visual.imageUrl, null); + assert.equal(visual.fallbackIcon, '🥕'); +} + +function testIngredientVisualPunctuatedVariantMatch(): void { + const visual = resolveIngredientVisual({ + name: 'Red Chilli Powder (Kashmiri)', + nameHi: 'लाल मिर्च', + category: 'spices', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🌶️'); + assert.equal(visual.altText.includes('red chilli'), true); +} + +function testPantryCategoryMatchesMixedLanguageQueries(): void { + assert.equal(pantryCategoryMatchesSearch('veggies', 'sabzi'), true); + assert.equal(pantryCategoryMatchesSearch('veggies', 'सब्ज़ियाँ'), true); + assert.equal(pantryCategoryMatchesSearch('staples', 'main ration'), true); +} + +function runQAFollowUpTests(): void { + testIngredientVisualMixedLanguageCuminMatch(); + testIngredientVisualFutureIngredientFallback(); + testIngredientVisualPunctuatedVariantMatch(); + testPantryCategoryMatchesMixedLanguageQueries(); + console.log('QA follow-up unit tests passed.'); +} + +runQAFollowUpTests(); From 64cb2dc06162363a954b3358af562c4b2e44ad93 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 20:00:43 +0530 Subject: [PATCH 05/10] docs: add QA edge-case matrix and journey evidence --- ACTIVITY_LOG.md | 17 ++++++++ QA_EDGE_CASE_MATRIX.md | 38 ++++++++++++++++++ test/e2e/artifacts/cook-ai-journey.png | Bin 0 -> 166984 bytes test/e2e/artifacts/note-save-path.png | Bin 0 -> 154536 bytes test/e2e/artifacts/owner-core-journey.png | Bin 0 -> 166037 bytes .../artifacts/remove-from-grocery-path.png | Bin 0 -> 168228 bytes 6 files changed, 55 insertions(+) create mode 100644 ACTIVITY_LOG.md create mode 100644 QA_EDGE_CASE_MATRIX.md create mode 100644 test/e2e/artifacts/cook-ai-journey.png create mode 100644 test/e2e/artifacts/note-save-path.png create mode 100644 test/e2e/artifacts/owner-core-journey.png create mode 100644 test/e2e/artifacts/remove-from-grocery-path.png diff --git a/ACTIVITY_LOG.md b/ACTIVITY_LOG.md new file mode 100644 index 0000000..a0fe4f2 --- /dev/null +++ b/ACTIVITY_LOG.md @@ -0,0 +1,17 @@ +# Activity Log + +## 2026-03-25 + +- Reviewed owner/cook flows, inventory transitions, AI parsing validation, multilingual pantry labels, and activity-log rendering. +- Added `QA_EDGE_CASE_MATRIX.md` with 34 prioritized edge cases covering the requested risk areas. +- Expanded automated coverage in `test/unit/run.ts` and `test/rules/run.ts` for AI parse validation, localized labels, deterministic log construction, and inventory/log write consistency. +- Added deterministic ingredient visual resolver and applied image + fallback rendering across cook, grocery, and pantry surfaces. +- Refined owner-side UX hierarchy (settings grouping, owner tab affordance, responsive meal planner card layout). +- Validation completed: `npm run lint`, `npm run unit:test`, `npm run build`, and `npm run rules:test` (rules test executed successfully outside sandbox due emulator port restrictions in sandbox mode). +- Added 10 follow-up QA edge cases for future ingredient additions, bilingual naming recognition, responsive owner/pantry layouts, and owner-tab keyboard navigation. +- Appended targeted unit coverage in `test/unit/run.ts` for bilingual ingredient matching, catalog fallback behavior for future items, and category search aliases. +- Validation commands/results: + - `npm run lint` -> passed + - `npm run unit:test` -> passed + - `npm run build` -> passed + - `npm run rules:test` -> passed (outside sandbox) diff --git a/QA_EDGE_CASE_MATRIX.md b/QA_EDGE_CASE_MATRIX.md new file mode 100644 index 0000000..dce4658 --- /dev/null +++ b/QA_EDGE_CASE_MATRIX.md @@ -0,0 +1,38 @@ +# QA Edge Case Matrix + +| ID | Priority | Area | Edge case | Expected result | +|---|---|---|---|---| +| Q-01 | P0 | Owner flow | Owner signs in with the matching household owner UID. | Owner dashboard loads with settings, meals, grocery, and pantry access. | +| Q-02 | P0 | Cook flow | Cook signs in with the invited household email. | Cook dashboard loads with the cook workspace and pantry check tools. | +| Q-03 | P0 | Access control | Cook signs in after access is removed by the owner. | Access removed screen appears and the cook cannot continue. | +| Q-04 | P1 | Owner flow | Owner changes the cook invite email casing before saving. | Email is normalized to lowercase and persisted consistently. | +| Q-05 | P1 | Multilingual labels | Owner language is switched to Hindi. | Owner-facing labels update to Hindi copy. | +| Q-06 | P1 | Multilingual labels | Cook language is switched to English. | Cook-facing labels update to English copy. | +| Q-07 | P0 | Inventory transition | In-stock item is marked low by the owner. | Pantry item updates, and a matching activity log entry is written. | +| Q-08 | P0 | Inventory transition | In-stock item is marked out within the anomaly window. | Verification warning appears with a clear anomaly reason. | +| Q-09 | P0 | Inventory transition | Low or out item gets a note from the cook. | Requested quantity persists and renders on reopen. | +| Q-10 | P1 | Inventory transition | Owner clears a verification warning after review. | Warning text disappears while item status stays unchanged. | +| Q-11 | P1 | Inventory transition | Owner adds a new pantry item with a custom quantity. | Item is saved with normalized category and default quantity. | +| Q-12 | P1 | Search behavior | Pantry search uses the English alias `ration`. | Staples items match and remain visible. | +| Q-13 | P1 | Search behavior | Pantry search uses the Hindi label `मुख्य`. | Staples items match through localized category copy. | +| Q-14 | P0 | AI parsing | AI returns a valid response with multiple updates and one unlisted item. | All valid updates apply and the unlisted item is created. | +| Q-15 | P0 | AI parsing | AI response sets `understood` to a non-boolean value. | Parsing fails safely with no writes. | +| Q-16 | P0 | AI parsing | AI response has malformed arrays or invalid item shapes. | Parsing fails safely and the cook view stays usable. | +| Q-17 | P1 | AI parsing | AI response contains one valid update and one unknown item. | Valid updates apply and the partial-match warning appears. | +| Q-18 | P1 | AI parsing | AI response includes a quantity like `2kg`. | Requested quantity is preserved on the inventory item and note display. | +| Q-19 | P1 | Multilingual labels | Pantry labels are viewed in English and Hindi for the same category. | English and Hindi names stay aligned for the same pantry category. | +| Q-20 | P1 | Multilingual labels | Cook helper text switches with the selected language. | Assistant hints and button labels match the current language. | +| Q-21 | P0 | Activity logs | Every successful pantry status change writes a log entry. | Logs tab shows the new entry immediately after the change. | +| Q-22 | P0 | Activity logs | Log entry is created for the correct actor and item. | Role, item name, and status text match the write that occurred. | +| Q-23 | P1 | Activity logs | Multiple updates happen in sequence. | Logs are ordered newest-first and no entry is lost. | +| Q-24 | P1 | Activity logs | No pantry writes have occurred yet. | Empty-state copy is shown instead of stale or partial logs. | +| Q-25 | P1 | Future ingredient additions | Owner adds a new pantry item that is not in the ingredient catalog yet, such as `Curry Leaves`. | The item saves successfully with a category fallback icon and no dependency on catalog metadata. | +| Q-26 | P1 | Future ingredient additions | Owner adds a new pantry item with punctuation and casing variation, such as `Red Chilli Powder (Kashmiri)`. | The item name is preserved, the category is normalized, and the best matching visual path is still selected. | +| Q-27 | P1 | Future ingredient additions | Cook submits an unlisted ingredient request for a future inventory item. | The new item is created, stays readable on reopen, and keeps the requested quantity intact. | +| Q-28 | P1 | Bilingual naming recognition | Ingredient matching is attempted with English and Hindi aliases for the same item, such as `Cumin Seeds` and `जीरा`. | Search and visual resolution land on the same pantry item instead of creating a duplicate. | +| Q-29 | P1 | Bilingual naming recognition | Ingredient matching is attempted with Hindi first and an English alias, such as `नमक` and `Salt`. | The same pantry item is recognized correctly in both directions. | +| Q-30 | P1 | Bilingual naming recognition | Pantry search uses a mixed-language query like `atta आटा` or `sabzi सब्ज़ियाँ`. | The expected item or category stays visible and unrelated rows remain hidden. | +| Q-31 | P2 | Responsive behavior | Owner workspace is viewed on a narrow mobile viewport. | The tab row stacks cleanly, labels stay readable, and horizontal overflow does not block section switching. | +| Q-32 | P2 | Responsive behavior | Pantry add form is viewed on a small screen while typing a long ingredient name. | The inputs stack vertically and the add button remains fully usable without clipping. | +| Q-33 | P2 | Owner tab keyboard interactions | Keyboard user tabs to the owner tablist and activates Grocery or Pantry with Enter or Space. | The selected tab changes without a mouse and the visible panel updates immediately. | +| Q-34 | P2 | Owner tab keyboard interactions | Keyboard user navigates the stacked owner tabs on a narrow screen. | Focus remains visible, the active tab state stays clear, and wrapped labels do not trap keyboard navigation. | diff --git a/test/e2e/artifacts/cook-ai-journey.png b/test/e2e/artifacts/cook-ai-journey.png new file mode 100644 index 0000000000000000000000000000000000000000..9dcb6e55c32c14a944da96e0e78231808b768486 GIT binary patch literal 166984 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�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 DLC5Q? literal 0 HcmV?d00001 diff --git a/test/e2e/artifacts/note-save-path.png b/test/e2e/artifacts/note-save-path.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2911b778889930cfa6ea5e50b258e4e6cfa54b GIT binary patch literal 154536 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 BaNqy{ literal 0 HcmV?d00001 diff --git a/test/e2e/artifacts/owner-core-journey.png b/test/e2e/artifacts/owner-core-journey.png new file mode 100644 index 0000000000000000000000000000000000000000..a98f900008114c22c84a6f1d5ee658533251761e GIT binary patch literal 166037 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 IbxsLQ06Tpfb^rhX literal 0 HcmV?d00001 diff --git a/test/e2e/artifacts/remove-from-grocery-path.png b/test/e2e/artifacts/remove-from-grocery-path.png new file mode 100644 index 0000000000000000000000000000000000000000..322af2f96263e7a1cd599057b1fa922051459136 GIT binary patch literal 168228 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 XvZ}8^RFN|+T_T(dVaIi+AjZD|z3UG^ literal 0 HcmV?d00001 From 8782ccb2bc1e50421e8e14c7ec120d6332a85458 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 20:21:37 +0530 Subject: [PATCH 06/10] fix: prevent app crash when ingredient image base url is missing --- src/utils/ingredientVisuals.ts | 38 ++++++++++++++++++++++++++++----- test/unit/run.ts | 39 +++++++++++++++++++++++++--------- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/src/utils/ingredientVisuals.ts b/src/utils/ingredientVisuals.ts index 15db423..891fd0c 100644 --- a/src/utils/ingredientVisuals.ts +++ b/src/utils/ingredientVisuals.ts @@ -89,16 +89,43 @@ function normalizeCatalogImageBaseUrl(rawBaseUrl: string): string { return trimmedValue.replace(/\/+$/u, ''); } -function getCatalogImageBaseUrl(): string { +function getCatalogImageBaseUrlFromEnv(): string | undefined { const viteEnvCandidate = (import.meta as ImportMeta & { env?: Record }).env; const processEnvCandidate = typeof process !== 'undefined' ? process.env : undefined; - const configuredBaseUrl = viteEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL ?? processEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL; + return viteEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL ?? processEnvCandidate?.VITE_INGREDIENT_IMAGE_BASE_URL; +} + +let cachedCatalogImageBaseUrlConfig: string | undefined; +let cachedCatalogImageBaseUrlValue: string | null | undefined; + +function getCatalogImageBaseUrl(): string | null { + const configuredBaseUrl = getCatalogImageBaseUrlFromEnv(); + if (cachedCatalogImageBaseUrlValue !== undefined && cachedCatalogImageBaseUrlConfig === configuredBaseUrl) { + return cachedCatalogImageBaseUrlValue; + } if (configuredBaseUrl === undefined) { - throw new Error('VITE_INGREDIENT_IMAGE_BASE_URL is required for ingredient catalog images.'); + cachedCatalogImageBaseUrlConfig = configuredBaseUrl; + cachedCatalogImageBaseUrlValue = null; + return cachedCatalogImageBaseUrlValue; } - return normalizeCatalogImageBaseUrl(configuredBaseUrl); + try { + cachedCatalogImageBaseUrlConfig = configuredBaseUrl; + cachedCatalogImageBaseUrlValue = normalizeCatalogImageBaseUrl(configuredBaseUrl); + return cachedCatalogImageBaseUrlValue; + } catch (error) { + console.warn( + 'Ingredient catalog images are disabled because VITE_INGREDIENT_IMAGE_BASE_URL is invalid.', + { + configuredBaseUrl, + error: error instanceof Error ? error.message : String(error), + }, + ); + cachedCatalogImageBaseUrlConfig = configuredBaseUrl; + cachedCatalogImageBaseUrlValue = null; + return cachedCatalogImageBaseUrlValue; + } } function createIngredientCatalogEntry( @@ -640,8 +667,9 @@ export function resolveIngredientVisual(input: IngredientVisualInput): Ingredien const catalogMatch = findIngredientCatalogMatch(searchText); if (catalogMatch !== null) { const imageBaseUrl = getCatalogImageBaseUrl(); + const imageUrl = imageBaseUrl === null ? null : buildCatalogImageUrl(imageBaseUrl, catalogMatch.entry.imageObjectKey); return { - imageUrl: buildCatalogImageUrl(imageBaseUrl, catalogMatch.entry.imageObjectKey), + imageUrl, fallbackIcon: catalogMatch.entry.fallbackIcon, altText: catalogMatch.entry.altText, source: 'catalog-match', diff --git a/test/unit/run.ts b/test/unit/run.ts index 49987f2..98bf327 100644 --- a/test/unit/run.ts +++ b/test/unit/run.ts @@ -217,19 +217,37 @@ function testIngredientVisualCatalogMatch(): void { assert.equal(visual.imageUrl, 'https://cdn.example.com/rasoi/ingredients/turmeric.webp'); } -function testIngredientVisualRequiresConfiguredBaseUrl(): void { +function testIngredientVisualMissingBaseUrlUsesFallbackWithoutThrowing(): void { const previousValue = process.env.VITE_INGREDIENT_IMAGE_BASE_URL; delete process.env.VITE_INGREDIENT_IMAGE_BASE_URL; try { - assert.throws( - () => - resolveIngredientVisual({ - name: 'Turmeric', - category: 'spices', - }), - /VITE_INGREDIENT_IMAGE_BASE_URL is required/, - ); + const visual = resolveIngredientVisual({ + name: 'Turmeric', + category: 'spices', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🟡'); + assert.equal(visual.imageUrl, null); + } finally { + process.env.VITE_INGREDIENT_IMAGE_BASE_URL = previousValue; + } +} + +function testIngredientVisualInvalidBaseUrlUsesFallbackWithoutThrowing(): void { + const previousValue = process.env.VITE_INGREDIENT_IMAGE_BASE_URL; + process.env.VITE_INGREDIENT_IMAGE_BASE_URL = 'ftp://invalid'; + + try { + const visual = resolveIngredientVisual({ + name: 'Turmeric', + category: 'spices', + }); + + assert.equal(visual.source, 'catalog-match'); + assert.equal(visual.fallbackIcon, '🟡'); + assert.equal(visual.imageUrl, null); } finally { process.env.VITE_INGREDIENT_IMAGE_BASE_URL = previousValue; } @@ -327,7 +345,8 @@ function run(): void { testBuildPantryLogIsDeterministic(); testSanitizeFirestorePayloadOmitsUndefinedFields(); testIngredientVisualCatalogMatch(); - testIngredientVisualRequiresConfiguredBaseUrl(); + testIngredientVisualMissingBaseUrlUsesFallbackWithoutThrowing(); + testIngredientVisualInvalidBaseUrlUsesFallbackWithoutThrowing(); testIngredientVisualHindiMatch(); testExpandedIngredientVisualCoverage(); testIngredientVisualChoosesMostSpecificKeyword(); From 25d5c8cc79e47ebd131eda4c14f39b912c569a19 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 20:33:37 +0530 Subject: [PATCH 07/10] fix: harden unknown queue loading in owner view --- src/App.tsx | 72 +++++++++++++++++++++++++++++++++---- src/utils/unknownQueue.ts | 75 +++++++++++++++++++++++++++++++++++++++ test/rules/run.ts | 27 ++++++++++++++ test/unit/run.ts | 66 ++++++++++++++++++++++++++++++++++ 4 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 src/utils/unknownQueue.ts diff --git a/src/App.tsx b/src/App.tsx index f92227c..1837a90 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -27,6 +27,12 @@ import { import { upsertMealField } from './services/mealService'; import { HouseholdData, resolveOrCreateHousehold } from './services/householdService'; import { getAppCopy } from './i18n/copy'; +import { + getUnknownQueueLoadErrorMessage, + isFirestoreFailedPreconditionError, + sortUnknownIngredientQueueItemsByCreatedAt, + toFirestoreListenerErrorInfo, +} from './utils/unknownQueue'; interface UiFeedback { kind: 'success' | 'error'; @@ -84,6 +90,7 @@ export default function App() { let mealsUnsub: Unsubscribe | null = null; let logsUnsub: Unsubscribe | null = null; let unknownQueueUnsub: Unsubscribe | null = null; + let unknownQueueFallbackUnsub: Unsubscribe | null = null; let hasLoadedHousehold = false; let hasLoadedInventory = false; let hasLoadedMeals = false; @@ -187,20 +194,70 @@ export default function App() { }, ); + const handleUnknownQueueLoaded = (items: UnknownIngredientQueueItem[]): void => { + setUnknownIngredientQueue(items); + hasLoadedUnknownQueue = true; + markInitialViewReady(); + }; + + const subscribeUnknownQueueFallback = (): void => { + if (unknownQueueFallbackUnsub !== null) { + return; + } + + unknownQueueFallbackUnsub = onSnapshot( + collection(db, `households/${resolved.householdId}/unknownIngredientQueue`), + (snapshot) => { + const queueItems = snapshot.docs.map((queueDoc) => ({ + id: queueDoc.id, + ...(queueDoc.data() as Omit), + })); + handleUnknownQueueLoaded(sortUnknownIngredientQueueItemsByCreatedAt(queueItems)); + }, + (error) => { + const parsedError = toFirestoreListenerErrorInfo(error); + console.error('unknown_queue_snapshot_fallback_failed', { + error, + householdId: resolved.householdId, + code: parsedError.code, + message: parsedError.message, + }); + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); + hasLoadedUnknownQueue = true; + markInitialViewReady(); + }, + ); + }; + unknownQueueUnsub = onSnapshot( query(collection(db, `households/${resolved.householdId}/unknownIngredientQueue`), orderBy('createdAt', 'desc')), (snapshot) => { - const queueItems: UnknownIngredientQueueItem[] = snapshot.docs.map((queueDoc) => ({ + const queueItems = snapshot.docs.map((queueDoc) => ({ id: queueDoc.id, ...(queueDoc.data() as Omit), })); - setUnknownIngredientQueue(queueItems); - hasLoadedUnknownQueue = true; - markInitialViewReady(); + handleUnknownQueueLoaded(queueItems); }, (error) => { - console.error('unknown_queue_snapshot_failed', { error, householdId: resolved.householdId }); - setUiFeedback({ kind: 'error', message: 'Failed to load unknown ingredient queue.' }); + const parsedError = toFirestoreListenerErrorInfo(error); + console.error('unknown_queue_snapshot_failed', { + error, + householdId: resolved.householdId, + code: parsedError.code, + message: parsedError.message, + }); + + if (isFirestoreFailedPreconditionError(parsedError)) { + if (unknownQueueUnsub !== null) { + unknownQueueUnsub(); + unknownQueueUnsub = null; + } + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); + subscribeUnknownQueueFallback(); + return; + } + + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); hasLoadedUnknownQueue = true; markInitialViewReady(); }, @@ -230,6 +287,9 @@ export default function App() { if (unknownQueueUnsub) { unknownQueueUnsub(); } + if (unknownQueueFallbackUnsub) { + unknownQueueFallbackUnsub(); + } }; }, [user]); diff --git a/src/utils/unknownQueue.ts b/src/utils/unknownQueue.ts new file mode 100644 index 0000000..d281c04 --- /dev/null +++ b/src/utils/unknownQueue.ts @@ -0,0 +1,75 @@ +import { UnknownIngredientQueueItem } from '../types'; + +export interface FirestoreListenerErrorInfo { + code: string | null; + message: string | null; + name: string | null; +} + +function toRecord(value: unknown): Record | null { + if (typeof value !== 'object' || value === null) { + return null; + } + return value as Record; +} + +function toOptionalString(value: unknown): string | null { + return typeof value === 'string' ? value : null; +} + +function toTimestampMs(value: string): number | null { + const parsed = Date.parse(value); + return Number.isNaN(parsed) ? null : parsed; +} + +export function toFirestoreListenerErrorInfo(error: unknown): FirestoreListenerErrorInfo { + const record = toRecord(error); + return { + code: toOptionalString(record?.code), + message: toOptionalString(record?.message), + name: toOptionalString(record?.name), + }; +} + +export function isFirestoreFailedPreconditionError(error: FirestoreListenerErrorInfo): boolean { + return error.code === 'failed-precondition'; +} + +export function isFirestorePermissionDeniedError(error: FirestoreListenerErrorInfo): boolean { + return error.code === 'permission-denied'; +} + +export function getUnknownQueueLoadErrorMessage(error: FirestoreListenerErrorInfo): string { + if (isFirestorePermissionDeniedError(error)) { + return 'Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.'; + } + + if (isFirestoreFailedPreconditionError(error)) { + return 'Unknown ingredient queue index is missing. Showing fallback order while index is provisioned.'; + } + + return 'Failed to load unknown ingredient queue.'; +} + +export function sortUnknownIngredientQueueItemsByCreatedAt(items: UnknownIngredientQueueItem[]): UnknownIngredientQueueItem[] { + return [...items].sort((leftItem, rightItem) => { + const rightTime = toTimestampMs(rightItem.createdAt); + const leftTime = toTimestampMs(leftItem.createdAt); + + if (rightTime !== null && leftTime !== null) { + if (rightTime !== leftTime) { + return rightTime - leftTime; + } + } else if (rightTime !== null && leftTime === null) { + return 1; + } else if (rightTime === null && leftTime !== null) { + return -1; + } + + if (rightItem.createdAt !== leftItem.createdAt) { + return rightItem.createdAt.localeCompare(leftItem.createdAt); + } + + return rightItem.id.localeCompare(leftItem.id); + }); +} diff --git a/test/rules/run.ts b/test/rules/run.ts index e858f7b..283ac9a 100644 --- a/test/rules/run.ts +++ b/test/rules/run.ts @@ -228,6 +228,25 @@ async function testInvitedCookCanReadHouseholdInventoryAndLogs(testEnv: RulesTes await assertSucceeds(getDocs(collection(cookDb, 'households', householdId, 'logs'))); } +async function testOwnerAndCookCanReadUnknownIngredientQueue(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedUnknownQueueItem(testEnv); + + const ownerDb = getAuthenticatedDb(testEnv, ownerUid, ownerEmail); + const cookDb = getAuthenticatedDb(testEnv, cookUid, cookEmail); + + await assertSucceeds(getDocs(collection(ownerDb, 'households', householdId, 'unknownIngredientQueue'))); + await assertSucceeds(getDocs(collection(cookDb, 'households', householdId, 'unknownIngredientQueue'))); +} + +async function testNonMemberCannotReadUnknownIngredientQueue(testEnv: RulesTestEnvironment): Promise { + await seedOwnerHousehold(testEnv, cookEmail); + await seedUnknownQueueItem(testEnv); + + const intruderDb = getAuthenticatedDb(testEnv, intruderUid, 'intruder@example.com'); + await assertFails(getDocs(collection(intruderDb, 'households', householdId, 'unknownIngredientQueue'))); +} + async function testInvitedCookCannotWriteMealsOrDeleteInventory(testEnv: RulesTestEnvironment): Promise { await seedOwnerHousehold(testEnv, cookEmail); await seedInventoryItem(testEnv); @@ -488,6 +507,14 @@ async function runAllTests(testEnv: RulesTestEnvironment): Promise { name: 'Invited cook can read household, inventory, and logs', run: testInvitedCookCanReadHouseholdInventoryAndLogs, }, + { + name: 'Owner and invited cook can read unknown ingredient queue', + run: testOwnerAndCookCanReadUnknownIngredientQueue, + }, + { + name: 'Non-member cannot read unknown ingredient queue', + run: testNonMemberCannotReadUnknownIngredientQueue, + }, { name: 'Invited cook cannot write meals or delete inventory', run: testInvitedCookCannotWriteMealsOrDeleteInventory, diff --git a/test/unit/run.ts b/test/unit/run.ts index 98bf327..bd4939d 100644 --- a/test/unit/run.ts +++ b/test/unit/run.ts @@ -4,6 +4,13 @@ import { validateAiParseResult } from '../../src/services/aiValidation'; import { buildPantryLog } from '../../src/services/logService'; import { sanitizeFirestorePayload } from '../../src/utils/firestorePayload'; import { getIngredientNativeContextLabel, resolveIngredientVisual } from '../../src/utils/ingredientVisuals'; +import { + getUnknownQueueLoadErrorMessage, + isFirestoreFailedPreconditionError, + isFirestorePermissionDeniedError, + sortUnknownIngredientQueueItemsByCreatedAt, + toFirestoreListenerErrorInfo, +} from '../../src/utils/unknownQueue'; import { getLocalizedCategoryName, getPantryCategoryLabel, @@ -333,6 +340,63 @@ function testIngredientVisualCategoryFallback(): void { assert.equal(visual.catalogMatch, undefined); } +function testUnknownQueueErrorParsingAndMessaging(): void { + const permissionDenied = toFirestoreListenerErrorInfo({ + code: 'permission-denied', + message: 'Missing or insufficient permissions.', + name: 'FirebaseError', + }); + assert.equal(isFirestorePermissionDeniedError(permissionDenied), true); + assert.equal(getUnknownQueueLoadErrorMessage(permissionDenied), 'Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.'); + + const failedPrecondition = toFirestoreListenerErrorInfo({ + code: 'failed-precondition', + message: 'The query requires an index.', + name: 'FirebaseError', + }); + assert.equal(isFirestoreFailedPreconditionError(failedPrecondition), true); + assert.equal(getUnknownQueueLoadErrorMessage(failedPrecondition), 'Unknown ingredient queue index is missing. Showing fallback order while index is provisioned.'); + + const unknownError = toFirestoreListenerErrorInfo(new Error('boom')); + assert.equal(isFirestoreFailedPreconditionError(unknownError), false); + assert.equal(isFirestorePermissionDeniedError(unknownError), false); + assert.equal(getUnknownQueueLoadErrorMessage(unknownError), 'Failed to load unknown ingredient queue.'); +} + +function testUnknownQueueFallbackSortOrder(): void { + const sorted = sortUnknownIngredientQueueItemsByCreatedAt([ + { + id: 'queue-2', + name: 'A', + category: 'spices', + status: 'open', + requestedStatus: 'low', + createdAt: '2026-03-25T08:00:00.000Z', + createdBy: 'cook', + }, + { + id: 'queue-1', + name: 'B', + category: 'staples', + status: 'open', + requestedStatus: 'low', + createdAt: '2026-03-25T10:00:00.000Z', + createdBy: 'owner', + }, + { + id: 'queue-3', + name: 'C', + category: 'veggies', + status: 'open', + requestedStatus: 'out', + createdAt: 'invalid-date', + createdBy: 'cook', + }, + ]); + + assert.deepEqual(sorted.map((item) => item.id), ['queue-1', 'queue-2', 'queue-3']); +} + function run(): void { testPantryCategoryNormalization(); testPantryCategoryLabels(); @@ -353,6 +417,8 @@ function run(): void { testIngredientNativeContextLabel(); testIngredientVisualExistingIconFallback(); testIngredientVisualCategoryFallback(); + testUnknownQueueErrorParsingAndMessaging(); + testUnknownQueueFallbackSortOrder(); console.log('All unit tests passed.'); } From ef201a64a97a9d9de16f5fd9fbed972905b8efda Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 20:55:16 +0530 Subject: [PATCH 08/10] chore: target named firestore db in prod rules deploy --- README.md | 17 +++++++++++++++++ firebase.json | 13 ++++++++++--- package.json | 2 ++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a0c8e98..38c04a7 100644 --- a/README.md +++ b/README.md @@ -206,8 +206,20 @@ These constraints are enforced in `firestore.rules` and validated by `test/rules ### Firebase - Firestore security rules source: `firestore.rules` - Local emulator config: `firebase.json` +- App uses Firestore named database: `ai-studio-3900af62-0bf5-496a-a136-d1c8a0c4b8bd` - Confirm production Firebase Auth domain setup before release (Google provider and authorized domains) +### Production Firestore Rules Runbook +1. Authenticate Firebase CLI: + - `npx firebase login` +2. Deploy production Firestore rules: + - `npm run rules:deploy:prod` +3. Validate production owner view: + - Sign in as owner and open the pantry/unknown queue section. + - Confirm no `Unknown ingredient queue access denied` banner appears. +4. Optional deploy diagnostics: + - `npm run rules:deploy:prod:dry` + ## GitHub-Vercel Sync Workflow This project uses GitHub as the deployment source of truth. @@ -261,6 +273,11 @@ This project uses GitHub as the deployment source of truth. ### Firestore rules tests fail with Java/emulator error - Install Java 17+ and confirm `java -version` resolves correctly in shell. +### `Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.` +- Ensure Firebase CLI is authenticated: `npx firebase login` +- Deploy rules to production (includes named Firestore DB target): `npm run rules:deploy:prod` +- Retry owner view and confirm unknown queue loads. + ### Google sign-in popup fails locally - Add `localhost` / `127.0.0.1` to Firebase Auth authorized domains. - Ensure browser popup blocking is disabled for local app. diff --git a/firebase.json b/firebase.json index 450c92e..9f19439 100644 --- a/firebase.json +++ b/firebase.json @@ -1,7 +1,14 @@ { - "firestore": { - "rules": "firestore.rules" - }, + "firestore": [ + { + "database": "(default)", + "rules": "firestore.rules" + }, + { + "database": "ai-studio-3900af62-0bf5-496a-a136-d1c8a0c4b8bd", + "rules": "firestore.rules" + } + ], "emulators": { "firestore": { "host": "127.0.0.1", diff --git a/package.json b/package.json index 71e4589..ba81f3d 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,8 @@ "lint": "tsc --noEmit", "unit:test": "node --import tsx test/unit/run.ts", "rules:test": "node test/rules/check-java.mjs && firebase emulators:exec --only firestore --project demo-rasoi-planner \"tsx test/rules/run.ts\"", + "rules:deploy:prod": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879", + "rules:deploy:prod:dry": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879 --debug", "e2e": "node test/e2e/run.mjs", "e2e:headed": "E2E_HEADLESS=false node test/e2e/run.mjs", "verify:local": "npm run lint && npm run unit:test && npm run build && npm run rules:test && npm run e2e", From fbe4284a739bd6638cf9ddbbd645921dce57b9c7 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 21:37:44 +0530 Subject: [PATCH 09/10] fix: classify unknown queue permission denials with runtime diagnostics --- README.md | 8 +-- package.json | 1 + scripts/print-firestore-rules-target.mjs | 56 +++++++++++++++++++ src/App.tsx | 55 +++++++++++++++++-- src/utils/unknownQueue.ts | 52 +++++++++++++++++- test/unit/run.ts | 69 ++++++++++++++++++++++-- 6 files changed, 230 insertions(+), 11 deletions(-) create mode 100644 scripts/print-firestore-rules-target.mjs diff --git a/README.md b/README.md index 38c04a7..6d94fbe 100644 --- a/README.md +++ b/README.md @@ -212,12 +212,14 @@ These constraints are enforced in `firestore.rules` and validated by `test/rules ### Production Firestore Rules Runbook 1. Authenticate Firebase CLI: - `npx firebase login` -2. Deploy production Firestore rules: +2. Verify project/database deploy targets: + - `npm run rules:target:check` +3. Deploy production Firestore rules: - `npm run rules:deploy:prod` -3. Validate production owner view: +4. Validate production owner view: - Sign in as owner and open the pantry/unknown queue section. - Confirm no `Unknown ingredient queue access denied` banner appears. -4. Optional deploy diagnostics: +5. Optional deploy diagnostics: - `npm run rules:deploy:prod:dry` ## GitHub-Vercel Sync Workflow diff --git a/package.json b/package.json index ba81f3d..c7a8279 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "lint": "tsc --noEmit", "unit:test": "node --import tsx test/unit/run.ts", "rules:test": "node test/rules/check-java.mjs && firebase emulators:exec --only firestore --project demo-rasoi-planner \"tsx test/rules/run.ts\"", + "rules:target:check": "node scripts/print-firestore-rules-target.mjs", "rules:deploy:prod": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879", "rules:deploy:prod:dry": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879 --debug", "e2e": "node test/e2e/run.mjs", diff --git a/scripts/print-firestore-rules-target.mjs b/scripts/print-firestore-rules-target.mjs new file mode 100644 index 0000000..f907371 --- /dev/null +++ b/scripts/print-firestore-rules-target.mjs @@ -0,0 +1,56 @@ +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; + +async function readJsonFile(filePath) { + const raw = await readFile(filePath, 'utf-8'); + return JSON.parse(raw); +} + +function getFirestoreTargets(firebaseConfig) { + const firestoreConfig = firebaseConfig.firestore; + if (Array.isArray(firestoreConfig)) { + return firestoreConfig; + } + + if (firestoreConfig && typeof firestoreConfig === 'object') { + return [{ database: '(default)', ...firestoreConfig }]; + } + + return []; +} + +async function main() { + const rootDir = process.cwd(); + const appConfigPath = path.join(rootDir, 'firebase-applet-config.json'); + const firebaseJsonPath = path.join(rootDir, 'firebase.json'); + + const appConfig = await readJsonFile(appConfigPath); + const firebaseConfig = await readJsonFile(firebaseJsonPath); + + const projectId = String(appConfig.projectId ?? '').trim(); + const databaseId = String(appConfig.firestoreDatabaseId ?? '').trim(); + const targets = getFirestoreTargets(firebaseConfig); + const databases = targets + .map((target) => String(target.database ?? '').trim()) + .filter((value) => value.length > 0); + + const hasDefaultTarget = databases.includes('(default)'); + const hasNamedTarget = databases.includes(databaseId); + + console.log('Firestore deploy target verification'); + console.log(`- projectId: ${projectId}`); + console.log(`- app databaseId: ${databaseId}`); + console.log(`- firebase.json targets: ${databases.join(', ') || '(none)'}`); + console.log('- recommended deploy command:'); + console.log(` npx firebase deploy --only firestore:rules --project ${projectId}`); + + if (!hasDefaultTarget || !hasNamedTarget) { + console.error('Firestore target mismatch detected in firebase.json.'); + process.exitCode = 1; + } +} + +main().catch((error) => { + console.error('Failed to verify Firestore deploy targets.', error); + process.exitCode = 1; +}); diff --git a/src/App.tsx b/src/App.tsx index 1837a90..96aeeba 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,6 +4,7 @@ import { onAuthStateChanged, User as FirebaseUser } from 'firebase/auth'; import { collection, doc, + getDoc, onSnapshot, orderBy, query, @@ -27,8 +28,12 @@ import { import { upsertMealField } from './services/mealService'; import { HouseholdData, resolveOrCreateHousehold } from './services/householdService'; import { getAppCopy } from './i18n/copy'; +import firebaseConfig from '../firebase-applet-config.json'; import { + buildUnknownQueueTargetFingerprint, + classifyHouseholdMembershipProbe, getUnknownQueueLoadErrorMessage, + HouseholdMembershipProbeResult, isFirestoreFailedPreconditionError, sortUnknownIngredientQueueItemsByCreatedAt, toFirestoreListenerErrorInfo, @@ -200,6 +205,36 @@ export default function App() { markInitialViewReady(); }; + const unknownQueuePath = `households/${resolved.householdId}/unknownIngredientQueue`; + const targetFingerprint = buildUnknownQueueTargetFingerprint({ + projectId: firebaseConfig.projectId, + databaseId: firebaseConfig.firestoreDatabaseId, + householdId: resolved.householdId, + }); + + const membershipProbeSnapshot = await getDoc(doc(db, 'households', resolved.householdId)); + const membershipProbeData = membershipProbeSnapshot.exists() + ? (membershipProbeSnapshot.data() as HouseholdData) + : null; + const membershipProbeResult: HouseholdMembershipProbeResult = classifyHouseholdMembershipProbe({ + householdExists: membershipProbeSnapshot.exists(), + householdOwnerId: membershipProbeData?.ownerId ?? null, + householdCookEmail: membershipProbeData?.cookEmail ?? null, + userUid: user.uid, + userEmail: user.email ?? null, + }); + + console.info('unknown_queue_runtime_target', { + projectId: firebaseConfig.projectId, + databaseId: firebaseConfig.firestoreDatabaseId, + householdId: resolved.householdId, + uid: user.uid, + email: user.email ?? null, + path: unknownQueuePath, + targetFingerprint, + membershipProbeResult, + }); + const subscribeUnknownQueueFallback = (): void => { if (unknownQueueFallbackUnsub !== null) { return; @@ -221,8 +256,15 @@ export default function App() { householdId: resolved.householdId, code: parsedError.code, message: parsedError.message, + projectId: firebaseConfig.projectId, + databaseId: firebaseConfig.firestoreDatabaseId, + uid: user.uid, + email: user.email ?? null, + path: unknownQueuePath, + targetFingerprint, + membershipProbeResult, }); - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); hasLoadedUnknownQueue = true; markInitialViewReady(); }, @@ -245,6 +287,13 @@ export default function App() { householdId: resolved.householdId, code: parsedError.code, message: parsedError.message, + projectId: firebaseConfig.projectId, + databaseId: firebaseConfig.firestoreDatabaseId, + uid: user.uid, + email: user.email ?? null, + path: unknownQueuePath, + targetFingerprint, + membershipProbeResult, }); if (isFirestoreFailedPreconditionError(parsedError)) { @@ -252,12 +301,12 @@ export default function App() { unknownQueueUnsub(); unknownQueueUnsub = null; } - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); subscribeUnknownQueueFallback(); return; } - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError) }); + setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); hasLoadedUnknownQueue = true; markInitialViewReady(); }, diff --git a/src/utils/unknownQueue.ts b/src/utils/unknownQueue.ts index d281c04..a10d53d 100644 --- a/src/utils/unknownQueue.ts +++ b/src/utils/unknownQueue.ts @@ -6,6 +6,22 @@ export interface FirestoreListenerErrorInfo { name: string | null; } +export interface UnknownQueueTargetFingerprintInput { + databaseId: string; + householdId: string; + projectId: string; +} + +export interface HouseholdMembershipProbeInput { + householdCookEmail: string | null; + householdExists: boolean; + householdOwnerId: string | null; + userEmail: string | null; + userUid: string; +} + +export type HouseholdMembershipProbeResult = 'owner' | 'cook' | 'non-member' | 'household-missing'; + function toRecord(value: unknown): Record | null { if (typeof value !== 'object' || value === null) { return null; @@ -39,9 +55,41 @@ export function isFirestorePermissionDeniedError(error: FirestoreListenerErrorIn return error.code === 'permission-denied'; } -export function getUnknownQueueLoadErrorMessage(error: FirestoreListenerErrorInfo): string { +function normalizeEmail(value: string | null): string { + return value === null ? '' : value.trim().toLowerCase(); +} + +export function classifyHouseholdMembershipProbe(input: HouseholdMembershipProbeInput): HouseholdMembershipProbeResult { + if (!input.householdExists) { + return 'household-missing'; + } + + if (input.householdOwnerId === input.userUid) { + return 'owner'; + } + + const normalizedCookEmail = normalizeEmail(input.householdCookEmail); + const normalizedUserEmail = normalizeEmail(input.userEmail); + if (normalizedCookEmail.length > 0 && normalizedCookEmail === normalizedUserEmail) { + return 'cook'; + } + + return 'non-member'; +} + +export function buildUnknownQueueTargetFingerprint(input: UnknownQueueTargetFingerprintInput): string { + return `${input.projectId}/${input.databaseId}/households/${input.householdId}/unknownIngredientQueue`; +} + +export function getUnknownQueueLoadErrorMessage( + error: FirestoreListenerErrorInfo, + membershipProbeResult: HouseholdMembershipProbeResult | null, +): string { if (isFirestorePermissionDeniedError(error)) { - return 'Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.'; + if (membershipProbeResult === 'non-member' || membershipProbeResult === 'household-missing') { + return 'Unknown ingredient queue access denied. Household membership mismatch suspected.'; + } + return 'Unknown ingredient queue access denied. Firestore target mismatch suspected. Verify project/database rules deployment.'; } if (isFirestoreFailedPreconditionError(error)) { diff --git a/test/unit/run.ts b/test/unit/run.ts index bd4939d..878f6af 100644 --- a/test/unit/run.ts +++ b/test/unit/run.ts @@ -5,6 +5,8 @@ import { buildPantryLog } from '../../src/services/logService'; import { sanitizeFirestorePayload } from '../../src/utils/firestorePayload'; import { getIngredientNativeContextLabel, resolveIngredientVisual } from '../../src/utils/ingredientVisuals'; import { + buildUnknownQueueTargetFingerprint, + classifyHouseholdMembershipProbe, getUnknownQueueLoadErrorMessage, isFirestoreFailedPreconditionError, isFirestorePermissionDeniedError, @@ -347,7 +349,14 @@ function testUnknownQueueErrorParsingAndMessaging(): void { name: 'FirebaseError', }); assert.equal(isFirestorePermissionDeniedError(permissionDenied), true); - assert.equal(getUnknownQueueLoadErrorMessage(permissionDenied), 'Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.'); + assert.equal( + getUnknownQueueLoadErrorMessage(permissionDenied, 'owner'), + 'Unknown ingredient queue access denied. Firestore target mismatch suspected. Verify project/database rules deployment.', + ); + assert.equal( + getUnknownQueueLoadErrorMessage(permissionDenied, 'non-member'), + 'Unknown ingredient queue access denied. Household membership mismatch suspected.', + ); const failedPrecondition = toFirestoreListenerErrorInfo({ code: 'failed-precondition', @@ -355,12 +364,15 @@ function testUnknownQueueErrorParsingAndMessaging(): void { name: 'FirebaseError', }); assert.equal(isFirestoreFailedPreconditionError(failedPrecondition), true); - assert.equal(getUnknownQueueLoadErrorMessage(failedPrecondition), 'Unknown ingredient queue index is missing. Showing fallback order while index is provisioned.'); + assert.equal( + getUnknownQueueLoadErrorMessage(failedPrecondition, 'owner'), + 'Unknown ingredient queue index is missing. Showing fallback order while index is provisioned.', + ); const unknownError = toFirestoreListenerErrorInfo(new Error('boom')); assert.equal(isFirestoreFailedPreconditionError(unknownError), false); assert.equal(isFirestorePermissionDeniedError(unknownError), false); - assert.equal(getUnknownQueueLoadErrorMessage(unknownError), 'Failed to load unknown ingredient queue.'); + assert.equal(getUnknownQueueLoadErrorMessage(unknownError, null), 'Failed to load unknown ingredient queue.'); } function testUnknownQueueFallbackSortOrder(): void { @@ -397,6 +409,56 @@ function testUnknownQueueFallbackSortOrder(): void { assert.deepEqual(sorted.map((item) => item.id), ['queue-1', 'queue-2', 'queue-3']); } +function testUnknownQueueTargetFingerprintAndMembershipProbe(): void { + const fingerprint = buildUnknownQueueTargetFingerprint({ + projectId: 'project-x', + databaseId: 'db-y', + householdId: 'house-z', + }); + assert.equal(fingerprint, 'project-x/db-y/households/house-z/unknownIngredientQueue'); + + assert.equal( + classifyHouseholdMembershipProbe({ + householdExists: true, + householdOwnerId: 'owner-1', + householdCookEmail: 'cook@example.com', + userUid: 'owner-1', + userEmail: 'owner@example.com', + }), + 'owner', + ); + assert.equal( + classifyHouseholdMembershipProbe({ + householdExists: true, + householdOwnerId: 'owner-1', + householdCookEmail: 'cook@example.com', + userUid: 'cook-uid', + userEmail: 'cook@example.com', + }), + 'cook', + ); + assert.equal( + classifyHouseholdMembershipProbe({ + householdExists: true, + householdOwnerId: 'owner-1', + householdCookEmail: 'cook@example.com', + userUid: 'intruder', + userEmail: 'intruder@example.com', + }), + 'non-member', + ); + assert.equal( + classifyHouseholdMembershipProbe({ + householdExists: false, + householdOwnerId: null, + householdCookEmail: null, + userUid: 'owner-1', + userEmail: 'owner@example.com', + }), + 'household-missing', + ); +} + function run(): void { testPantryCategoryNormalization(); testPantryCategoryLabels(); @@ -419,6 +481,7 @@ function run(): void { testIngredientVisualCategoryFallback(); testUnknownQueueErrorParsingAndMessaging(); testUnknownQueueFallbackSortOrder(); + testUnknownQueueTargetFingerprintAndMembershipProbe(); console.log('All unit tests passed.'); } From 826b237ba7193d557dad6f87b298f2d2557e4170 Mon Sep 17 00:00:00 2001 From: shadowdevcode Date: Wed, 25 Mar 2026 21:59:58 +0530 Subject: [PATCH 10/10] Automate Firestore rules deploy and add production unknown-queue smoke checks --- .github/workflows/ci.yml | 62 +++++ README.md | 40 ++- package.json | 3 +- scripts/smoke-firestore-unknown-queue.mjs | 298 ++++++++++++++++++++++ src/App.tsx | 52 +++- 5 files changed, 438 insertions(+), 17 deletions(-) create mode 100644 scripts/smoke-firestore-unknown-queue.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e7026d..435e1d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,3 +37,65 @@ jobs: - name: Run full verification run: npm run verify:local + + detect-firestore-changes: + name: detect-firestore-changes + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + outputs: + firestore_changed: ${{ steps.filter.outputs.firestore_changed }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Detect firestore-related changes + id: filter + uses: dorny/paths-filter@v3 + with: + filters: | + firestore_changed: + - firestore.rules + - firebase.json + - firebase-applet-config.json + - scripts/print-firestore-rules-target.mjs + - scripts/smoke-firestore-unknown-queue.mjs + + firestore-rules-deploy: + name: firestore-rules-deploy + if: github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.detect-firestore-changes.outputs.firestore_changed == 'true' + needs: + - verify-local + - detect-firestore-changes + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Verify firestore deploy target + run: npm run rules:target:check + + - name: Deploy Firestore rules (production) + env: + FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} + run: npm run rules:deploy:prod + + - name: Smoke test unknown ingredient queue access (production) + env: + SMOKE_OWNER_EMAIL: ${{ secrets.SMOKE_OWNER_EMAIL }} + SMOKE_OWNER_PASSWORD: ${{ secrets.SMOKE_OWNER_PASSWORD }} + SMOKE_OWNER_HOUSEHOLD_ID: ${{ secrets.SMOKE_OWNER_HOUSEHOLD_ID }} + SMOKE_NON_MEMBER_EMAIL: ${{ secrets.SMOKE_NON_MEMBER_EMAIL }} + SMOKE_NON_MEMBER_PASSWORD: ${{ secrets.SMOKE_NON_MEMBER_PASSWORD }} + run: npm run rules:smoke:prod diff --git a/README.md b/README.md index 6d94fbe..bbe158c 100644 --- a/README.md +++ b/README.md @@ -210,15 +210,17 @@ These constraints are enforced in `firestore.rules` and validated by `test/rules - Confirm production Firebase Auth domain setup before release (Google provider and authorized domains) ### Production Firestore Rules Runbook -1. Authenticate Firebase CLI: - - `npx firebase login` -2. Verify project/database deploy targets: - - `npm run rules:target:check` -3. Deploy production Firestore rules: +1. Mainline path (default): + - Merge to `main`; CI deploys `firestore.rules` automatically when Firestore files change. +2. CI deploy preconditions: + - `verify-local` must pass. + - `npm run rules:target:check` must pass (project/database target integrity gate). +3. Post-deploy smoke checks: + - Owner smoke user must read `households/{householdId}/unknownIngredientQueue`. + - Non-member smoke user must receive `PERMISSION_DENIED`. +4. Emergency/manual deploy only: - `npm run rules:deploy:prod` -4. Validate production owner view: - - Sign in as owner and open the pantry/unknown queue section. - - Confirm no `Unknown ingredient queue access denied` banner appears. + - `npm run rules:smoke:prod` 5. Optional deploy diagnostics: - `npm run rules:deploy:prod:dry` @@ -243,6 +245,11 @@ This project uses GitHub as the deployment source of truth. - CI command chain: - `npm ci` - `npm run verify:local` + - `verify-local` includes `npm run rules:target:check` +- `main` push additional automation: + - Detect Firestore-related file changes. + - Deploy Firestore rules automatically when changed. + - Run production smoke test for owner-allow and non-member-deny unknown queue reads. ### Local push gate (Husky) - Husky install hook is configured via `npm run prepare`. @@ -255,6 +262,13 @@ This project uses GitHub as the deployment source of truth. - Require status checks to pass before merging. - Add required status check: `verify-local`. - Require branches to be up to date before merging. +- Add repository secrets for Firestore deploy/smoke workflow: + - `FIREBASE_TOKEN` + - `SMOKE_OWNER_EMAIL` + - `SMOKE_OWNER_PASSWORD` + - `SMOKE_OWNER_HOUSEHOLD_ID` + - `SMOKE_NON_MEMBER_EMAIL` + - `SMOKE_NON_MEMBER_PASSWORD` ### Required Vercel settings - Git repository connected to this GitHub repo. @@ -275,10 +289,12 @@ This project uses GitHub as the deployment source of truth. ### Firestore rules tests fail with Java/emulator error - Install Java 17+ and confirm `java -version` resolves correctly in shell. -### `Unknown ingredient queue access denied. Deploy latest Firestore rules and retry.` -- Ensure Firebase CLI is authenticated: `npx firebase login` -- Deploy rules to production (includes named Firestore DB target): `npm run rules:deploy:prod` -- Retry owner view and confirm unknown queue loads. +### `Unknown ingredient queue access denied... [build:]` +- Confirm the visible build id is the latest deployment. +- Validate CI Firestore deploy and smoke test status on latest `main` run. +- For emergency recovery, deploy + smoke manually: + - `npm run rules:deploy:prod` + - `npm run rules:smoke:prod` ### Google sign-in popup fails locally - Add `localhost` / `127.0.0.1` to Firebase Auth authorized domains. diff --git a/package.json b/package.json index c7a8279..2661b67 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,10 @@ "rules:target:check": "node scripts/print-firestore-rules-target.mjs", "rules:deploy:prod": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879", "rules:deploy:prod:dry": "npx firebase deploy --only firestore:rules --project gen-lang-client-0862152879 --debug", + "rules:smoke:prod": "node scripts/smoke-firestore-unknown-queue.mjs", "e2e": "node test/e2e/run.mjs", "e2e:headed": "E2E_HEADLESS=false node test/e2e/run.mjs", - "verify:local": "npm run lint && npm run unit:test && npm run build && npm run rules:test && npm run e2e", + "verify:local": "npm run rules:target:check && npm run lint && npm run unit:test && npm run build && npm run rules:test && npm run e2e", "prepare": "husky" }, "dependencies": { diff --git a/scripts/smoke-firestore-unknown-queue.mjs b/scripts/smoke-firestore-unknown-queue.mjs new file mode 100644 index 0000000..58d1feb --- /dev/null +++ b/scripts/smoke-firestore-unknown-queue.mjs @@ -0,0 +1,298 @@ +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; + +/** + * @typedef {{ + * apiKey: string; + * projectId: string; + * databaseId: string; + * }} AppFirebaseConfig + */ + +/** + * @typedef {{ + * email: string; + * password: string; + * }} Credentials + */ + +function toNonEmptyString(value) { + if (typeof value !== 'string') { + return null; + } + + const trimmed = value.trim(); + return trimmed.length > 0 ? trimmed : null; +} + +async function readAppFirebaseConfig() { + const configPath = path.resolve(process.cwd(), 'firebase-applet-config.json'); + const raw = await readFile(configPath, 'utf-8'); + const parsed = JSON.parse(raw); + + return { + apiKey: String(parsed.apiKey ?? '').trim(), + databaseId: String(parsed.firestoreDatabaseId ?? '').trim(), + projectId: String(parsed.projectId ?? '').trim(), + }; +} + +function requireEnv(name) { + const value = toNonEmptyString(process.env[name]); + if (value === null) { + throw new Error(`Missing required environment variable: ${name}`); + } + return value; +} + +function sleep(ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + +async function fetchWithRetries(url, init, attempts, delayMs) { + /** @type {unknown} */ + let lastError = null; + + for (let attempt = 1; attempt <= attempts; attempt += 1) { + try { + const response = await fetch(url, init); + if (response.status >= 500 && attempt < attempts) { + console.warn('external_request_retry', { + attempt, + reason: 'server_error', + status: response.status, + url, + }); + await sleep(delayMs); + continue; + } + return response; + } catch (error) { + lastError = error; + if (attempt < attempts) { + console.warn('external_request_retry', { + attempt, + reason: 'network_error', + url, + }); + await sleep(delayMs); + continue; + } + } + } + + throw new Error('External request failed after retries.', { cause: lastError }); +} + +async function parseJsonResponse(response) { + const contentType = response.headers.get('content-type'); + if (contentType && contentType.includes('application/json')) { + return response.json(); + } + + const bodyText = await response.text(); + if (bodyText.length === 0) { + return null; + } + + try { + return JSON.parse(bodyText); + } catch (error) { + throw new Error('Failed to parse JSON response body.', { + cause: error, + }); + } +} + +async function signInWithEmailAndPassword(config, credentials) { + const signInUrl = `https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=${encodeURIComponent(config.apiKey)}`; + + const response = await fetchWithRetries( + signInUrl, + { + method: 'POST', + headers: { + 'content-type': 'application/json', + }, + body: JSON.stringify({ + email: credentials.email, + password: credentials.password, + returnSecureToken: true, + }), + }, + 3, + 500, + ); + + const responseBody = await parseJsonResponse(response); + + if (!response.ok) { + throw new Error('Failed to authenticate smoke-test user.', { + cause: { + request: { + email: credentials.email, + endpoint: 'accounts:signInWithPassword', + }, + response: responseBody, + status: response.status, + }, + }); + } + + const idToken = toNonEmptyString(responseBody?.idToken); + const localId = toNonEmptyString(responseBody?.localId); + + if (idToken === null || localId === null) { + throw new Error('Smoke-test authentication response is missing required token fields.', { + cause: { + request: { + email: credentials.email, + endpoint: 'accounts:signInWithPassword', + }, + response: responseBody, + status: response.status, + }, + }); + } + + return { + idToken, + localId, + }; +} + +async function readUnknownIngredientQueue(config, householdId, idToken) { + const encodedHouseholdId = encodeURIComponent(householdId); + const endpoint = `https://firestore.googleapis.com/v1/projects/${encodeURIComponent(config.projectId)}/databases/${encodeURIComponent(config.databaseId)}/documents/households/${encodedHouseholdId}/unknownIngredientQueue?pageSize=1`; + + const response = await fetchWithRetries( + endpoint, + { + method: 'GET', + headers: { + authorization: `Bearer ${idToken}`, + }, + }, + 3, + 500, + ); + + const responseBody = await parseJsonResponse(response); + + return { + ok: response.ok, + status: response.status, + body: responseBody, + }; +} + +function isPermissionDeniedFirestoreResponse(readResult) { + if (!readResult || typeof readResult !== 'object') { + return false; + } + + const body = readResult.body; + const code = body?.error?.status; + const message = body?.error?.message; + + return readResult.status === 403 && code === 'PERMISSION_DENIED' && typeof message === 'string'; +} + +async function assertOwnerCanReadQueue(config, householdId, ownerCredentials) { + const ownerAuth = await signInWithEmailAndPassword(config, ownerCredentials); + const readResult = await readUnknownIngredientQueue(config, householdId, ownerAuth.idToken); + + if (!readResult.ok) { + throw new Error('Owner smoke check failed: unknown queue read was denied.', { + cause: { + actor: 'owner', + householdId, + readResult, + }, + }); + } + + console.info('smoke_check_owner_access_ok', { + actor: ownerCredentials.email, + householdId, + status: readResult.status, + }); +} + +async function assertNonMemberIsDenied(config, householdId, nonMemberCredentials) { + const nonMemberAuth = await signInWithEmailAndPassword(config, nonMemberCredentials); + const readResult = await readUnknownIngredientQueue(config, householdId, nonMemberAuth.idToken); + + if (!isPermissionDeniedFirestoreResponse(readResult)) { + throw new Error('Non-member smoke check failed: expected PERMISSION_DENIED.', { + cause: { + actor: 'non-member', + householdId, + readResult, + }, + }); + } + + console.info('smoke_check_non_member_denied_ok', { + actor: nonMemberCredentials.email, + householdId, + status: readResult.status, + firestoreStatus: readResult.body?.error?.status, + }); +} + +function getCredentialsFromEnv(prefix) { + const email = requireEnv(`${prefix}_EMAIL`); + const password = requireEnv(`${prefix}_PASSWORD`); + + return { + email, + password, + }; +} + +async function main() { + const configFromFile = await readAppFirebaseConfig(); + const config = { + apiKey: toNonEmptyString(process.env.SMOKE_FIREBASE_API_KEY) ?? configFromFile.apiKey, + projectId: toNonEmptyString(process.env.SMOKE_FIREBASE_PROJECT_ID) ?? configFromFile.projectId, + databaseId: toNonEmptyString(process.env.SMOKE_FIREBASE_DATABASE_ID) ?? configFromFile.databaseId, + }; + + if (!config.apiKey || !config.projectId || !config.databaseId) { + throw new Error('Missing Firebase runtime config required for smoke checks.', { + cause: { + apiKeyConfigured: Boolean(config.apiKey), + projectIdConfigured: Boolean(config.projectId), + databaseIdConfigured: Boolean(config.databaseId), + }, + }); + } + + const householdId = requireEnv('SMOKE_OWNER_HOUSEHOLD_ID'); + const ownerCredentials = getCredentialsFromEnv('SMOKE_OWNER'); + const nonMemberCredentials = getCredentialsFromEnv('SMOKE_NON_MEMBER'); + + console.info('smoke_check_started', { + databaseId: config.databaseId, + projectId: config.projectId, + }); + + await assertOwnerCanReadQueue(config, householdId, ownerCredentials); + await assertNonMemberIsDenied(config, householdId, nonMemberCredentials); + + console.info('smoke_check_completed', { + databaseId: config.databaseId, + projectId: config.projectId, + }); +} + +main().catch((error) => { + console.error('smoke_check_failed', { + message: error instanceof Error ? error.message : String(error), + cause: error instanceof Error ? error.cause : null, + }); + process.exitCode = 1; +}); diff --git a/src/App.tsx b/src/App.tsx index 96aeeba..642f9e1 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -44,6 +44,25 @@ interface UiFeedback { message: string; } +function resolveAppBuildId(): string { + const viteEnv = (import.meta as ImportMeta & { env?: Record }).env; + const explicitBuildId = viteEnv?.VITE_BUILD_ID; + if (typeof explicitBuildId === 'string' && explicitBuildId.trim().length > 0) { + return explicitBuildId.trim(); + } + + const commitBuildId = viteEnv?.VITE_VERCEL_GIT_COMMIT_SHA; + if (typeof commitBuildId === 'string' && commitBuildId.trim().length > 0) { + return commitBuildId.trim(); + } + + return 'dev-local'; +} + +function appendBuildIdToDiagnosticMessage(message: string, buildId: string): string { + return `${message} [build:${buildId}]`; +} + export default function App() { const [user, setUser] = useState(null); const [isAuthReady, setIsAuthReady] = useState(false); @@ -66,6 +85,7 @@ export default function App() { const cookLanguage: UiLanguage = householdData?.cookLanguage ?? 'hi'; const activeLanguage: UiLanguage = isOwner ? ownerLanguage : cookLanguage; const appCopy = getAppCopy(activeLanguage); + const appBuildId = resolveAppBuildId(); const shellWidthClass = isOwner ? 'max-w-7xl' : 'max-w-5xl'; const shellSectionClass = `${shellWidthClass} mx-auto px-4 md:px-6`; const shellMainClass = `${shellWidthClass} mx-auto px-4 pb-24 pt-6 md:px-6`; @@ -227,6 +247,7 @@ export default function App() { console.info('unknown_queue_runtime_target', { projectId: firebaseConfig.projectId, databaseId: firebaseConfig.firestoreDatabaseId, + buildId: appBuildId, householdId: resolved.householdId, uid: user.uid, email: user.email ?? null, @@ -258,13 +279,20 @@ export default function App() { message: parsedError.message, projectId: firebaseConfig.projectId, databaseId: firebaseConfig.firestoreDatabaseId, + buildId: appBuildId, uid: user.uid, email: user.email ?? null, path: unknownQueuePath, targetFingerprint, membershipProbeResult, }); - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); + setUiFeedback({ + kind: 'error', + message: appendBuildIdToDiagnosticMessage( + getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult), + appBuildId, + ), + }); hasLoadedUnknownQueue = true; markInitialViewReady(); }, @@ -289,6 +317,7 @@ export default function App() { message: parsedError.message, projectId: firebaseConfig.projectId, databaseId: firebaseConfig.firestoreDatabaseId, + buildId: appBuildId, uid: user.uid, email: user.email ?? null, path: unknownQueuePath, @@ -301,12 +330,24 @@ export default function App() { unknownQueueUnsub(); unknownQueueUnsub = null; } - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); + setUiFeedback({ + kind: 'error', + message: appendBuildIdToDiagnosticMessage( + getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult), + appBuildId, + ), + }); subscribeUnknownQueueFallback(); return; } - setUiFeedback({ kind: 'error', message: getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult) }); + setUiFeedback({ + kind: 'error', + message: appendBuildIdToDiagnosticMessage( + getUnknownQueueLoadErrorMessage(parsedError, membershipProbeResult), + appBuildId, + ), + }); hasLoadedUnknownQueue = true; markInitialViewReady(); }, @@ -340,7 +381,7 @@ export default function App() { unknownQueueFallbackUnsub(); } }; - }, [user]); + }, [user, appBuildId]); const handleUpdateInventory = async (id: string, newStatus: InventoryStatus, requestedQuantity?: string): Promise => { if (!user || !householdId) { @@ -614,6 +655,9 @@ export default function App() {

    +
    + Build {appBuildId} +
    {isOwner ? : } {isOwner ? appCopy.ownerRole : appCopy.cookRole}