Commit Graph

196 Commits

Author SHA1 Message Date
n8n-gitea fe78ae047f feat: rewrite fabricator e2e test with debug bridge for store access
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
- Rewrite e2e/fabricator-happy-path.spec.ts from scratch:
  craft 8 gear pieces (1 per slot) via Fabricator UI,
  equip all via store bridge, verify equipment effects
- Add debugBridge.ts: exposes Zustand stores on window.__TEST__
  so Playwright can call store actions via page.evaluate()
- Import debugBridge in page.tsx as side-effect
- Uses Debug tab UI for attunement/element unlocking
- Uses store bridge for discipline XP, mana capacity, materials,
  recipe unlocking, and equipment slot assignment
- Test passes in ~3.5 minutes (155s craft time + setup)
2026-06-02 10:49:38 +02:00
n8n-gitea fa78c7a93a fix: bugs #238,#240,#244,#246 + docs #248 update
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- #238: Fix spire tab inconsistent state (Max Floor 1 but Floors Cleared 0) by not inflating maxFloorReached on enterSpireMode and preserving it on exitSpireMode
- #240: Fix guardian armor display stray text by extracting stat formatters in SpireSummaryTab
- #244: Improve discipline auto-pause UX with log messages and visual feedback on DisciplineCard
- #246: Fix raw mana exceeding max cap by recomputing maxMana after discipline XP gains
- #248: Update AGENTS.md (remove gitea_get_project_boards, add gitea_start_session, 22 mana types, 8 stores, updated guardian tiers)
- #248: Update README.md (remove Prisma/SQLite refs, update mana types/guardian tiers/discipline counts)
- #248: Update GAME_BRIEFING.md (8 stores, 22 mana types, 64 disciplines, 8-tier guardians, correct code architecture)
2026-06-01 13:54:28 +02:00
n8n-gitea 7dd9ad5b92 fix: multiple bug fixes - infinite loop crash, enchant tick handlers, discipline crash, Plasma symbol, desync
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
- #236: Fix Climb the Spire React #185 infinite loop - removed redundant set() in processCombatTick that caused double Zustand writes per tick
- #235: Add enchanting design/prepare/apply tick handlers - extracted to pipelines/enchanting-tick.ts
- #235: Fix startApplying not setting currentAction to 'enchant'
- #243: Guard discipline store against undefined activeIds/processedPerks from corrupted persisted state
- #245: Change Plasma symbol from  (conflicts with Lightning) to 🔴
- #241: Fix combat store maxFloorReached desync - initialize to 0, reset on exitSpireMode
- #239: Fix EffectSelector not rendering when unlockedEffects is empty (fresh game)
- Created pipelines/enchanting-tick.ts to keep gameStore.ts under 400 lines
2026-06-01 12:57:52 +02:00
n8n-gitea 2539559edc fix: pass activeIds to DisciplineCard in ElementalSubtab; add missing mana type names
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m29s
2026-06-01 11:04:48 +02:00
n8n-gitea 0232f2ac85 fix: meditation multiplier cap 2.5x, discipline reactivation, Spire crash, earthShard recipe, fabricator E2E test
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m53s
2026-05-31 16:12:47 +02:00
n8n-gitea 2432f807be chore: add test runner to pre-commit hook with failure-only output
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m58s
2026-05-31 01:42:34 +02:00
n8n-gitea 6793461a9f fix: issues #221 #217 #225 #227 #224 #226 - crafting refunds, mana tracking, cancel slot, multi-element guardians, spell kill advance
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m59s
2026-05-31 01:18:01 +02:00
n8n-gitea e4f4b297e8 fix: Bug fixes #218 #222 #220 #223 #215 #216 - attunement free mana, transference circular ref, guardian defeat tracking, discipline negative mana, guardian data, crafting refunds
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
2026-05-30 22:28:45 +02:00
n8n-gitea 737a23bec3 fix: Stats tab Total Max Mana now includes discipline bonuses
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-05-30 18:41:23 +02:00
n8n-gitea 4f229cdd86 desloppify
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
2026-05-30 16:30:32 +00:00
n8n-gitea 90b309885e fix: pass disciplineEffects to computeMaxMana in useGameDerived (BUG #213), fix getMeditationBonus arg count in 3 files (BUG #212/#208), remove duplicate Climb button from SpireSummaryTab (BUG #211)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-05-30 15:27:19 +02:00
n8n-gitea b8e6d651b2 feat: guardian floors use guardian elements instead of fixed cycle
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-05-30 10:40:48 +02:00
n8n-gitea 644bb8402c feat: add new high-tier fabricator materials (Aether Weave, Void Cloth, Liquid Crystal Lattice)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 2m25s
2026-05-30 01:43:38 +02:00
n8n-gitea e3ce18c601 feature: add new composite and exotic mana types (ticket #202)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 17s
2026-05-29 21:51:45 +02:00
n8n-gitea 7bd28e2085 feat: guardian defensive stats — shield, barrier, health regen + stat label renames
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
2026-05-29 18:18:00 +02:00
n8n-gitea 71c68443c4 feat: restructure guardian progression system with dynamic element support
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-05-29 17:18:13 +02:00
n8n-gitea 644b76f16d feat: add fabricator disciplines for recipe unlocks
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- Add unlocksRecipes field to DisciplinePerk type
- Add study-fabricator-recipes discipline (earth/metal/sand/crystal recipes)
- Add study-wizard-branch discipline (wizard equipment recipes)
- Add study-physical-branch discipline (physical combat equipment recipes)
- Collect unlocksRecipes during discipline tick processing
- Pass recipe unlocks to crafting store via gameStore
- Add unlockRecipes action to craftingStore with persistence
- Filter fabricator recipes by unlock status in FabricatorSubTab UI
2026-05-29 15:42:09 +02:00
n8n-gitea 9e49aa1ca6 fix: update Steady Hand prestige upgrade with real enchantment power effect
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
2026-05-29 15:23:40 +02:00
n8n-gitea 86c80a25ca feat: scale guardian pact cost with HP, power, and armor
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
2026-05-29 15:00:50 +02:00
n8n-gitea e0e7beb495 fix: remove debug Skip to Floor 100 and Reset Floor HP buttons
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
- Remove debugSetFloor and resetFloorHP actions from combatStore.ts
- Remove their type definitions from combat-state.types.ts
- Remove Skip to Floor 100 and Reset Floor HP buttons from GameStateDebugSection.tsx
- Remove same buttons from legacy GameStateDebug.tsx
- Remove floor quick-jump and Reset Floor HP from SpireDebugSection.tsx
- Remove associated tests from DebugTab.test.ts, store-actions.test.ts, store-actions-combat-prestige.test.ts
- Add missing src/test/setup.ts required by vitest config

These debug buttons created inconsistent game states by teleporting players
to floors without proper initialization (no spireMode, no room state, no
clearedFloors, no guardian encounters). resetFloorHP could be spammed to
infinitely retry any floor for free.
2026-05-29 14:54:52 +02:00
n8n-gitea a33e9429fe fix: resolve critical bugs - disciplines, debug reset, floating point, spire loop
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
Fixes:
- Issue 193: Remove unnecessary useEffect that set activeTab when spireMode is true, and redundant setAction('climb') in SpireCombatPage
- Issue 194: Fix signed_pact prerequisite check in checkDisciplinePrerequisites by accepting signedPacts param; add 'At Limit' feedback on discipline button when concurrent limit reached
- Issue 195: Add resetDisciplines(), resetAttunements(), resetCrafting() calls to createResetGame; add resetCrafting action to crafting store
- Issue 196: Fix floating point display in ElementStatsSection (mana pools) and GameStateDebug (time); fix duplicate 'Base Regen' label in ManaStatsSection

All 917 tests pass. Files stay under 400-line limit.
2026-05-29 14:10:04 +02:00
n8n-gitea adeb106428 fix: resolve issues #188, #189, #190, #191 - EffectSelector gating, discipline tab completeness, and stat bonus integration
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
2026-05-28 21:01:28 +02:00
n8n-gitea 6355cf308b fix: Elemental Mana Capacity disciplines now increase element capacity
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
- Add optional baseMax field to ElementState to track prestige-derived max separately from bonuses
- Add computeElementMaxWithBonuses action to manaStore that computes max = baseMax + per-element bonus
- Apply per-element cap bonuses from disciplines and equipment in game tick (elementCap_* keys)
- Fix resetMana to use correct prestige key (elementalAttune instead of nonexistent elemMax)
- Add store migration (v1->v2) to populate baseMax for existing saved games
- Extract pact ritual processing to pipelines/pact-ritual.ts
- Extract element cap bonus utilities to utils/element-cap-bonus.ts
- Fix inline element types in crafting-fabricator.ts
- Update test fixtures to include baseMax in element literals

Fixes #185
2026-05-28 19:49:47 +02:00
n8n-gitea bc184cefb0 fix: defensive hardening — NaN guards, cast loop safety, discipline reset on new loop, spire mode maxFloorReached fix
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-05-28 18:14:19 +02:00
n8n-gitea 9671078fea fix: improve Discipline tab UX - remove confusing base cost label, convert drain to /sec, show computed perk effects and perk-augmented stat totals, fix /tick label suffixes in data
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
2026-05-28 13:45:22 +02:00
n8n-gitea 26639746e9 discipline: elemental revamp - rename, lock, merge tabs, add missing, dedupe
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
2026-05-28 13:15:14 +02:00
n8n-gitea 268baf3916 fix: auto-unlock element types when attunement conversion begins — Fabricator now unlocks earth
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m26s
2026-05-28 12:28:27 +02:00
n8n-gitea aba1265cbc fix: remove combat action guard from craftMaterial — material crafting is instant and should work in any combat state
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m27s
2026-05-28 12:18:52 +02:00
n8n-gitea 3e70f481dc fix: set currentAction 'climb' and use generateSpireFloorState in enterSpireMode 2026-05-28 12:11:54 +02:00
n8n-gitea 5578721992 refactor: remove skill system leftovers, migrate click mana to discipline perk
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m30s
- Simplified getMeditationBonus() to continuous ramp formula
- Added click-mana capped perk to Mana Circulation discipline
- Removed manaWell/manaFlow/manaSpring skill reads and prestige upgrades
- Removed all skill fields from GameState and GameActionType
- Updated all call sites and tests (916 tests passing)

Closes #174
2026-05-28 11:50:06 +02:00
n8n-gitea b5996d5b6e fix: resolve circular dependency in discipline-slice → discipline-effects
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m30s
Replaced computeDisciplineEffects() import in discipline-slice.ts with
inline XP bonus calculation using calculateStatBonus from discipline-math.
This avoids the circular chain: discipline-effects → discipline-slice → discipline-effects.
2026-05-28 09:47:45 +02:00
n8n-gitea 8cebea9586 fix(#165,#166,#167,#168,#169,#171,#172): resolve 7 open bug issues
#172 - Grimoire tab: removed dead 'loaded' state guard that permanently showed loading
#169 - Transference Mana Flow: added elements param to checkDisciplinePrerequisites so mana type unlocks are verified
#168 - Perk descriptions: wired 4 broken perks (enchant-2, channel-1, golem-2, efficiency-1) with actual bonus effects; fixed enchant-1 interval (5→50); fixed study-mana-enchantments stat (maxMana→maxManaBonus)
#171 - Shields: removed all shield equipment (4 types), recipes, category, slot mappings; added 'shields' to AGENTS.md banned list
#166 - regenMultiplier: merged disciplineEffects.multipliers.regenMultiplier into computeAllEffects()
#165 - Meditation cap: added meditationCap display to ManaStatsSection UI; updated perk description
#167 - XP accumulation: added Meditative Mastery base discipline with disciplineXpBonus stat; wired into tick pipeline
2026-05-28 09:32:43 +02:00
n8n-gitea 27500f37b7 fix(#170): wire fabricator crafting completion + bonus enchantments + remove dead code
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
2026-05-27 21:08:41 +02:00
n8n-gitea 7279050101 fix: repair persistence - safe-persist getItem now returns parsed objects, fix resetGame localStorage keys
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
- safe-persist.ts: getItem now calls JSON.parse(str) so Zustand receives {state, version} envelope
- gameActions.ts: fix 5 wrong localStorage keys in createResetGame (mana→mana-storage, etc.)
- Add persistence.test.ts with 12 tests covering round-trip, key verification, and reset
- All 918 tests pass with zero regressions
2026-05-27 19:14:01 +02:00
n8n-gitea 5f8a860a3c fix: pass rawMana to discipline activate to allow re-practicing after stop
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-05-27 15:57:17 +02:00
n8n-gitea 5e76fe7145 feat: add wizard and physical gear branches to Fabricator
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- Split fabricator-recipes.ts into 4 files (all under 400 lines):
  - fabricator-recipes.ts: core/elemental equipment recipes + helpers
  - fabricator-wizard-recipes.ts: 7 wizard branch recipes (staffs, circlet, robe, catalyst, pendant)
  - fabricator-physical-recipes.ts: 9 physical branch recipes (blades, helm, robe, boots, gauntlets, shields)
  - fabricator-material-recipes.ts: 12 material crafting recipes
- Added branch filter UI (All/Elemental/Wizard/Physical) to FabricatorSubTab
- All 902 tests pass
2026-05-27 15:22:16 +02:00
n8n-gitea 9a2da67006 feat: add material crafting recipes to Fabricator
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-05-27 14:39:44 +02:00
n8n-gitea 3f20991d2d feat: add material crafting recipes to Fabricator
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 4m25s
2026-05-27 14:13:46 +02:00
n8n-gitea cbeb0b50ad fix: replace arcaneShard with elementally attuned materials in Fabricator recipes
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m32s
2026-05-27 12:56:06 +02:00
n8n-gitea 2c88d3c395 feat: replace Metal Kite Shield with Metal Spell Focus offhand
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m31s
2026-05-27 12:39:55 +02:00
n8n-gitea 5f46948568 fix: rebalance golem stats for proper tier progression
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m32s
2026-05-27 12:30:36 +02:00
n8n-gitea 78766d0722 fix: replace meaningless fabricator recipe stats with mana-focused stats
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m32s
2026-05-27 12:26:16 +02:00
n8n-gitea badd233c63 feat: expand golem stat abbreviations and add special abilities display
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m31s
2026-05-27 12:20:44 +02:00
n8n-gitea a47d6568f7 fix: audit and fix discipline descriptions to match actual effects
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m29s
2026-05-27 12:13:51 +02:00
n8n-gitea 428d308ed3 fix: two-handed weapons no longer show off-hand slot option in Equipment tab
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m31s
2026-05-27 11:40:35 +02:00
n8n-gitea a8fab1eb86 fix: make guardian names deterministic per floor instead of using Math.random()
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m37s
- generateGuardianName() now takes a floor parameter and uses floor % prefixes.length for deterministic prefix selection
- generateComboGuardianName() now takes a floor parameter and uses (floor + i) % prefixes.length for each element
- getGuardianForFloor() passes floor to generateGuardianName for static guardians with empty names
- getExtendedGuardian() passes floor to generateComboGuardianName for combo guardians
- Removes dependency on Math.random() → names are stable across ticks/refreshes

Fixes #161
2026-05-27 11:26:28 +02:00
n8n-gitea 8df3be5628 fix: invoker disciplines use raw mana, fabricator uses earth
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m34s
- #151: Changed invoker disciplines (pact-attunement, guardians-boon) from light/dark to raw
- #150: Changed crafting-efficiency from sand to earth
2026-05-27 11:18:31 +02:00
n8n-gitea 964619b975 fix: enchanter disciplines now use transference mana
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m46s
- Changed manaType from elemental to 'transference' for 9 enchanter disciplines:
  - enchanter.ts: mana-channeling, study-basic-weapon-enchantments, study-advanced-weapon-enchantments
  - enchanter-utility.ts: study-utility-enchantments, study-mana-enchantments
  - enchanter-spells.ts: study-basic-spell-enchantments, study-intermediate-spell-enchantments, study-advanced-spell-enchantments
  - enchanter-special.ts: study-special-enchantments
- Fixed misleading description in mana-channeling discipline
2026-05-27 11:16:33 +02:00
n8n-gitea 7962a4fdaa fix: discipline reset on mana depletion and re-activation after stop
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m35s
- #143: processTick now removes drained disciplines from activeIds and calls onStopPracticing so currentAction resets to 'meditate'
- #144: Removed paused guard from canProceedDiscipline so stopped disciplines can be re-activated
- Updated test to match new expected behavior for paused disciplines
2026-05-27 11:13:08 +02:00
n8n-gitea 64b472572b fix: fabricator recipes now use correct elemental mana type
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m37s
- fabricator-recipes.ts: add optional manaType param to canCraftRecipe for clarity
- FabricatorSubTab.tsx: read elemental mana from store based on recipe manaType instead of always using rawMana
- craftingStore.ts: add startFabricatorCrafting action that deducts correct mana type
- craftingStore.types.ts: add startFabricatorCrafting to CraftingActions interface
- crafting-fabricator.ts: new helper file to keep craftingStore.ts under 400 lines

Fixes #155
2026-05-27 11:06:24 +02:00