Commit Graph

187 Commits

Author SHA1 Message Date
n8n-gitea cba3090d7e fix(pact-system): resolve 5 spec-vs-code discrepancies (DISC-4,6,8,11,12)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
- DISC-11: Fix floor 140/150 element composition in guardian-data.ts
  Floor 140 now uses [light, fire, radiantflames] (was [sand, earth, water])
  Floor 150 now uses [air, death, miasma] (was [lightning, fire, air])
- DISC-12: Reconcile spec §7.1 vs §8.2 tables in pact-system-spec.md
  Updated §8.2 to match §7.1 authoritative element mappings
- DISC-4: Deduplicate pact ritual completion logic
  Refactored pact-ritual.ts pipeline to delegate completion to
  prestigeStore.completePactRitual() instead of duplicating state writes
- DISC-6: Add 4 missing boon types to guardians
  critChance (floor 90), manaGain (floor 110), prestigeInsight (floor 200),
  studySpeed (floor 220) — all 12 spec boon types now used
- DISC-8: Add comment clarifying signedPactDetails persistence
  Code already correct (not reset by startNewLoop/resetPrestigeForNewLoop)
- Updated spire-utils.test.ts to match corrected floor 140/150 elements
2026-06-08 22:50:03 +02:00
n8n-gitea 573130cdb1 fix: attunement system spec-vs-code discrepancies (issue #331)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
- Fix conversion rate level scaling from linear (1+level*0.5) to exponential (1.5^(level-1)) in conversion-rates.ts
- Fix getAttunementLevelMultiplier formula to match spec §4.3
- Add level-up logging in attunementStore.ts via combat store addActivityLog
- Clarify getAttunementConversionRate returns flat base rate (level scaling applied separately)
- Update spec §8 to describe time-based puzzle room system matching code implementation
- Add 17 regression tests verifying exponential scaling, base rate behavior, and spec table values
2026-06-08 22:08:17 +02:00
n8n-gitea 64c1d2f51e fix: spire climbing spec discrepancies (DISC-1,14,15,18,19,21,22,23,29,34)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- DISC-1: Fix ascent seed missing +runId in combat-descent-actions.ts
- DISC-14: Recovery room 10x regen/conversion already in gameStore.ts
- DISC-15/18/21: Add missing completion logs for recovery, library, treasure rooms
- DISC-19: Filter library discipline selection to non-paused disciplines
- DISC-22: Fix puzzle room log format to match spec
- DISC-23: Replace hardcoded MAX_LEVEL with MAX_ATTUNEMENT_LEVEL
- DISC-29: Update spec to document libraryStayed/recoveryStayed on currentRoom
- DISC-34: Add 'Exited the Spire' activity log in exitSpireMode
2026-06-08 20:36:42 +02:00
n8n-gitea 098ec86189 fix: spire combat 11 high-severity discrepancies (issue #333)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
D-01: Implement per-weapon cast progress (weaponCastProgress record)
D-04: Bypass Executioner/Berserker discipline specials for golem attacks
D-09: Fix lightning counter direction (lightning→water, not lightning→earth)
D-10: Add full composite element counters (blackflame/radiantflames ↔ frost/water/light/dark)
D-15: Fix Executioner to check per-enemy HP < 25% instead of floorHP ratio
D-20: Fix dodge formula to match spec (min(0.55, floor × 0.003), starts at 0)
D-22: Fix shield modifier to use flat HP pool instead of percentage barrier
D-23: Wire up applyMageBarrierRecharge in the damage pipeline
D-25: Move guardian regen from per-damage-event to once-per-tick
D-26: Add guardian armor reduction to the guardian defensive pipeline
D-31: Fix armor_corrode to be temporary (restore armor on effect expiry)
D-38: Implement AoE damage distribution across enemies

All 1069 tests pass. No files exceed 400 lines.
2026-06-08 18:25:05 +02:00
n8n-gitea d07e74c396 feat: remove Spells tab UI
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
- Remove Spells tab trigger from TabTriggers in page.tsx
- Remove TabsContent value='spells' block in page.tsx
- Remove lazy import of SpellsTab in page.tsx
- Change default activeTab from 'spells' to 'disciplines'
- Remove SpellsTab re-export from tabs/index.ts
- Remove SpellsTab re-export from game/index.ts
- Delete src/components/game/tabs/SpellsTab.tsx

Spell data (SPELLS_DEF, spells store state) preserved - spells still exist as enchantments.
2026-06-08 16:02:48 +02:00
n8n-gitea f31eaac59f feat: remove Grimoire tab
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
2026-06-08 15:51:29 +02:00
n8n-gitea c61a9f88bf fix: three bug fixes - library XP scaling, prep time floor, dual design slot logic
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Fixes #297: Library room XP now uses 25× rate without undocumented floor multiplier
Fixes #305: Prep time mana-per-tick now applies Math.floor(capacity/50) per spec
Fixes #304: Dual design slot correctly returns false when first slot is empty
2026-06-08 15:03:08 +02:00
n8n-gitea 9c1b2fb6cb fix: correct difficulty/scaling factors for Shadow Glass and Stellar per spec
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-08 14:59:24 +02:00
n8n-gitea 83f835ccb0 fix: add runId to seed calculations and use seeded random for treasure loot
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Fixes #299: Seed calculation now includes runId component per spec (seed = floor × 12345 + runId)
Fixes #298: Treasure loot now uses seeded random instead of Math.random()

Changes:
- Added runId field to CombatState type
- Generated random runId on spire entry in createEnterSpireMode
- Updated getRoomsForFloor, generateSpireRoomType, generateSpireFloorState, generateTreasureLoot to accept and use runId
- Updated all call sites in combat-descent-actions.ts and combatStore.ts
- Treasure loot item count now uses seeded RNG instead of Math.random()
2026-06-08 14:54:37 +02:00
n8n-gitea 7f5493f4d8 fix: initialize guardian defensive state for uncleared guardian rooms on descent
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
2026-06-08 14:40:53 +02:00
n8n-gitea 01864216ac fix: remove duplicate spell_iceShard from basic-spells.ts (was overwritten by frost-spells.ts version)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
2026-06-08 14:36:22 +02:00
n8n-gitea 2f580ef0fe fix: pact system boon counts and signedPactDetails population
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m30s
- Fix multi-element guardians (floors 130,140,150,170,190,200,210,230,240) to have exactly 2 boons per spec instead of 3-4
- Fix signedPactDetails never being populated: pipeline processPactRitual now includes signedPactDetails in writes with floor, guardianId, signedAt time, and skillLevels
- Fix completePactRitual in prestigeStore to also populate signedPactDetails
- Update gameStore.ts call site to pass signedPactDetails and current day/hour to processPactRitual

Fixes #309, fixes #308
2026-06-08 14:27:53 +02:00
n8n-gitea a1b86d82c5 fix: Crystal-Steel Hybrid frame unlock now only requires Fabricator 5 (was incorrectly dual-gated with Enchanter 5)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-08 14:14:38 +02:00
n8n-gitea 9200cf3ce0 fix: use actual meditationMultiplier and baseRegen in ElementStatsSection; add cost breakdown per spec §11
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-08 14:08:31 +02:00
n8n-gitea b4b499c1b1 fix: split multi-type golem core upkeep across all mana types (issue #315)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-08 13:29:30 +02:00
n8n-gitea 0894ee8c55 fix: material cancellation refund uses flat 50% per spec §6.3
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-08 13:13:57 +02:00
n8n-gitea 5b124ea845 fix: align fabricator perk IDs with spec (issue #318)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-08 12:55:56 +02:00
n8n-gitea fa448f233c fix: deduct component consumption from element pools in mana conversion
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
Bug #293: elementDrain was computed but never subtracted from element pools.
The tick pipeline now applies net regen (produced - drained) instead of
gross production to element pools, matching the spec §8 regen deduction model.
2026-06-08 12:43:16 +02:00
n8n-gitea b3b13b6a55 fix: Hasty Enchanter now applies correct 25% design speed bonus (was 6.25%)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-08 11:52:07 +02:00
n8n-gitea 971b876537 fix: enforce discipline perk gating in enchantment design validation
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-08 11:39:43 +02:00
n8n-gitea 1e1fcdc6d4 fix: deduct raw mana cost when starting pact ritual (Issue #306)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
2026-06-08 11:22:03 +02:00
n8n-gitea dc9adc487b fix: add missing pactAffinity prestige upgrade to PRESTIGE_DEF
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
2026-06-08 10:59:10 +02:00
n8n-gitea 411c355a15 fix: Golemancy enchantment capacity, design persistence, and UI selectors
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
- Fix enchantment capacity formula: multiply magicAffinity by 100 (spec treats it as percentage)
- Fix enterSpireMode preserving golemDesigns (only reset loadout/activeGolems per spec §9)
- Add mana type selector UI for Intermediate/Advanced/Guardian cores
- Add spell selector UI for circuits with spell slots

Fixes #310, #311, #312
2026-06-08 10:30:59 +02:00
n8n-gitea 1e99a57496 fix: golem combat runtime - elemental matchup, enchantment effects, spell damage/cost, armor pierce (issue #313)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
2026-06-08 10:12:18 +02:00
n8n-gitea 0e1e506213 fix: apply Crafting Efficiency cost reduction to all fabrication paths
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Add getCraftingCostReduction() and applyCostReduction() helpers in crafting-fabricator.ts
- Apply cost reduction in deductMaterials() and checkFabricatorCosts()
- Apply cost reduction in startFabricatorCrafting() and cancelEquipmentCrafting() pipeline
- Update canCraftRecipe() in fabricator-recipes.ts to accept costReduction param
- Update FabricatorSubTab and MaterialRecipeCard UIs to display discounted costs
- Spec formula: actualCost = ceil(baseCost × (1 - craftingCostReduction / 100))

Fixes #316
2026-06-07 23:15:55 +02:00
n8n-gitea a11ea065eb fix: mana conversion attunement rate now uses flat base + linear multiplier per spec
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m17s
2026-06-07 23:06:03 +02:00
n8n-gitea e5097211ba fix: recovery room 10× regen/conversion multiplier double-counting bug
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
2026-06-07 18:09:03 +02:00
n8n-gitea e90ae82da1 docs: fix documentation inconsistencies (issue #291)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m29s
- Fix pact-system-spec.md §5.2: Remove misquote of AGENTS.md (pacts do NOT persist)
- Fix pact-system-spec.md §4.2: Update pactBinding note (now resolved in code)
- Fix pact-system-spec.md §8.2/8.3: Correct floor 140/150/200 element tags
- Add pactInterferenceMitigation to AGENTS.md and GAME_BRIEFING.md (15 upgrades)
- Fix GAME_BRIEFING.md §7: Correct Tier 1 armor values and pact times
- Fix GAME_BRIEFING.md §7: Correct Tier 2 armor values and pact times
- Fix GAME_BRIEFING.md §7: Correct Tier 3 pact times
- Fix GAME_BRIEFING.md §7: Correct floor 100 element (sand, not sand+fire+earth)
- Fix AGENTS.md: Update equipment count from 50 to 43
- Fix AGENTS.md: Fix enchantment design time (per stack, not per effect slot)
- Fix GAME_BRIEFING.md §6: Clarify puzzle room frequency (guaranteed per 7th floor)
- Fix GAME_BRIEFING.md §11: Clarify spireKey formula (1 + level × 2)
2026-06-07 16:14:23 +02:00
n8n-gitea 831dab1eeb chore: update AGENTS.md and GAME_BRIEFING.md golemancy references to match completed redesign
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-07 14:48:03 +02:00
n8n-gitea 3e8e8f72d5 chore: remove last stale golem ref in spire-combat-spec files table
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m25s
2026-06-07 14:41:39 +02:00
n8n-gitea 1a0886f702 chore: golemancy redesign cleanup — remove orphaned legacy code and update docs
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-07 12:54:12 +02:00
n8n-gitea 59fe6cd111 feat: Complete Golemancy System Redesign - Component-Based Construction
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Fix Crystal-Steel Hybrid Frame unlock to require Fabricator 5 + Enchanter 5 (dual attunement)
- Fix golem slot calculation: pass fabricator level to summon logic, cap at 7 (base 5 + discipline bonus)
- Integrate discipline golemCapacity bonus into slot calculation in combat-descent-actions and golem-combat pipeline
- Update GolemancyTab UI to show discipline slot bonus in header
- Add comprehensive test suite: golemancy-data.test.ts (344 lines) and golemancy-combat.test.ts (313 lines)
- All 1009 tests pass across 52 test files
2026-06-06 19:19:06 +02:00
n8n-gitea 9d4b3f3c69 fix: complete golemancy component-based redesign cleanup
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Fix summonGolemsForRoom to use golemLoadout instead of removed enabledGolems
- Fix discBonus hardcoded to 0 in golem-combat.ts pipeline (now computed from discipline effects)
- Remove deprecated types: SummonedGolem, ActiveGolem, GolemDef
- Remove legacy GolemancyState fields: enabledGolems, summonedGolems, legacyActiveGolems
- Remove orphaned store actions: toggleGolem, setEnabledGolems
- Delete orphaned legacy data files: base-golems.ts, elemental-golems.ts, hybrid-golems.ts
- Update GolemDebugSection to use new golemLoadout system
- Update golemancy-spec.md §17 to reflect all features as complete
- Update all test files to match new type shapes
- All 958 tests passing
2026-06-06 18:37:09 +02:00
n8n-gitea bd15df85ff fix: add curse amplification to applyEnemyDefenses (spec §6.3)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
The curse debuff was stored on enemies via dot-runtime.ts but the
amplification was never applied to incoming damage. Added curse
magnitude check in applyEnemyDefenses (combat-tick.ts) that multiplies
incoming damage by (1 + magnitude) for each active curse effect.

- Curse amplification applied BEFORE dodge/barrier/armse defenses
- Multiple curse effects stack multiplicatively
- Non-curse effects (burn, freeze, etc.) are ignored for amplification

Also updated spire-combat-spec.md Known Gaps table to reflect:
- Melee defense bypass fixed (issue #285)
- Curse amplification now implemented (issue #286)

Added 9 regression tests in curse-amplification.test.ts.

All 957 tests pass (50 test files).
2026-06-06 17:46:39 +02:00
n8n-gitea 325949cc5f fix: melee attacks now apply enemy defenses (armor/barrier/dodge)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m17s
Bug: Melee sword attacks passed null as the enemy to applyEnemyDefenses,
causing all enemy defenses (armor, barrier, dodge) to be bypassed.
Spell damage and DoT effects correctly went through defenses.

Fix: In combat-actions.ts melee loop, get the current target enemy
from currentRoom.enemies (lowest HP, matching focus-fire targeting)
and pass it to applyEnemyDefenses instead of null.

Added 7 regression tests in melee-defense-bypass.test.ts to verify:
- Melee damage is reduced by armor
- Melee damage is reduced by barrier
- Unarmored enemies take more damage than armored ones
- Full damage dealt when no defenses
- Focus-fire targeting (lowest HP enemy)
- Graceful handling of empty enemy list
- Comparison proving defense application

All 948 tests pass (49 test files).
2026-06-06 17:33:31 +02:00
n8n-gitea 4b7aa82953 feat(golemancy): Phase 1 - Component-based construction system data definitions
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Add new golem component types (Core, Frame, MindCircuit, Enchantment)
- Create 4 Core tiers, 7 Frames, 4 Mind Circuits, 8 Enchantments
- Rewrite golem utils for component-based stat computation
- Update GolemancyState with new fields (golemDesigns, golemLoadout, activeGolems)
- Update combat store, actions, and pipelines for new golem system
- Rewrite GolemancyTab with component selection UI
- Update fabricator discipline perks for new system
- Add comprehensive tests for component registries and utilities
- All files under 400 lines, all 743 tests passing
2026-06-06 16:50:26 +02:00
n8n-gitea c40e4ee940 feat: redesign golemancy system spec - component-based construction (Core + Frame + Mind Circuit + Enchantments)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-05 15:36:17 +02:00
n8n-gitea 6aed5c8d2b docs: reconcile spec inconsistencies across all documentation
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
- Fix incursion start day: 5→20 in GAME_BRIEFING.md (matches code constant)
- Fix fabricator discipline count: 2→5 in AGENTS.md
- Fix discipline counts: elemental.ts 22→21, advanced-regen.ts 14→15
- Fix equipment count: 50→43, remove shields, fix catalysts count
- Fix prestige upgrade count: add missing manaWell, manaFlow, pactBinding, pactInterferenceMitigation
- Remove x3 victory multiplier (no victory condition defined yet)
- Update pact persistence: pacts do NOT persist through prestige
- Update elemental matchup tables to match ultimate truth
- Update room type frequencies to match spire-climbing-spec
- Update guardian data tables to use formulas
- Update Tier 3 guardian elements to match guardian-data.ts code
- Add pactBinding + pactInterferenceMitigation to PRESTIGE_DEF constants
- Wire pactInterferenceMitigation into useGameDerived.ts
- Update spire-combat-spec.md Known Gaps table (DoT implemented, melee bypass bug)
- Update invoker-spec.md known issues (all resolved)
- Update golemancy-spec.md status (undergoing redesign)
- Update PrestigeTab test to expect 15 upgrades
- Create Gitea issues #285 (melee defense bypass), #286 (DoT verified), #287 (mana conversion gap)
2026-06-05 14:07:22 +02:00
n8n-gitea 69cc8b78d1 fix: add missing calcMeleeDamage barrel export in utils/index.ts
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-04 19:51:49 +02:00
n8n-gitea b54b10a899 fix: break circular dependency between combat-descent and non-combat-room actions
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m2s
2026-06-04 19:32:22 +02:00
n8n-gitea ee24227d62 feat: implement non-combat room gameplay (Library, Recovery, Treasure, Puzzle)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m4s
2026-06-04 19:28:25 +02:00
n8n-gitea 40a50d34f4 fix: combat room progression - replace legacy room-utils with spire-utils, align UI with store state
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m1s
2026-06-04 18:54:33 +02:00
n8n-gitea ab3afae2a6 feat: overhaul mana conversion system to unified regen-deduction model
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m2s
- New files: element-distance.ts, conversion-costs.ts, conversion-rates.ts
- All conversion types (discipline, attunement, pact) use unified formula
- Conversion costs scale exponentially by element tier (10^(d+1) raw, 10*(d+1) per component)
- Costs deducted from regen, not from mana pool
- Auto-pause on insufficient regen with UI warning
- Meditation boosts conversion rates (reduced by distance)
- Attunement levels provide +50% multiplicative bonus per level
- Guardian pacts provide +0.15/hr base rate + invoker level bonus
- Removed convertMana, processConvertAction, craftComposite from manaStore
- Stats tab shows per-element conversion breakdown with formulas
- ManaDisplay shows per-element net regen rates
- All 916 tests pass, all files under 400 lines
2026-06-04 18:12:41 +02:00
n8n-gitea c22f9c3bd5 feat: add mana conversion system spec and ticket
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m2s
2026-06-04 13:24:15 +02:00
n8n-gitea 23e629f37e feat: implement per-enemy damage application (spec §3.2)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m6s
- Add applyDamageToRoom() function targeting individual enemies
- Add lowestHPEnemy() helper for focus-fire targeting
- AoE spells distribute damage across all enemies
- Single-target attacks hit lowest HP enemy first
- Refactor processCombatTick spell/equipment/melee/DoT damage to use per-enemy system
- Update golemApplyDamageToRoom in golem-combat pipeline for per-enemy targeting
- Add currentRoom to CombatTickResult and sync through gameStore
- Update combat-actions tests with proper enemy setup for per-enemy tests
- Extract combat-damage.ts module to stay under 400-line limit
2026-06-04 11:37:21 +02:00
n8n-gitea b506f0bcc3 feat: implement DoT/debuff runtime system (spec §6, AC-12, AC-13)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Add ActiveEffect, EffectType types to game.ts; activeEffects + effectiveArmor on EnemyState
- Add SpellOnHitEffect + onHitEffect field to SpellDefinition
- Wire onHitEffect to fire (burn), death (curse), lightning (armor_corrode), frost (freeze), soul (bypassArmor burn)
- Add applyOnHitEffect() — applies on-hit effect on successful spell hit (spec §6.2)
- Add processDoTPhase() — ticks all active effects after weapon/golem attacks (spec §6.3)
- Add bypassArmor/bypassBarrier support in applyEnemyDefenses() (AC-13)
- Export standalone applyEnemyDefenses from combat-tick.ts for DoT pipeline
- Split DoT runtime into separate dot-runtime.ts (135 lines) to keep combat-actions.ts under 400 lines
- Update all enemy generation sites with activeEffects/effectiveArmor defaults
- Fix test helpers for new required fields

All 921 tests pass (45 test files)
2026-06-03 18:38:01 +02:00
n8n-gitea feae6b468d fix: update AGENTS.md and specs for incursion day, elemental matchups, golem count, and descent mechanics
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
2026-06-03 11:54:40 +02:00
n8n-gitea 3383aedd2f fix: refactor enchanter and fabricator e2e tests
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
Enchanter test:
- Use data-testid selectors for debug buttons
- Add waitForBridge pattern
- Switch baseURL to localhost:3000

Fabricator test:
- Use data-testid selectors for all debug buttons (attunements, elements, disciplines, materials)
- Activate discipline via toggle button before adding XP
- Unlock recipes via discipline XP + store unlockRecipes
- Replace waitForTimeout with runTicks for crafting (instant tick-based waiting)
- Add ticksForHours helper for deterministic craft completion
- Verify each craft completed via store check instead of currentAction polling
- Remove direct store manipulation for attunement/element unlock (use debug UI buttons)
2026-06-02 16:39:33 +02:00
n8n-gitea e95a378731 fix: activate discipline before adding XP in e2e test
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
- Disciplines section starts collapsed: click header to expand
- Raw Mana Mastery must be activated before XP can be added (handleAddXP bails if discipline not in store)
- Also needed because debugBridge changes require a fresh build (dev server was stale)
2026-06-02 16:00:28 +02:00
n8n-gitea 0e7ff203b6 fix: improve combat-happy-path e2e test reliability and speed
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
- Add data-testid attributes to debug tab buttons (Fill Mana, +10K, +1K, discipline rows)
- Add runTicks(n) to debugBridge for fast-forwarding game ticks in E2E tests
- Fix Step 2: use data-testid selectors instead of fragile DOM traversal for discipline buttons
- Fix Step 4: replace 120s waitForTimeout with runTicks(6000) for deterministic combat
- Fix Step 5: replace 60s waitForTimeout with runTicks(3000)
- Fix Step 6: verify floor decrements after each Climb Down click using waitForFunction
- Fix Step 7: verify Exit Spire button visibility is gated on floor 1
- Remove leftover debug logging (btnInfo DOM inspection)
2026-06-02 15:46:28 +02:00