Commit Graph

46 Commits

Author SHA1 Message Date
06e082b11c feat: UI evolution — HudBar Tailwind + arcs collapsés intelligents
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 48s
- HudBar: migration inline styles → Tailwind, breakpoint 480px ultra-compact mobile
- QuestPage: arcs fermés par défaut sauf quête active/à réclamer, barre progression par arc
- QuestPage: migration inline styles → Tailwind (QuestCard, ArcSection, ArcQuestRow)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 17:39:01 +02:00
2001c867cb feat: écran choix voie du Dao — s'affiche avant le premier combat tactique
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-25 01:33:19 +01:00
cae0ef5d57 fix: titre onglet — nom du perso + TetaRdPG au lieu de 'frontend'
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
2026-03-25 01:24:46 +01:00
430fbb6e95 feat: guide — 4 nouvelles zones + onglet Dao du Courant (voies, combat tactique, compagnons)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
2026-03-25 01:19:22 +01:00
34d1711cee fix: remove unused imports TurnCombatPage (TurnSpell, Heart)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 38s
2026-03-25 01:02:51 +01:00
9d50adf523 feat: Combat tour par tour — Phases A-D complètes
TurnManager stateless avec sessions en mémoire (TTL 10min).
SpellSystem : 15 sorts (5 par voie du Dao), mana, cooldowns, buffs/debuffs.
CompanionAI : Mira (heal/support) et Vell (tank/dps) — IA contextuelle.
Monster AI : 3 profils (agressif, défensif, chaotique).

Nouvelles entités : Spell, PlayerSpell, PlayerDaoPath.
Character +mana. Monster +aiProfile +isBoss.
Migration : 1743004800000-TurnCombatSystem.

Frontend : TurnCombatPage (select/combat/result), sélecteur compagnon,
barres HP/MP, log scrollable, sous-menu sorts avec cooldowns.

Endpoints : 8 routes sous /combat/turn/ (start, action, session, spells,
unlocked, unlock, dao, dao/choose).

Combat simple (POST /combat/start) et grind ×5/×10 inchangés.
2026-03-25 00:58:47 +01:00
4beb1b2ed9 feat: Phase 3 Lore & Contenu — L'Odyssée d'un têtard
Lore Bible (canon narratif complet) + Engine Design (séparation moteur/univers).

4 nouvelles zones (Ruisseau Miroir, Marais des Murmures, Torrent Brisé, Source du Courant)
dans la chaîne d'unlock après desert (niv 16-25+).

Module NPC complet (entity, service, controller) — 8 PNJ avec dialogues évolutifs
par palier de niveau : Gorn (niv 1-15), Pierre-Mémoire (niv 16+), Mira, Vell,
La Batracienne, Le Forgeron, Le Marchand.

20 monstres lore-friendly, 12 matériaux, 15 items (dont Bâton de Gorn légendaire).

17 quêtes narratives (4 arcs ch.9-12) avec textes acceptText/completeText
qui racontent l'Odyssée. Nouveau type story_event pour les moments narratifs purs.
3 quêtes répétables optionnelles.

Seed runner : npm run seed:odyssee

Tout est additif — zéro impact sur le contenu existant niv 1-15.
2026-03-25 00:52:14 +01:00
2c94e4f3aa refacto: migration Tailwind — composants (6 fichiers)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
- RarityBadge, RarityDot → Tailwind classes
- MonsterCard → flex/text-rpg-* classes
- CreateCharacter → full Tailwind (max-w, grid, gap)
- Onboarding → Tailwind + responsive grid-cols-1 mobile
- CombatViews (Log+Multi+History) → Tailwind
- NotFoundPage → full Tailwind
- Pattern posé : couleurs dynamiques en style, layout en classes
2026-03-24 23:54:06 +01:00
9eff6d541e refacto: découpage composants — 5 extractions
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
- MonsterCard, CombatViews (Log+Multi+History), CreateCharacter
- RarityBadge + RarityDot partagés (Guide, Drawer, pages)
- CombatPage 341→215 lignes (−37%)
- DashboardPage 368→307 lignes (−17%)
- 9 composants dans components/
2026-03-24 23:50:55 +01:00
71070b2e76 feat: mobile responsive — sidebar bottom nav + grids adaptatifs
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
- Sidebar → bottom nav fixe sur mobile (<768px)
- Classes CSS layout: .sidebar, .nav-item, .grid-2, .layout-*
- Grids 2col → 1col sur mobile (Dashboard, Combat, Forge)
- HudBar compact + wrapping sur mobile
- GuideDrawer full-width mobile
- Cards padding réduit mobile
- Header username masqué mobile
2026-03-24 23:36:45 +01:00
e769c27a42 feat: page 404 RPG + onboarding nouveau joueur
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
- 404: têtard perdu dans les marais, boutons retour jeu + guide
- Onboarding: 4 étapes guidées (quêtes, combat, craft, guide)
  - Visible niv 1-3, dismissable, grille 2×2 avec CTA par étape
