From 31aaa490df2efc7dd179679c5207aa5700d118cc Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 23 Nov 2025 19:21:50 +0100 Subject: [PATCH 1/4] chore: force frontend build cache invalidation --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index fec954c..2532557 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,8 @@ WORKDIR /app/frontend COPY frontend/package.json frontend/package-lock.json* ./ RUN npm install +# Force cache invalidation for frontend source +ARG CACHEBUST=1 COPY frontend/ . RUN npm run build From f79f7d818c299df0e86d85c2f69d4f11d0ce3ba0 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 23 Nov 2025 21:31:34 +0100 Subject: [PATCH 2/4] test: add TEST 2025 prefix to verify deployment --- frontend/src/pages/Settings.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/Settings.jsx b/frontend/src/pages/Settings.jsx index 590481a..9b1e098 100644 --- a/frontend/src/pages/Settings.jsx +++ b/frontend/src/pages/Settings.jsx @@ -680,7 +680,7 @@ export default function Settings() { {/* Notification Profiles */} - Notification Profiles + TEST 2025 - Notification Profiles Manage notification settings for different groups of items. From 308fcfb5e5db9516bd1f0dec36288cdc3c752fc3 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 23 Nov 2025 21:40:17 +0100 Subject: [PATCH 3/4] feat: add ItemCard component to display item details, prices, stock status, and actions with i18n support. --- .../src/components/dashboard/ItemCard.jsx | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/dashboard/ItemCard.jsx b/frontend/src/components/dashboard/ItemCard.jsx index 1ad30f9..f986e53 100644 --- a/frontend/src/components/dashboard/ItemCard.jsx +++ b/frontend/src/components/dashboard/ItemCard.jsx @@ -4,12 +4,17 @@ import { ExternalLink, Edit2, RefreshCw, Trash2, AlertTriangle, Clock, Tag, Hist import { Card, CardContent, CardFooter, CardHeader } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; import { Marquee } from '@/components/ui/marquee'; import { cn } from '@/lib/utils'; export function ItemCard({ item, onEdit, onDelete, onCheck, onZoom, onCategoryUpdate, categories, onViewHistory }) { const { t } = useTranslation(); const [showCategorySelect, setShowCategorySelect] = useState(false); + const [showNewCategoryDialog, setShowNewCategoryDialog] = useState(false); + const [newCategoryName, setNewCategoryName] = useState(''); const getStockStatus = (inStock) => { if (inStock === true) return { label: t('dashboard.inStock'), color: 'bg-green-500/90 text-white border-green-400/50' }; @@ -147,7 +152,13 @@ export function ItemCard({ item, onEdit, onDelete, onCheck, onZoom, onCategoryUp {onCategoryUpdate && ( setNewCategoryName(e.target.value)} + placeholder="ex: Électronique" + onKeyDown={(e) => { + if (e.key === 'Enter' && newCategoryName.trim()) { + onCategoryUpdate(item.id, newCategoryName.trim()); + setNewCategoryName(''); + setShowNewCategoryDialog(false); + } + }} + /> + + + + + + + + + {/* Description */} {item.description && (

From ddc5c18ea127f133d0e7f6c5ee024796b77b7b37 Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sun, 23 Nov 2025 22:00:01 +0100 Subject: [PATCH 4/4] feat: add Pydantic schemas for notification profiles, items, settings, search sites, and search results. --- app/schemas.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/schemas.py b/app/schemas.py index 228bced..34a6f9d 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -31,6 +31,7 @@ class ItemCreate(BaseModel): tags: str | None = None description: str | None = None notification_profile_id: int | None = None + category: str | None = None class ItemResponse(ItemCreate):