Files
Mana-Loop/docs/project-structure.txt
T
n8n-gitea 4b7aa82953
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
feat(golemancy): Phase 1 - Component-based construction system data definitions
- 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

458 lines
22 KiB
Plaintext

Mana-Loop/
├── .gitea/
│ └── workflows/
│ └── docker-build.yaml
├── .husky/
│ ├── scripts/
│ │ ├── check-file-size.js
│ │ ├── generate-dependency-graph.js
│ │ ├── generate-project-tree.js
│ │ └── run-tests.sh
│ ├── post-merge
│ └── pre-commit
├── docs/
│ ├── specs/
│ │ ├── attunements/
│ │ │ ├── enchanter/
│ │ │ │ ├── systems/
│ │ │ │ │ └── enchanting-spec.md
│ │ │ │ └── enchanter-spec.md
│ │ │ ├── fabricator/
│ │ │ │ ├── systems/
│ │ │ │ │ ├── golemancy-spec.md
│ │ │ │ │ └── item-fabrication-spec.md
│ │ │ │ └── fabricator-spec.md
│ │ │ ├── invoker/
│ │ │ │ ├── systems/
│ │ │ │ │ └── pact-system-spec.md
│ │ │ │ └── invoker-spec.md
│ │ │ └── attunement-system-spec.md
│ │ ├── mana-conversion-spec.md
│ │ ├── spire-climbing-spec.md
│ │ └── spire-combat-spec.md
│ ├── GAME_BRIEFING.md
│ ├── circular-deps.txt
│ ├── dependency-graph.json
│ └── project-structure.txt
├── e2e/
│ ├── combat-happy-path.spec.ts
│ ├── enchanter-happy-path.spec.ts
│ ├── fabricator-happy-path.spec.ts
│ └── playtest.spec.ts
├── public/
│ ├── fonts/
│ │ ├── GeistMonoVF.woff
│ │ └── GeistVF.woff
│ ├── logo.svg
│ └── robots.txt
├── src/
│ ├── app/
│ │ ├── components/
│ │ │ ├── GameOverScreen.tsx
│ │ │ ├── GrimoireTab.tsx
│ │ │ └── LeftPanel.tsx
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── components/
│ │ ├── game/
│ │ │ ├── LootInventory/
│ │ │ │ ├── BlueprintsSection.tsx
│ │ │ │ ├── EquipmentItem.tsx
│ │ │ │ ├── EssenceItem.tsx
│ │ │ │ ├── MaterialItem.tsx
│ │ │ │ ├── icons.ts
│ │ │ │ └── types.ts
│ │ │ ├── crafting/
│ │ │ │ ├── EnchantmentDesigner/
│ │ │ │ │ ├── DesignForm.tsx
│ │ │ │ │ ├── EffectSelector.tsx
│ │ │ │ │ ├── EquipmentTypeSelector.tsx
│ │ │ │ │ ├── SavedDesigns.tsx
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── EnchantmentApplier.tsx
│ │ │ │ ├── EnchantmentDesigner.tsx
│ │ │ │ ├── EnchantmentPreparer.tsx
│ │ │ │ ├── EquipmentCrafter.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── debug/
│ │ │ │ ├── AttunementDebug.tsx
│ │ │ │ ├── ElementDebug.tsx
│ │ │ │ ├── GameStateDebug.tsx
│ │ │ │ ├── GolemDebug.tsx
│ │ │ │ ├── PactDebug.tsx
│ │ │ │ ├── debug-context.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── tabs/
│ │ │ │ ├── CraftingTab/
│ │ │ │ │ ├── EnchanterSubTab.tsx
│ │ │ │ │ ├── FabricatorSubTab.tsx
│ │ │ │ │ └── MaterialRecipeCard.tsx
│ │ │ │ ├── DebugTab/
│ │ │ │ │ ├── AchievementDebugSection.tsx
│ │ │ │ │ ├── AttunementDebugSection.tsx
│ │ │ │ │ ├── DisciplineDebugSection.tsx
│ │ │ │ │ ├── ElementDebugSection.tsx
│ │ │ │ │ ├── GameStateDebugSection.tsx
│ │ │ │ │ ├── GolemDebugSection.tsx
│ │ │ │ │ ├── PactDebugSection.tsx
│ │ │ │ │ └── SpireDebugSection.tsx
│ │ │ │ ├── EquipmentTab/
│ │ │ │ │ ├── EquipmentEffectsSummary.tsx
│ │ │ │ │ ├── EquipmentSlotGrid.tsx
│ │ │ │ │ └── InventoryList.tsx
│ │ │ │ ├── SpireCombatPage/
│ │ │ │ │ ├── RoomDisplay.tsx
│ │ │ │ │ ├── SpireActivityLog.tsx
│ │ │ │ │ ├── SpireCombatControls.tsx
│ │ │ │ │ ├── SpireCombatPage.tsx
│ │ │ │ │ ├── SpireHeader.tsx
│ │ │ │ │ ├── SpireManaDisplay.tsx
│ │ │ │ │ └── index.ts
│ │ │ │ ├── StatsTab/
│ │ │ │ │ ├── CombatStatsSection.tsx
│ │ │ │ │ ├── DisciplineStatsSection.tsx
│ │ │ │ │ ├── ElementStatsSection.tsx
│ │ │ │ │ ├── LoopStatsSection.tsx
│ │ │ │ │ ├── ManaStatsSection.tsx
│ │ │ │ │ ├── PactStatusSection.tsx
│ │ │ │ │ └── StudyStatsSection.tsx
│ │ │ │ ├── golemancy/
│ │ │ │ │ ├── ActiveGolemsPanel.tsx
│ │ │ │ │ ├── GolemDesignBuilder.tsx
│ │ │ │ │ ├── GolemLoadoutPanel.tsx
│ │ │ │ │ ├── GolemancyComponents.test.ts
│ │ │ │ │ ├── GolemancySharedComponents.tsx
│ │ │ │ │ ├── golemancy-components.test.ts
│ │ │ │ │ ├── golemancy-utils.test.ts
│ │ │ │ │ ├── golemancy-utils.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── AchievementsTab.tsx
│ │ │ │ ├── ActivityLog.tsx
│ │ │ │ ├── AttunementsTab.test.ts
│ │ │ │ ├── AttunementsTab.tsx
│ │ │ │ ├── CraftingTab.test.ts
│ │ │ │ ├── CraftingTab.tsx
│ │ │ │ ├── DebugTab.test.ts
│ │ │ │ ├── DebugTab.tsx
│ │ │ │ ├── DisciplineCard.tsx
│ │ │ │ ├── DisciplinesTab.tsx
│ │ │ │ ├── ElementalSubtab.tsx
│ │ │ │ ├── EquipmentTab.test.ts
│ │ │ │ ├── EquipmentTab.tsx
│ │ │ │ ├── GolemancyTab.tsx
│ │ │ │ ├── GuardianPactsTab.test.ts
│ │ │ │ ├── GuardianPactsTab.tsx
│ │ │ │ ├── PrestigeTab.test.ts
│ │ │ │ ├── PrestigeTab.tsx
│ │ │ │ ├── SpellsTab.tsx
│ │ │ │ ├── SpireSummaryTab.helpers.tsx
│ │ │ │ ├── SpireSummaryTab.test.ts
│ │ │ │ ├── SpireSummaryTab.tsx
│ │ │ │ ├── StatsTab.tsx
│ │ │ │ ├── disciplines-utils.ts
│ │ │ │ ├── guardian-pacts-components.tsx
│ │ │ │ └── index.ts
│ │ │ ├── ActionButtons.tsx
│ │ │ ├── ActivityLogPanel.tsx
│ │ │ ├── AttunementStatus.tsx
│ │ │ ├── GameToast.tsx
│ │ │ ├── ManaDisplay.tsx
│ │ │ ├── TimeDisplay.tsx
│ │ │ ├── UpgradeDialog.tsx
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── ui/
│ │ │ ├── action-button.tsx
│ │ │ ├── alert-dialog.tsx
│ │ │ ├── badge.tsx
│ │ │ ├── button.tsx
│ │ │ ├── card.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── element-badge.tsx
│ │ │ ├── game-card.tsx
│ │ │ ├── index.ts
│ │ │ ├── input.tsx
│ │ │ ├── label.tsx
│ │ │ ├── mana-bar.tsx
│ │ │ ├── progress.tsx
│ │ │ ├── scroll-area.tsx
│ │ │ ├── section-header.tsx
│ │ │ ├── select.tsx
│ │ │ ├── separator.tsx
│ │ │ ├── sheet.tsx
│ │ │ ├── skeleton.tsx
│ │ │ ├── stat-row.tsx
│ │ │ ├── stepper.tsx
│ │ │ ├── switch.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── toast.tsx
│ │ │ ├── toaster.tsx
│ │ │ ├── toggle.tsx
│ │ │ ├── tooltip-info.tsx
│ │ │ ├── tooltip.tsx
│ │ │ ├── ui-components.test.tsx
│ │ │ └── value-display.tsx
│ │ └── ErrorBoundary.tsx
│ ├── hooks/
│ │ ├── use-mobile.ts
│ │ └── use-toast.ts
│ ├── lib/
│ │ ├── game/
│ │ │ ├── __tests__/
│ │ │ │ ├── achievements.test.ts
│ │ │ │ ├── activity-log.test.ts
│ │ │ │ ├── bug-fixes.test.ts
│ │ │ │ ├── combat-actions.test.ts
│ │ │ │ ├── combat-utils.test.ts
│ │ │ │ ├── computed-stats.test.ts
│ │ │ │ ├── crafting-utils-basic.test.ts
│ │ │ │ ├── crafting-utils-equipment.test.ts
│ │ │ │ ├── crafting-utils-recipe.test.ts
│ │ │ │ ├── crafting-utils-time.test.ts
│ │ │ │ ├── cross-module-combat-meditation.test.ts
│ │ │ │ ├── cross-module-helpers.ts
│ │ │ │ ├── cross-module-lifecycle-consistency.test.ts
│ │ │ │ ├── cross-module-prestige-discipline.test.ts
│ │ │ │ ├── discipline-math.test.ts
│ │ │ │ ├── discipline-prerequisites.test.ts
│ │ │ │ ├── discipline-reactivate-bug.test.ts
│ │ │ │ ├── enemy-barrier-utils.test.ts
│ │ │ │ ├── enemy-defenses.test.ts
│ │ │ │ ├── enemy-generator.test.ts
│ │ │ │ ├── enemy-utils.test.ts
│ │ │ │ ├── floor-utils.test.ts
│ │ │ │ ├── floor-utils.upgraded.test.ts
│ │ │ │ ├── formatting.test.ts
│ │ │ │ ├── guardian-names.test.ts
│ │ │ │ ├── mana-utils.test.ts
│ │ │ │ ├── melee-auto-attack.test.ts
│ │ │ │ ├── pact-utils.test.ts
│ │ │ │ ├── persistence.test.ts
│ │ │ │ ├── regression-fixes.test.ts
│ │ │ │ ├── room-utils-floor-state.test.ts
│ │ │ │ ├── room-utils.test.ts
│ │ │ │ ├── spire-utils.test.ts
│ │ │ │ ├── store-actions-combat-prestige.test.ts
│ │ │ │ ├── store-actions-discipline.test.ts
│ │ │ │ ├── store-actions-mana.test.ts
│ │ │ │ ├── store-actions.test.ts
│ │ │ │ └── tick-integration.test.ts
│ │ │ ├── constants/
│ │ │ │ ├── spells-modules/
│ │ │ │ │ ├── advanced-spells.ts
│ │ │ │ │ ├── aoe-spells.ts
│ │ │ │ │ ├── basic-elemental-spells.ts
│ │ │ │ │ ├── blackflame-spells.ts
│ │ │ │ │ ├── compound-spells.ts
│ │ │ │ │ ├── enchantment-spells.ts
│ │ │ │ │ ├── frost-spells.ts
│ │ │ │ │ ├── legendary-spells.ts
│ │ │ │ │ ├── lightning-spells.ts
│ │ │ │ │ ├── master-spells.ts
│ │ │ │ │ ├── miasma-spells.ts
│ │ │ │ │ ├── plasma-spells.ts
│ │ │ │ │ ├── radiantflames-spells.ts
│ │ │ │ │ ├── raw-spells.ts
│ │ │ │ │ ├── shadowglass-spells.ts
│ │ │ │ │ ├── soul-spells.ts
│ │ │ │ │ ├── time-spells.ts
│ │ │ │ │ └── utility-spells.ts
│ │ │ │ ├── core.ts
│ │ │ │ ├── elements.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── prestige.ts
│ │ │ │ ├── rooms.ts
│ │ │ │ └── spells.ts
│ │ │ ├── crafting-actions/
│ │ │ │ ├── application-actions.ts
│ │ │ │ ├── computed-getters.ts
│ │ │ │ ├── crafting-equipment-actions.ts
│ │ │ │ ├── crafting-material-actions.ts
│ │ │ │ ├── design-actions.ts
│ │ │ │ ├── disenchant-actions.ts
│ │ │ │ ├── equipment-actions.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── preparation-actions.ts
│ │ │ ├── data/
│ │ │ │ ├── disciplines/
│ │ │ │ │ ├── base.ts
│ │ │ │ │ ├── elemental-regen-advanced.ts
│ │ │ │ │ ├── elemental-regen.ts
│ │ │ │ │ ├── elemental.ts
│ │ │ │ │ ├── enchanter-special.ts
│ │ │ │ │ ├── enchanter-spells.ts
│ │ │ │ │ ├── enchanter-utility.ts
│ │ │ │ │ ├── enchanter.ts
│ │ │ │ │ ├── fabricator.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── invoker.ts
│ │ │ │ ├── enchantments/
│ │ │ │ │ ├── spell-effects/
│ │ │ │ │ │ ├── basic-spells.ts
│ │ │ │ │ │ ├── blackflame-spells.ts
│ │ │ │ │ │ ├── exotic-new-spells.ts
│ │ │ │ │ │ ├── frost-spells.ts
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── legendary-spells.ts
│ │ │ │ │ │ ├── lightning-spells.ts
│ │ │ │ │ │ ├── metal-spells.ts
│ │ │ │ │ │ ├── miasma-spells.ts
│ │ │ │ │ │ ├── radiantflames-spells.ts
│ │ │ │ │ │ ├── sand-spells.ts
│ │ │ │ │ │ ├── shadowglass-spells.ts
│ │ │ │ │ │ ├── tier2-spells.ts
│ │ │ │ │ │ ├── tier3-spells.ts
│ │ │ │ │ │ └── types.ts
│ │ │ │ │ ├── combat-effects.ts
│ │ │ │ │ ├── defense-effects.ts
│ │ │ │ │ ├── elemental-effects.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── mana-effects.ts
│ │ │ │ │ ├── special-effects.ts
│ │ │ │ │ └── utility-effects.ts
│ │ │ │ ├── equipment/
│ │ │ │ │ ├── accessories.ts
│ │ │ │ │ ├── body.ts
│ │ │ │ │ ├── casters.ts
│ │ │ │ │ ├── catalysts.ts
│ │ │ │ │ ├── equipment-types-data.ts
│ │ │ │ │ ├── feet.ts
│ │ │ │ │ ├── hands.ts
│ │ │ │ │ ├── head.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── shields.ts
│ │ │ │ │ ├── swords.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── golems/
│ │ │ │ │ ├── base-golems.ts
│ │ │ │ │ ├── cores.ts
│ │ │ │ │ ├── elemental-golems.ts
│ │ │ │ │ ├── frames.ts
│ │ │ │ │ ├── golemEnchantments.ts
│ │ │ │ │ ├── golems-data.ts
│ │ │ │ │ ├── hybrid-golems.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── mindCircuits.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── achievements.ts
│ │ │ │ ├── attunements.ts
│ │ │ │ ├── conversion-costs.ts
│ │ │ │ ├── crafting-recipes.ts
│ │ │ │ ├── enchantment-effects.ts
│ │ │ │ ├── enchantment-types.ts
│ │ │ │ ├── fabricator-material-recipes.ts
│ │ │ │ ├── fabricator-physical-recipes.ts
│ │ │ │ ├── fabricator-recipe-types.ts
│ │ │ │ ├── fabricator-recipes.ts
│ │ │ │ ├── fabricator-wizard-recipes.ts
│ │ │ │ ├── guardian-data.ts
│ │ │ │ ├── guardian-encounters.ts
│ │ │ │ └── loot-drops.ts
│ │ │ ├── effects/
│ │ │ │ ├── discipline-effects.ts
│ │ │ │ ├── dynamic-compute.ts
│ │ │ │ ├── special-effects.ts
│ │ │ │ ├── upgrade-effects.ts
│ │ │ │ └── upgrade-effects.types.ts
│ │ │ ├── hooks/
│ │ │ │ └── useGameDerived.ts
│ │ │ ├── stores/
│ │ │ │ ├── pipelines/
│ │ │ │ │ ├── combat-tick.ts
│ │ │ │ │ ├── enchanting-tick.ts
│ │ │ │ │ ├── equipment-crafting.ts
│ │ │ │ │ ├── golem-combat.ts
│ │ │ │ │ └── pact-ritual.ts
│ │ │ │ ├── attunementStore.ts
│ │ │ │ ├── combat-actions.ts
│ │ │ │ ├── combat-damage.ts
│ │ │ │ ├── combat-descent-actions.ts
│ │ │ │ ├── combat-state.types.ts
│ │ │ │ ├── combatStore.ts
│ │ │ │ ├── crafting-equipment-tick.ts
│ │ │ │ ├── crafting-initial-state.ts
│ │ │ │ ├── craftingStore.ts
│ │ │ │ ├── craftingStore.types.ts
│ │ │ │ ├── debugBridge.ts
│ │ │ │ ├── discipline-slice.ts
│ │ │ │ ├── dot-runtime.ts
│ │ │ │ ├── gameActions.ts
│ │ │ │ ├── gameHooks.ts
│ │ │ │ ├── gameLoopActions.ts
│ │ │ │ ├── gameStore.ts
│ │ │ │ ├── gameStore.types.ts
│ │ │ │ ├── golem-combat-actions.ts
│ │ │ │ ├── golemancy-actions.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── manaStore.ts
│ │ │ │ ├── non-combat-room-actions.ts
│ │ │ │ ├── prestigeStore.ts
│ │ │ │ ├── tick-pipeline.ts
│ │ │ │ └── uiStore.ts
│ │ │ ├── types/
│ │ │ │ ├── attunements.ts
│ │ │ │ ├── disciplines.ts
│ │ │ │ ├── elements.ts
│ │ │ │ ├── equipment.ts
│ │ │ │ ├── equipmentSlot.ts
│ │ │ │ ├── game.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── spells.ts
│ │ │ ├── utils/
│ │ │ │ ├── activity-log.ts
│ │ │ │ ├── combat-utils.ts
│ │ │ │ ├── conversion-rates.ts
│ │ │ │ ├── discipline-math.ts
│ │ │ │ ├── element-cap-bonus.ts
│ │ │ │ ├── element-distance.ts
│ │ │ │ ├── enemy-generator.ts
│ │ │ │ ├── enemy-utils.ts
│ │ │ │ ├── floor-utils.ts
│ │ │ │ ├── formatting.ts
│ │ │ │ ├── guardian-utils.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── mana-utils.ts
│ │ │ │ ├── pact-utils.ts
│ │ │ │ ├── result.ts
│ │ │ │ ├── room-utils.ts
│ │ │ │ ├── safe-persist.ts
│ │ │ │ └── spire-utils.ts
│ │ │ ├── constants.ts
│ │ │ ├── crafting-apply.ts
│ │ │ ├── crafting-attunements.ts
│ │ │ ├── crafting-design.ts
│ │ │ ├── crafting-equipment.ts
│ │ │ ├── crafting-fabricator.ts
│ │ │ ├── crafting-loot.ts
│ │ │ ├── crafting-prep.ts
│ │ │ ├── crafting-utils.ts
│ │ │ ├── effects.ts
│ │ │ └── types.ts
│ │ └── utils.ts
│ └── test/
│ └── setup.ts
├── .dockerignore
├── .gitignore
├── AGENTS.md
├── Caddyfile
├── Dockerfile
├── README.md
├── bun.lock
├── bunfig.toml
├── components.json
├── docker-compose.yml
├── eslint.config.mjs
├── next.config.ts
├── package-lock.json
├── package.json
├── playwright.config.ts
├── postcss.config.mjs
├── scorecard.png
├── tailwind.config.ts
├── tsconfig.json
└── vitest.config.ts