- DashboardPage: STAT_LABELS importé depuis constants.ts
2026-03-24 23:17:09 +01:00
17c61a2bb8 refacto: constants.ts — source unique frontend
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 41s
- Centralise RARITY_COLORS, RARITY_LABELS, ZONE_INFO, STAT_LABELS
- Centralise COMBAT_COST, REST_COST, FORGE_*, ATTACK_TYPES
- Supprime 6 duplications dans CombatPage, GuidePage, ShopPage, ForgePage, InventoryPage
2026-03-24 22:30:59 +01:00
faf2a98227 feat: toast system — feedback visuel global (react-hot-toast)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 36s
- Toaster dark theme (bottom-right, 3s/4s)
- Combat: erreur cooldown/endurance en toast
- Craft: toast start + collect + erreurs
- Forge: toast succès/échec + erreurs
- Shop: toast achat + erreurs
- Inventaire: toast vente + erreurs
- Fix forge costs frontend (200/400/700)
2026-03-24 22:15:28 +01:00
0d917a8b39 feat: audit Phase 1 — P0/P1 quick wins
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
- Fix vitalité: HP initial = 100 + (vitalité-1)×10
- Arme de départ: Bâton de Roseau équipé à la création
- Rebalance forge: niv3 200, niv4 400, niv5 700 (−30%)
- Confirmation avant vente d'item (confirm dialog)
- Fix forge costs dupliqués (shop sellback + inventaire)
2026-03-24 21:53:45 +01:00
23843cb72c feat: guide — bouton Jouer (retour au jeu)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
2026-03-24 21:33:50 +01:00
dbdc02f4ab feat: guide drawer inline + hook partagé useGuideData
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
- GuideDrawer: panneau coulissant depuis la sidebar, recherche live
- useGuideData: hook unique — même cache React Query pour drawer + page
- Sidebar: BookOpen toggle le drawer (pas de navigation)
- Footer drawer: lien vers /guide complet
- GuidePage refactorisée sur useGuideData (zéro duplication)
2026-03-24 21:32:29 +01:00
84104cd96f feat: guide — barre de recherche live + lien sidebar (BookOpen, bas)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
2026-03-24 21:25:30 +01:00
823d7911f0 feat: page Guide publique — wiki joueur dynamique
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
- /guide accessible sans authentification
- 7 onglets : Démarrer, Zones, Bestiaire, Équipement, Artisanat, Forge, Boutique
- Données dynamiques (API publiques) — toujours à jour
- Endpoint /monsters/bestiary public (bestiaire complet toutes zones)
- Fix Item.type → inclut 'consumable'
2026-03-24 21:19:08 +01:00
4fc8be9ea0 feat: historique combat enrichi — loot affiché + 10 entrées
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
- Ajout loot_material_id + loot_quantity sur combat_logs
- Historique passe de 5 à 10 entrées
- Affichage loot (🎁×N) dans l'historique récent
- Fix scope variables multi-combat loot tracking
2026-03-24 21:08:49 +01:00
6ffc867ef7 fix: imports inutilisés frontend (useEffect, CombatResult)
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 20:47:35 +01:00
efe4b4e372 feat: multi-combat ×5/×10 + cooldown anti-spam
Some checks failed
CI/CD — Build & Deploy / Build & Deploy (push) Failing after 30s
- Backend: startMultiCombat boucle séquentielle, arrêt sur défaite
- Frontend: cooldown 1.5s entre combats, boutons ×1/×5/×10
- Frontend: résumé multi-combat (wins/losses, XP/Or/loot totaux)
- Fix: lock contention par spam de clics résolu
2026-03-24 20:21:44 +01:00
6938eedcda feat: titres sélectionnables + prix revente forge inclus
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 31s
Dashboard: titre actif affiché "« Champion »" + sélecteur avec tous les
titres débloqués (achievements claimed avec rewardTitle).
Header: titre visible à côté du level.

