diff --git a/README.md b/README.md index f49c86f..306dad2 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,19 @@ Application d'organisation personnelle auto-hébergée — PWA mobile-first déployée sur Proxmox 9. -## Fonctionnalités +## Fonctionnalités (v0.5.1) -- **Todos** — tâches classées par domaine (informatique, DIY, jardinage, cuisine…) -- **Liste de courses** — générée depuis les habitudes d'achat, mode magasin avec Wake Lock, suivi des prix, OCR étiquettes et tickets -- **Notes** — saisie rapide avec photo, audio, GPS et métadonnées libres -- **MCP Server** — expose les données à des agents IA (Hermes, Claude, etc.) +- **Todos** — tâches classées par domaine, priorité, date objectif, photo, GPS. Swipe gauche = éditer, swipe droite = terminer. +- **Liste de courses** — générée automatiquement depuis les habitudes d'achat (liste magique), mode magasin plein-écran avec Wake Lock, catalogue enrichi avec tags et stats d'achat, bottom sheet multi-select. +- **Notes** — saisie rapide avec photo (Ctrl+V ou appareil photo), audio, GPS et métadonnées libres. +- **Paramètres** — thème dark / light / system, taille de police ajustable avec aperçu temps réel. +- **MCP Server** — expose les données à des agents IA (Hermes, Claude, etc.) — *à venir* + +### UX mobile +- Touch targets 48px minimum, swipe gestures sur toutes les listes +- Bottom sheet qui remonte automatiquement au-dessus du clavier virtuel iOS +- Collage d'image par Ctrl+V dans les formulaires Todo et Catalogue +- Wake Lock API (écran allumé en mode magasin) ## Stack technique @@ -116,8 +123,10 @@ docker compose up -d ## Évolutions prévues -- Authentification multi-utilisateurs (JWT) -- Sync Google Calendar + CalDAV iOS -- Intégration Home Assistant -- Webhooks Gitea → Kanban -- Analyse frigo par Vision LLM (Hermes/Ollama) +- **Phase 5** — Scan code-barres (zxing-js) + enrichissement catalogue via OpenFoodFacts +- **Phase 6** — Service OCR dédié (Tesseract 5, conteneur partagé) +- **Phase 7** — Shopping avancé : OCR étiquettes prix, historique et comparaison prix par magasin +- **Phase 8** — MCP Server : outils IA (`get_todos`, `add_shopping_item`, `search_notes`…) +- **Phase 9** — Authentification multi-utilisateurs (JWT) +- **Phase 10** — Calendrier : sync Google Calendar + CalDAV iOS, intégration Home Assistant, webhooks Gitea +- **Phase 11** — Vision LLM : analyse frigo → suggestions liste de courses (Hermes/Ollama) diff --git a/docs/plan.md b/docs/plan.md index 44f9803..57a4aea 100644 --- a/docs/plan.md +++ b/docs/plan.md @@ -93,6 +93,7 @@ - [x] `POST /api/shopping/lists/generate` — liste magique V1 (score = retard / intervalle moyen, articles cochés comme historique) - [x] Schémas Pydantic complets (listes, articles, produits, magasins) - [x] Tests d'intégration (10 tests) +- [x] Champ `tags TEXT[]` sur les produits du catalogue (migration 006) ### Frontend - [x] Page Shopping avec 3 vues : liste des listes / détail / mode magasin @@ -107,6 +108,13 @@ - [x] Hook `useWakeLock` avec fallback gracieux (mode économie d'énergie) - [x] Client API TypeScript typé (`frontend/src/api/shopping.ts`) - [x] Migration TodoForm vers Modal (plus de panneau inline) +- [x] Bottom sheet multi-select pour l'ajout d'articles depuis le catalogue +- [x] Stats d'achat dans le catalogue : dernier achat + intervalle moyen par produit +- [x] Swipe gauche → modal édition (TodoPage + ShoppingPage) +- [x] Tags sur les produits : chip-input dans CatalogueModal, recherche étendue aux tags +- [x] Recherche article : `type="search"` supprime la suggestion URL iOS, `autoFocus` automatique +- [x] Upload photo produit : support HEIC/HEIF, redimensionnement 500×500 max (ratio conservé), miniature auto +- [x] Collage Ctrl+V photo dans CatalogueModal et TodoForm --- @@ -142,6 +150,33 @@ --- +## Phase 4b — UX transversale ✅ + +**Objectif** : améliorations d'expérience applicables à tous les modules. + +### Thème et apparence +- [x] `ThemeContext` : gestion dark / light / system avec persistance `localStorage` +- [x] Script anti-flash dans `index.html` : thème et zoom appliqués avant le premier rendu +- [x] Page `/config` : boutons thème + slider police (0.8–1.4, pas de 0.05) +- [x] Aperçu temps réel du texte sur le slider +- [x] Zoom CSS sur `` : scale global compatible avec les tailles en pixels fixes +- [x] `TopBar` : en-tête fixe 44px avec bouton de thème cyclique (lune / soleil / demi-cercle) +- [x] Tuile "Paramètres" sur la page d'accueil (`/config`, icône `fa-sliders`) + +### Mobile — clavier iOS +- [x] `BottomSheet` : `visualViewport` API pour remonter le panneau au-dessus du clavier virtuel +- [x] Transition fluide (0.15s) sur `bottom`, `max-height`, `border-radius` à l'ouverture du clavier + +### Todos +- [x] Case "Pas de date" pré-cochée par défaut dans `TodoForm` (champ date masqué) +- [x] Collage Ctrl+V pour coller une image directement dans le formulaire Todo + +### Infra / Media +- [x] nginx : `location ^~ /media/` pour éviter que la règle regex WebP prenne la priorité +- [x] nginx : `client_max_body_size 15m` pour les photos de smartphone (3–8 Mo) + +--- + ## Phase 5 — Scan produits + enrichissement catalogue **Objectif** : scan code-barres depuis mobile, auto-remplissage depuis OpenFoodFacts. @@ -227,5 +262,5 @@ ## Ordre de développement ``` -Phase 1 ✅ → Phase 2 ✅ → Phase 3 ✅ → Phase 4 (Notes) → Phase 5 (Scan) → Phase 6 (OCR) → Phase 7 (Shopping avancé) → Phase 8 (MCP) +Phase 1 ✅ → Phase 2 ✅ → Phase 3 ✅ → Phase 4 ✅ → Phase 4b ✅ → Phase 5 (Scan) → Phase 6 (OCR) → Phase 7 (Shopping avancé) → Phase 8 (MCP) ```