From 682cb41ff105a713d13c2c6ad241f39dc0926276 Mon Sep 17 00:00:00 2001 From: John Mizerek Date: Fri, 13 Feb 2026 09:38:53 -0800 Subject: [PATCH] Fix: Handle items with unmatched categories in showItemsStep Items were being grouped only by known categories. If the category array was empty or didn't include an item's category, those items never got checkboxes rendered, causing confirmItems() to filter them all out. Now collects unassigned items and groups them by their category name (or 'Menu' as fallback). Co-Authored-By: Claude Opus 4.5 --- portal/setup-wizard.html | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/portal/setup-wizard.html b/portal/setup-wizard.html index 955bd55..d69c739 100644 --- a/portal/setup-wizard.html +++ b/portal/setup-wizard.html @@ -2647,10 +2647,29 @@ // Group items by category let itemsByCategory = {}; + let assignedItemIds = new Set(); + categories.forEach(cat => { - itemsByCategory[cat.name] = items.filter(item => item.category === cat.name); + const catItems = items.filter(item => item.category === cat.name); + if (catItems.length > 0) { + itemsByCategory[cat.name] = catItems; + catItems.forEach(item => assignedItemIds.add(item.id)); + } }); + // Collect any items not assigned to a known category + const unassignedItems = items.filter(item => !assignedItemIds.has(item.id)); + if (unassignedItems.length > 0) { + // Group by their category name, or "Menu" if none + unassignedItems.forEach(item => { + const catName = item.category || 'Menu'; + if (!itemsByCategory[catName]) { + itemsByCategory[catName] = []; + } + itemsByCategory[catName].push(item); + }); + } + let itemsHtml = ''; for (const [catName, catItems] of Object.entries(itemsByCategory)) { if (catItems.length === 0) continue;