Revente: prix inclut l'investissement forge (50% des coûts cumulés).
Épée +5 (investissement 1900 or) → revente base + 950 au lieu de base seul.
API client: ajout méthode PUT.
2026-03-24 19:31:02 +01:00
da8401dec2 fix: useState before conditional return — React hooks order
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
2026-03-24 19:23:46 +01:00
0c9839e1d8 feat: bouton Voir tout sur quêtes combat — plus de quêtes cachées derrière les grosses
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 19:21:24 +01:00
dd2a025c74 feat: quest page restructurée — combat/métiers/dailies/arcs séparés
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Frontend: 4 sections distinctes sur la page quêtes:
  - Quêtes actives (3 slots combat uniquement)
  - Quêtes de combat (stagger: max 3 affichées, "+N après celles-ci")
  - 🔨 Métiers (forge/craft — hors pool, toujours disponibles)
  - 🔄 Dailies (répétables en fond)

Backend: craft/forge quests ne comptent plus dans le MAX_ACTIVE_QUESTS.
2026-03-24 19:11:29 +01:00
bf896a797f feat: vente items + stats combat avec équipement + forge visible
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Inventaire: bouton Vendre sur items non équipés (40% du prix d'achat).
Stats forge visibles: "+5 ATK (3+2)" montre base + bonus forge.
Dashboard combat: attaque/défense calculés avec arme+armure+forge équipées.
10 side quests Égouts seedées (level 5-7).
2026-03-24 18:58:15 +01:00
9aadc326e1 feat: arc quests accept from arc panel + side quests only in available
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 35s
Arc panel: boutons Accepter/Réclamer directement sur chaque quête d'arc,
progress affiché (3/5), arcs lockés avec 🔒 et opacity réduite.
Quêtes disponibles: seulement les secondaires (pas les arcs).
Quêtes d'arc abandonnées: ré-acceptables depuis le panel arc.
Zone locking respecté dans getArcs (zoneUnlocked flag).
2026-03-24 18:31:42 +01:00
b414200544 fix: forge UI updates forgeLevel after success — prix/taux rafraîchis
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 18:16:58 +01:00
66df1013e5 fix: forge endpoint URL param + response field mapping
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
2026-03-24 18:14:23 +01:00
60d10a5423 feat: achievements zones — Maître des Marais, Seigneur des Égouts, Conquérant du Désert
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
2026-03-24 18:01:05 +01:00
cc3cbc1d2f fix: potion énergie affiche +30 endurance au lieu de +50% PV
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
2026-03-24 17:58:56 +01:00
d1609efaae feat: zone locking — progression par arcs narratifs + arcs Égouts/Désert
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Zones verrouillées: marais toujours ouvert, égouts après arc Marais,
désert après arc Égouts. Filtrage backend sur monstres ET boutique.

Arc "Les Égouts de la Cité" (4 quêtes, lv4-7, boss Roi des Rats)
Arc "Les Sables Brûlants" (3 quêtes, lv8-12, boss Sphinx)

GET /api/monsters/zones — retourne les zones avec statut unlocked.
Combat page: monstres groupés par zone, zones lockées avec icône cadenas.
Boutique: items filtrés par zones débloquées (potions toujours visibles).
2026-03-24 17:57:23 +01:00
8cb5fcd5ba fix: endurance regen 6min→3min dans combat/forge/craft + potions d'énergie
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
Bug: combat/forge/craft calculaient la regen à 1pt/6min (ancien) alors que
character.service utilisait 1pt/3min (nouveau). Le joueur voyait 8 endurance
dans le HUD mais le backend refusait le combat avec 4.

Potions d'énergie: Potion (30 endurance, 20 or) + Grande (60 endurance, 45 or).
Consommable instantané via la boutique — le joueur peut acheter du temps de jeu.
2026-03-24 17:51:30 +01:00
1ffde61f97 feat: boutique + zones (égouts, désert) + 10 monstres + 14 items + potions
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 31s
Shop module: GET /api/shop, POST /api/shop/buy/:id, POST /api/shop/sell/:id
Potions: achat instantané, heal 50% HP, pas d'inventaire.
Items: buyPrice + minLevel + zone ajoutés à l'entité.
12 équipements (4 par zone: marais/égouts/désert) + 2 potions.

Monstres: zone field ajouté, 10 nouveaux monstres:
  Égouts (lv4-10): Rat, Slime, Araignée, Crocodile, Roi des Rats
  Désert (lv8-15): Scorpion, Vautour, Momie, Ver des Sables, Sphinx

Frontend: page /shop groupée par zone, rarity colors, achat/vente.
Sidebar: icône ShoppingBag pour la boutique.
2026-03-24 17:46:21 +01:00
4d254692b0 feat: page Achievements + soins renommé + bouton soins en combat
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 31s
Page /achievements : 20 succès groupés par catégorie (Combat, Progression,
Économie, Équipement), progress bars, paliers bronze/silver/gold,
bouton réclamer, compteur débloqués/total.

Renommage "repos" → "soins" partout (dashboard, budget, messages).
Bouton soins ajouté dans la page combat (accès rapide entre les fights).
Icône Trophy dans la sidebar pour les succès.
2026-03-24 17:36:20 +01:00
014ffdd789 refactor: types frontend alignés backend — zéro as any, monstres triés par level
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
types.ts: rewrite complet — Character, Monster, CombatResult, CombatLog
alignés sur les champs réels du backend. Plus de mapping approximatif.

CombatPage: réécriture propre — monstres triés par level (appropriés en
haut, trop forts en bas avec opacity + warning), historique avec vrais
noms de monstres et valeurs XP/or, level up affiché dans le résultat.

Cleanup: 0 occurrence de "as any" dans tout le frontend.
2026-03-24 17:24:59 +01:00
e3c870bb9f fix: combat page field mapping — monster levels, history names, XP/gold values
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Monster: minLevel/maxLevel (backend) vs levelMin/levelMax (frontend type)
History: xpEarned/goldEarned + monster.name vs xpGained/goldGained/monsterName
Combat result: rewards.xp/gold vs xpGained/goldGained, level up display
2026-03-24 17:16:24 +01:00
eafac3d8c7 feat: endurance tickets — coûts visibles partout + budget dashboard
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 31s
Combat: coût 5 affiché, compteur "X combats possibles", bouton disabled
Forge: coût 10 + or affiché (baissé de 15 à 10), bouton disabled
Dashboard: indicateur budget "X combats · Y forges · Z repos"
Repos: coût 10 affiché, disabled si insuffisant
2026-03-24 17:09:06 +01:00
cfdc5c9b02 feat: HUD bar — stats persistantes sous le header
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
Barre compacte toujours visible : nom+level, HP, endurance+timer regen,
XP, or, quêtes actives (avec compteur "prêtes !").
Timer live : "+1 dans X:XX" quand endurance < max.
Auto-refresh 30s pour l'endurance, 60s pour les quêtes.
Chaque section cliquable vers la page correspondante.
2026-03-24 17:03:31 +01:00
9fac9e123b feat: repeatable quests hors pool 3 slots + section tâches quotidiennes
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 32s
Répétables ne comptent plus dans le MAX_ACTIVE_QUESTS (3).
Frontend: section séparée "Tâches quotidiennes" en grille 3 colonnes,
quêtes narratives en haut avec les slots limités.
Prépare le terrain pour le hub village (forgeron, taverne, etc.).
2026-03-24 16:57:57 +01:00
af247a1c6b fix: quest progression (events after tx), abandon quest, endurance display
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
- Events (achievement/community/quest) émis APRÈS la transaction combat
  au lieu de dedans — corrige les quêtes qui ne progressaient pas
- POST /api/quests/abandon/:id — abandonner une quête active
- Frontend: bouton "Abandonner" sur les quêtes actives non complétées
- Fix endurance display (enduranceCurrent field mapping)
- Types Character mis à jour (xpToNextLevel, activeTitle, enduranceCurrent)
2026-03-24 16:52:48 +01:00
8038ca5d0a feat: quest page frontend — accept, progress, claim, arcs narratifs
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
Nouvelle page /quests avec icône Scroll dans la sidebar.
Layout: quêtes actives (gauche) + disponibles (droite) + arcs en bas.
Progress bars, boutons accepter/réclamer, badges répétable.
Arc section collapsible avec status par quête.
2026-03-24 16:40:04 +01:00
93b34b1f7b feat: stat distribution UI + rest button + xpToNextLevel from backend
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 34s
Dashboard: stat distributor with +/- buttons when statPoints > 0,
rest button (+50% HP, -20 endurance) when HP < max,
XP bar uses xpToNextLevel from backend instead of local formula.
API: distributeStats + rest endpoints added to client.
2026-03-24 16:09:55 +01:00
77052d9219 feat: add Twitch provider to login page — 4 providers like Origins
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 13:26:38 +01:00
8fbdcafa7b fix: use localStorage for PKCE verifier — survives cross-site redirects
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 33s
2026-03-24 13:19:19 +01:00
8c6777c980 feat: PKCE auth + CI/CD deploy
All checks were successful
CI/CD — Build & Deploy / Build & Deploy (push) Successful in 1m2s
- Frontend: PKCE flow (oauth.ts, AuthCallback code exchange, 401 interceptor)
- Backend: token introspection via SuperOAuth (no more JWT secret)
- User model: superOauthId (unified) replaces oauthId+provider
- Cookies httpOnly session + refresh token
- POST /auth/refresh endpoint
- Gitea CI workflow (vps-runner pattern)
- DB_SYNC env var for initial schema creation
2026-03-24 13:01:14 +01:00