- Renommage complet dans package.json, main.ts, UI, tray, notifications - GUID NSIS fixe pour mise à jour propre (pas de doublon d'installation) - Migration automatique des données depuis %APPDATA%\Minuteur Dragodinde\ - Rétrocompatibilité import : backups 'minuteur-dragodinde' toujours acceptés - Mise à jour README changelog, CLAUDE.md, docs, maquettes, page ntfy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
10 KiB
10 KiB
Fonctionnalités par écran — Obsidienne
1. Shell principal (App)
Header
- Bouton hamburger (☰) pour ouvrir/fermer la sidebar
- Logo "⚔ MINUTEUR DRAGODINDE"
- Sous-titre "Dofus 3 · Gestion multi-enclos en temps réel · vX.X.X"
- Version injectée dynamiquement via Electron API
- Badge "DEV" en mode développement
Barre d'onglets
- Onglet Dashboard (📊)
- Un onglet par enclos :
- Icône 🐉 + nom de l'enclos
- Dot animé : vert pulsant si timer en cours, gris si inactif
- Bouton supprimer (✕), visible si plus d'1 enclos
- Drag-and-drop pour réordonner les onglets
- Bouton "+ Enclos" (désactivé si max atteint)
Bannière de mise à jour
- États : disponible → téléchargement (barre de progression %) → prête → erreur
- Bouton "Installer et redémarrer"
- Bouton fermer (✕) sur erreur
Zoom clavier
- Ctrl + (+) : zoom avant
- Ctrl + (-) : zoom arrière
- Ctrl + 0 : reset 100%
2. Sidebar — Navigation latérale
- Dashboard (📊)
- Section "Enclos" : liste dynamique de chaque enclos
- Icône 🐉 + nom + dot coloré (vert=running, gris=idle)
- Section "Outils" :
- Accouplement (💑)
- Réappro (🧬)
- Inventaire (📦)
- Workflows (📋)
- Paramètres (⚙)
- Indicateur visuel de la vue active
- Fermeture auto au clic sur l'overlay
3. Dashboard — Vue d'ensemble
Cartes des enclos
Pour chaque enclos :
- Nom de l'enclos
- Dot animé + statut textuel ("En cours" / "Pause" / "Inactif")
- Liste des jauges actives (badges colorés avec icônes)
- Nombre de dragodindes + terminées (ex: "5 DD · 3/5 ✅")
- Temps restant (countdown live) ou "✅ Terminé !"
- Temps écoulé (live)
- Bouton "→ Gérer cet enclos" (navigation)
Statistiques globales
- KPI :
- Bébés au total
- Dragodindes actives
- Couples accouplés
- Taux de réussite (%)
- Races obtenues
- Histogramme des races : barres horizontales triées par quantité, colorées par race
- Bouton "Réinitialiser" : efface stats et accouplements
Temps réel
- Countdowns et temps écoulés mis à jour en continu
- Dots animés sur les enclos en cours
4. Enclos — Vue timer principale
En-tête
- Nom de l'enclos : input éditable (focus vide, blur sauvegarde, Escape annule, Enter valide)
- Bouton "🗑 Vider l'enclos" : supprime toutes les DD et reset
Carte Jauges (max 2 actives)
- 6 boutons toggle : Baffeur (➖), Caresseur (➕), Foudroyeur (⚡), Abreuvoir (💧), Dragofesse (❤), Mangeoire (🍖)
- État actif : bordure colorée
- Verrouillé si timer en cours
- Exclusion mutuelle baffeur ↔ caresseur (l'un bloque l'autre)
- Par jauge active :
- Icône + nom + badge Tier ("Tier X · ±Y/tick")
- Input niveau (0–100 000, step 1000)
- Avant timer : modifie le niveau
- Pendant timer : recharge la jauge (style visuel distinct)
- Barre de progression (% de remplissage)
- Info : "Jauge : {niveau} · Vide en {durée}"
Barre timer
- Bouton : "▶ Démarrer" / "⏸ Pause" / "▶ Reprendre"
- Temps écoulé (gauche) : HH:MM:SS live
- Alarme dans (droite) : countdown global ou "✅" ou "--:--:--"
Bannière de fin
- "✅ Session terminée !" (visible quand toutes les cibles atteintes)
- Bouton "🔄 Nouvelle fournée" (reset timer, conserve les niveaux de jauges)
Section Dragodindes
- Compteur "X/10"
- Bouton "+ Ajouter une Dragodinde" (désactivé si 10 atteint)
- Grille de cartes DD (drag-and-drop pour réordonner)
5. Carte Dragodinde (sous-composant d'Enclos)
En-tête
- Poignée de drag (⠿)
- Nom éditable (même comportement focus/blur)
- Bouton supprimer (✕)
Pilules de stats (5)
| Stat | Icône | Plage | Couleur |
|---|---|---|---|
| Sérénité | 😊 | -5000 à +5000 | Violet |
| Endurance | ⚡ | 0 à 20 000 | Jaune |
| Maturité | 💧 | 0 à 20 000 | Cyan |
| Amour | ❤️ | 0 à 20 000 | Rouge |
| XP (niveau) | ⭐ | 1 à 200 | Orange |
- Input éditable par pilule (focus/blur)
- Mise à jour live pendant le timer
- Effet lumineux (glow) quand la stat atteint un cap
- Animation delta (+X / -X) qui pop à chaque tick de 10s
Cible sérénité (😊)
- Input numérique (bornes selon jauge active : négatif si baffeur, positif si caresseur)
- Bouton effacer (✕)
- ETA affiché : "~Xm XXs" ou "✅" ou "➕/➖" (si jauge nécessaire non active)
- Placeholder dynamique ("-5000 à 0" ou "0 à 5000")
Cible niveau (⭐)
- Input numérique (1–200)
- Bouton effacer (✕)
- ETA affiché
Blocs jauges actives
Pour chaque jauge active :
Mangeoire (XP) — bloc spécial :
- En-tête : icône + "XP / NIVEAU"
- ETA niveau 200 : "→ NIV. 200 : ~Xj Xh"
- Barre de progression vers 200 + pourcentage
- Valeur live (NIV. X), delta (+X xp), countdown
Autres jauges :
- En-tête : icône + nom (coloré)
- Valeur live, delta (pop animé), countdown
- Barre de progression vers la cible
Badge "✓ TERMINÉ"
- Affiché quand toutes les jauges actives de cette DD ont atteint leur cible
6. Accouplement — Enregistrement de croisements
Étape 1 : Sélection du parent 1
- Barre de recherche (🔍) avec bouton effacer
- Filtres par génération (onglets colorés : Toutes, Gen 1–10)
- Grille de cartes race (image, nom, badge gen)
- Message vide si aucun résultat
Étape 2 : Sélection du parent 2
- Bouton "← Retour"
- Carte du parent 1 affichée (non cliquable)
- Label "Choisir le partenaire :"
- Grille des partenaires compatibles uniquement
- Chaque carte montre "→ {bébé}" en dessous
Étape 3 : Résultat
- Bouton "← Retour"
- Affichage en ligne : Parent 1 + Parent 2 = Bébé (cartes avec images et badges gen)
- Input "Couples" (nombre)
- Input "Bébés obtenus" (nombre)
- Bouton "Enregistrer" → commande
register-accouplement
7. Réapprovisionnement — Calcul de plan d'élevage
Étape 1 : Sélection de la race cible
- Barre de recherche (🔍) avec bouton effacer
- Filtres par génération (Gen 2–10 uniquement)
- Grille de cartes race (gen 2+ seulement)
Étape 2 : Plan d'élevage
- Bouton "← Retour"
- Carte cible + input quantité (mise à jour live du plan)
Matériaux (Gen 1) :
- Mini-cartes par race de base : image, nom, badge gen, ♂X ♀Y
Étapes (Gen 2+) : Par génération, pour chaque croisement :
- En-tête "Étape X — Gen Y" (coloré)
- Affichage : Parent A + Parent B → Bébé (mini-cartes)
- Input "Reproducteurs" (nombre, par croisement)
- Bouton inversion ♂/♀ (swap la direction de reproduction)
Actions :
- Bouton "Sauvegarder le workflow"
8. Inventaire — Gestion du stock & simulation
Saisie du stock
- Résumé : "X DD en stock (Y races)"
- Bouton "Réinitialiser" (remet tout à 0)
- Bouton "Calculer les bébés" (lance la simulation)
- Barre de recherche (🔍)
- Filtres par génération (Gen 1–10)
- Grille de cartes race :
- Image, nom, badge gen
- Input ♂ (mâles) + input ♀ (femelles)
- Mise à jour du résumé en temps réel pendant la saisie
- Persistance automatique du stock entre les changements d'écran
Résultats de simulation
- En-tête global : "{N} bébés possibles sur {G} génération(s)"
- Bouton "Sauvegarder le workflow"
- Par génération :
- Badge gen + total bébés
- Par croisement : Parent A (♂X ♀Y) + Parent B (♂X ♀Y) → Bébé (×Z)
- Section "DD restantes (non utilisées)" : mini-cartes du stock inutilisé
Algorithme
- Allocation proportionnelle (pas glouton) : chaque parent est réparti équitablement entre les croisements qui l'utilisent
- Cascade multi-générations (Gen 2 → Gen 10)
9. Workflows — Suivi des plans d'élevage
Vue liste
- Titre "Plans d'élevage"
- Barre de recherche (🔍)
- Filtres par génération (uniquement les gens qui ont des workflows)
- Message vide si aucun workflow
Par carte workflow :
- Image de la race cible + badge gen
- Nom du workflow (tronqué)
- "Cible × Quantité — Date de création"
- Barre de progression globale (colorée) + "X/Y — Z%"
- Bouton supprimer (✕)
- Clic → vue détail
Vue détail
- Bouton "← Retour"
- Carte d'en-tête :
- Image + badge gen
- Nom, cible × quantité, date
- Barre de progression globale + pourcentage
Section Matériaux de base (si présents) :
- Par matériau :
- Nom de la race (coloré)
- Mini barre de progression
- Input de progression (nombre)
- Label "X / Y"
Sections par génération :
- En-tête "Génération X" (coloré)
- Par croisement :
- Nom race (coloré)
- "ParentA × ParentB — X couples, repro ×Y"
- Input de progression (nombre)
- Label "X / Y"
- Mini barre de progression
Temps réel
- La barre de progression globale se met à jour pendant la saisie
- Les barres individuelles se mettent à jour en direct
10. Paramètres
Carte 🔊 Son d'alarme
- Select : Arpège, Pulsation, Fanfare, Cloche
- Bouton ▶ (test du son sélectionné, joue directement via WebAudio)
Carte 🔔 Notifications
- Bouton Notifs PC : "🔔 Notifs PC activées" / "🔕 Notifs PC désactivées" (toggle)
- Bouton Mobile : "📱 Mobile activé" / "📱 Activer mobile" (ouvre la modal)
Modal ntfy (notifications mobiles)
Si non activé :
- Texte explicatif
- Bouton "🔔 Activer les notifications mobiles" (génère un topic automatique)
Si activé :
- ① QR code pour télécharger l'app ntfy (Play Store / App Store)
- ② QR code pour s'abonner automatiquement aux notifications
- Bouton "🔔 Tester" (envoie une notification de test)
- Bouton "✕ Désactiver" (supprime le topic)
- Bouton "Fermer"
Comportements transversaux
Focus/blur des inputs (tous les écrans)
- Focus : vide le champ, sauvegarde la valeur précédente
- Blur sans valeur : restaure la valeur précédente
- Blur avec valeur : applique et sauvegarde
- Escape : annule et restaure
- Enter : valide (blur)
Système de timer
- Snapshot des jauges et stats au démarrage
- Calcul par segments (recharges en cours de session)
- Gel au cap absolu de chaque stat
- Alarme unique quand toutes les cibles sont atteintes (son + notification PC + ntfy mobile)
- Temps réel : requestAnimationFrame continu
Persistance
- Sauvegarde automatique après chaque mutation d'état
- LocalStorage (web) ou fichier JSON (Electron userData)
- Isolation des données DEV / production
Drag-and-drop
- Onglets enclos : réordonnancement par glisser-déposer
- Cartes dragodindes : réordonnancement dans le même enclos