Files
Mana-Loop/docs/project-structure.txt
T
n8n-gitea 2130d30133
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m33s
fix: resolve mana conversion, Spire/Grimoire tab errors, and legacy store references
- Fix mana conversion to deduct from regen instead of mana pool (resolves player stuck at 1 mana below cap)
- Fix Spire Tab error by removing unused legacy import (store-modules/enemy-utils)
- Fix Grimoire Tab error by adding Array.isArray check for effects.map
- Move utility functions from legacy store-modules to utils/ to eliminate legacy dependencies
- Add regression test for mana conversion fix
- Update SpellsTab.tsx imports to use utils instead of legacy stores
2026-05-08 13:48:53 +02:00

494 lines
22 KiB
Plaintext

Mana-Loop/
├── .gitea/
│ └── workflows/
│ └── docker-build.yaml
├── .husky/
│ ├── scripts/
│ │ ├── check-file-size.js
│ │ └── generate-project-tree.js
│ ├── post-merge
│ └── pre-commit
├── db/
│ └── custom.db
├── docs/
│ ├── GAME_BRIEFING.md
│ ├── SPEC-mana-conversion-fix.md
│ ├── context-grimoire-tab-fix.md
│ ├── context-legacy-store-cleanup.md
│ ├── context-mana-conversion-fix.md
│ ├── context-spire-tab-fix.md
│ ├── project-structure.txt
│ └── skills.md
├── download/
│ └── README.md
├── examples/
│ └── websocket/
│ ├── frontend.tsx
│ └── server.ts
├── mini-services/
│ └── .gitkeep
├── prisma/
│ └── schema.prisma
├── public/
│ ├── fonts/
│ │ ├── GeistMonoVF.woff
│ │ └── GeistVF.woff
│ ├── logo.svg
│ └── robots.txt
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ └── route.ts
│ │ ├── components/
│ │ │ ├── GameOverScreen.tsx
│ │ │ └── LeftPanel.tsx
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── components/
│ │ ├── game/
│ │ │ ├── GameContext/
│ │ │ │ ├── Provider.tsx
│ │ │ │ ├── context-create.ts
│ │ │ │ ├── hooks.ts
│ │ │ │ └── types.ts
│ │ │ ├── LootInventory/
│ │ │ │ ├── BlueprintsSection.tsx
│ │ │ │ ├── EquipmentItem.tsx
│ │ │ │ ├── EssenceItem.tsx
│ │ │ │ ├── LootInventoryDisplay.tsx
│ │ │ │ ├── MaterialItem.tsx
│ │ │ │ ├── icons.ts
│ │ │ │ ├── index.tsx
│ │ │ │ └── types.ts
│ │ │ ├── SkillsTab/
│ │ │ │ ├── SkillCategory.tsx
│ │ │ │ ├── SkillRow.tsx
│ │ │ │ ├── SkillStudyProgress.tsx
│ │ │ │ ├── SkillUpgradeDialog.tsx
│ │ │ │ └── skills-utils.ts
│ │ │ ├── StatsTab/
│ │ │ │ ├── ActiveUpgradesSection.tsx
│ │ │ │ ├── CombatStatsSection.tsx
│ │ │ │ ├── ElementStatsSection.tsx
│ │ │ │ ├── LoopStatsSection.tsx
│ │ │ │ ├── ManaStatsSection.tsx
│ │ │ │ ├── PactStatusSection.tsx
│ │ │ │ └── StudyStatsSection.tsx
│ │ │ ├── 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
│ │ │ │ ├── SkillDebug.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── layout/
│ │ │ │ ├── Header.tsx
│ │ │ │ └── TabBar.tsx
│ │ │ ├── shared/
│ │ │ │ ├── MemorySlotPicker.tsx
│ │ │ │ ├── StudyProgress.tsx
│ │ │ │ └── UpgradeDialog.tsx
│ │ │ ├── stats/
│ │ │ │ ├── CombatStatsSection.tsx
│ │ │ │ ├── ManaStatsSection.tsx
│ │ │ │ ├── ManaTypeBreakdown.tsx
│ │ │ │ ├── StudyStatsSection.tsx
│ │ │ │ ├── UpgradeEffectsSection.tsx
│ │ │ │ └── index.tsx
│ │ │ ├── tabs/
│ │ │ │ ├── AchievementsTab.tsx
│ │ │ │ ├── ActivityLog.tsx
│ │ │ │ ├── AttunementsTab.tsx
│ │ │ │ ├── CategorySkillsList.tsx
│ │ │ │ ├── CombatStatsPanel.tsx
│ │ │ │ ├── CraftingTab.tsx
│ │ │ │ ├── DebugTab.tsx
│ │ │ │ ├── EnchantmentsPanel.tsx
│ │ │ │ ├── EquipmentControls.tsx
│ │ │ │ ├── EquipmentInventory.tsx
│ │ │ │ ├── EquipmentSlotGrid.tsx
│ │ │ │ ├── EquipmentTab.tsx
│ │ │ │ ├── FloorControls.tsx
│ │ │ │ ├── GolemancyTab.tsx
│ │ │ │ ├── GuardianPanel.tsx
│ │ │ │ ├── LootTab.tsx
│ │ │ │ ├── MilestoneProgress.tsx
│ │ │ │ ├── PrestigeTab.tsx
│ │ │ │ ├── RoomDisplay.tsx
│ │ │ │ ├── SkillCategoryHeader.tsx
│ │ │ │ ├── SkillMultipliers.tsx
│ │ │ │ ├── SkillRow.tsx
│ │ │ │ ├── SpellsTab.tsx
│ │ │ │ ├── SpireHeader.tsx
│ │ │ │ ├── SpireTab.tsx
│ │ │ │ ├── StatsTab.tsx
│ │ │ │ ├── StudyProgress.tsx
│ │ │ │ ├── UpgradeDialog.tsx
│ │ │ │ └── index.ts
│ │ │ ├── AchievementsDisplay.tsx
│ │ │ ├── ActionButtons.tsx
│ │ │ ├── CalendarDisplay.tsx
│ │ │ ├── ConfirmDialog.tsx
│ │ │ ├── CraftingProgress.tsx
│ │ │ ├── GameContext.tsx
│ │ │ ├── GameToast.tsx
│ │ │ ├── ManaDisplay.tsx
│ │ │ ├── SkillsTab.tsx
│ │ │ ├── SpellsTab.tsx
│ │ │ ├── StatsTab.tsx
│ │ │ ├── StudyProgress.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
│ │ │ ├── skill-row.tsx
│ │ │ ├── stat-row.tsx
│ │ │ ├── stepper.tsx
│ │ │ ├── switch.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── toast.tsx
│ │ │ ├── toaster.tsx
│ │ │ ├── toggle.tsx
│ │ │ ├── tooltip-info.tsx
│ │ │ ├── tooltip.tsx
│ │ │ └── value-display.tsx
│ │ └── ErrorBoundary.tsx
│ ├── hooks/
│ │ ├── use-mobile.ts
│ │ └── use-toast.ts
│ └── lib/
│ ├── game/
│ │ ├── __tests__/
│ │ │ ├── skills-tests/
│ │ │ │ ├── ascension-skills.test.ts
│ │ │ │ ├── integration-and-evolution.test.ts
│ │ │ │ ├── mana-skills.test.ts
│ │ │ │ ├── prestige-upgrades.test.ts
│ │ │ │ ├── skill-prerequisites.test.ts
│ │ │ │ ├── specialized-skills.test.ts
│ │ │ │ ├── study-skills.test.ts
│ │ │ │ └── study-times.test.ts
│ │ │ ├── store-method-tests/
│ │ │ ├── bug-fixes.test.ts
│ │ │ ├── computed-stats.test.ts
│ │ │ ├── skill-system.test.ts
│ │ │ └── skills.test.ts
│ │ ├── attunements/
│ │ │ ├── data.ts
│ │ │ ├── index.ts
│ │ │ ├── types.ts
│ │ │ └── utils.ts
│ │ ├── constants/
│ │ │ ├── spells-modules/
│ │ │ │ ├── advanced-spells.ts
│ │ │ │ ├── aoe-spells.ts
│ │ │ │ ├── basic-elemental-spells.ts
│ │ │ │ ├── compound-spells.ts
│ │ │ │ ├── enchantment-spells.ts
│ │ │ │ ├── legendary-spells.ts
│ │ │ │ ├── lightning-spells.ts
│ │ │ │ ├── master-spells.ts
│ │ │ │ ├── raw-spells.ts
│ │ │ │ └── utility-spells.ts
│ │ │ ├── core.ts
│ │ │ ├── elements.ts
│ │ │ ├── guardians.ts
│ │ │ ├── index.ts
│ │ │ ├── prestige.ts
│ │ │ ├── rooms.ts
│ │ │ ├── skills.ts
│ │ │ └── spells.ts
│ │ ├── crafting-actions/
│ │ │ ├── application-actions.ts
│ │ │ ├── computed-getters.ts
│ │ │ ├── crafting-equipment-actions.ts
│ │ │ ├── design-actions.ts
│ │ │ ├── disenchant-actions.ts
│ │ │ ├── equipment-actions.ts
│ │ │ ├── index.ts
│ │ │ └── preparation-actions.ts
│ │ ├── data/
│ │ │ ├── enchantments/
│ │ │ │ ├── spell-effects/
│ │ │ │ │ ├── basic-spells.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── lightning-spells.ts
│ │ │ │ │ ├── metal-spells.ts
│ │ │ │ │ ├── sand-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
│ │ │ │ ├── feet.ts
│ │ │ │ ├── hands.ts
│ │ │ │ ├── head.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── shields.ts
│ │ │ │ ├── swords.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── golems/
│ │ │ │ ├── base-golems.ts
│ │ │ │ ├── elemental-golems.ts
│ │ │ │ ├── hybrid-golems.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── achievements.ts
│ │ │ ├── attunements.ts
│ │ │ ├── crafting-recipes.ts
│ │ │ ├── enchantment-effects.ts
│ │ │ ├── enchantment-types.ts
│ │ │ └── loot-drops.ts
│ │ ├── hooks/
│ │ │ ├── useGameDerived.ts
│ │ │ └── useSkillUpgradeSelection.ts
│ │ ├── skill-evolution-modules/
│ │ │ ├── elemental-attunement.ts
│ │ │ ├── enchanting-skills.ts
│ │ │ ├── focused-mind.ts
│ │ │ ├── guardian-skills.ts
│ │ │ ├── hybrid-skills.ts
│ │ │ ├── index.ts
│ │ │ ├── insight-harvest.ts
│ │ │ ├── invocation-skills.ts
│ │ │ ├── knowledge-retention.ts
│ │ │ ├── learning-skills.ts
│ │ │ ├── magic-skills.ts
│ │ │ ├── mana-utility-skills.ts
│ │ │ ├── mana-well-flow.ts
│ │ │ ├── quick-learner.ts
│ │ │ ├── types.ts
│ │ │ └── utils.ts
│ │ ├── skills-split-tests/
│ │ │ ├── ascension-specialized-skills.test.ts
│ │ │ ├── mana-skills.test.ts
│ │ │ ├── prerequisites-studytimes-prestige-integration.test.ts
│ │ │ └── study-skills.test.ts
│ │ ├── store/
│ │ │ ├── crafting-modules/
│ │ │ │ ├── initial-state.ts
│ │ │ │ ├── selectors.ts
│ │ │ │ ├── slice-logic.ts
│ │ │ │ ├── starting-equipment.ts
│ │ │ │ ├── tick-processors.ts
│ │ │ │ ├── types.ts
│ │ │ │ └── utils.ts
│ │ │ ├── combatSlice.ts
│ │ │ ├── computed.ts
│ │ │ ├── craftingSlice.ts
│ │ │ ├── index.ts
│ │ │ ├── manaSlice.ts
│ │ │ ├── pactSlice.ts
│ │ │ ├── prestigeSlice.ts
│ │ │ ├── skillSlice.ts
│ │ │ └── timeSlice.ts
│ │ ├── store-modules/
│ │ │ ├── {room-utils,enemy-utils,initial-state,activity-log,store-actions}/
│ │ │ ├── activity-log.ts
│ │ │ ├── computed-stats.ts
│ │ │ ├── enemy-utils.ts
│ │ │ ├── initial-state.ts
│ │ │ ├── room-utils.ts
│ │ │ ├── store-actions.ts
│ │ │ └── tick-logic.ts
│ │ ├── store-tests/
│ │ │ ├── damage-calculation.test.ts
│ │ │ ├── element-recipes.test.ts
│ │ │ ├── floor.test.ts
│ │ │ ├── formatting.test.ts
│ │ │ ├── game-constants.test.ts
│ │ │ ├── individual-skills.test.ts
│ │ │ ├── insight-meditation-incursion.test.ts
│ │ │ ├── integration.test.ts
│ │ │ ├── mana-calculation.test.ts
│ │ │ ├── skill-evolution.test.ts
│ │ │ ├── skill-requirements.test.ts
│ │ │ ├── spell-cost.test.ts
│ │ │ ├── study-speed.test.ts
│ │ │ └── test-utils.ts
│ │ ├── stores/
│ │ │ ├── __tests__/
│ │ │ │ ├── archive/
│ │ │ │ │ ├── store-methods.test.ts
│ │ │ │ │ └── stores.test.ts
│ │ │ │ ├── combat-store-tests/
│ │ │ │ ├── index-tests/
│ │ │ │ │ ├── combat-calculations.test.ts
│ │ │ │ │ ├── definitions.test.ts
│ │ │ │ │ ├── mana-calculations.test.ts
│ │ │ │ │ ├── meditation-insight-incursion.test.ts
│ │ │ │ │ ├── spell-cost.test.ts
│ │ │ │ │ ├── study-speed.test.ts
│ │ │ │ │ └── utility-functions.test.ts
│ │ │ │ ├── mana-store-tests/
│ │ │ │ ├── prestige-store-tests/
│ │ │ │ ├── store-method-tests/
│ │ │ │ │ ├── combat-store.test.ts
│ │ │ │ │ ├── mana-store.test.ts
│ │ │ │ │ ├── prestige-store.test.ts
│ │ │ │ │ ├── skill-store.test.ts
│ │ │ │ │ └── ui-store.test.ts
│ │ │ │ ├── stores-split-tests/
│ │ │ │ ├── stores-tests/
│ │ │ │ │ ├── damage-calculation.test.ts
│ │ │ │ │ ├── floor.test.ts
│ │ │ │ │ ├── formatting.test.ts
│ │ │ │ │ ├── guardians.test.ts
│ │ │ │ │ ├── incursion.test.ts
│ │ │ │ │ ├── insight-calculation.test.ts
│ │ │ │ │ ├── mana-calculation.test.ts
│ │ │ │ │ ├── meditation.test.ts
│ │ │ │ │ ├── prestige-upgrades.test.ts
│ │ │ │ │ ├── skill-definitions.test.ts
│ │ │ │ │ ├── spell-cost.test.ts
│ │ │ │ │ ├── spell-definitions.test.ts
│ │ │ │ │ └── study-speed.test.ts
│ │ │ │ ├── ui-store-tests/
│ │ │ │ ├── equipment.test.ts
│ │ │ │ ├── mana-conversion-fix.test.ts
│ │ │ │ ├── mana.test.ts
│ │ │ │ ├── regen.test.ts
│ │ │ │ ├── skill.test.ts
│ │ │ │ └── spell-cost.test.ts
│ │ │ ├── attunementStore.ts
│ │ │ ├── combat-actions.ts
│ │ │ ├── combatStore.ts
│ │ │ ├── craftingStore.ts
│ │ │ ├── gameActions.ts
│ │ │ ├── gameHooks.ts
│ │ │ ├── gameLoopActions.ts
│ │ │ ├── gameStore.ts
│ │ │ ├── index.test.ts
│ │ │ ├── index.ts
│ │ │ ├── manaStore.ts
│ │ │ ├── prestigeStore.ts
│ │ │ ├── skillStore.ts
│ │ │ └── uiStore.ts
│ │ ├── stores-split-tests/
│ │ │ ├── combat-store.test.ts
│ │ │ ├── integration.test.ts
│ │ │ ├── mana-store.test.ts
│ │ │ ├── prestige-store.test.ts
│ │ │ ├── skill-store.test.ts
│ │ │ └── ui-store.test.ts
│ │ ├── types/
│ │ │ ├── attunements.ts
│ │ │ ├── elements.ts
│ │ │ ├── equipment.ts
│ │ │ ├── game.ts
│ │ │ ├── index.ts
│ │ │ ├── skills.ts
│ │ │ └── spells.ts
│ │ ├── utils/
│ │ │ ├── activity-log.ts
│ │ │ ├── combat-utils.ts
│ │ │ ├── enemy-utils.ts
│ │ │ ├── floor-utils.ts
│ │ │ ├── formatting.ts
│ │ │ ├── index.ts
│ │ │ ├── mana-utils.ts
│ │ │ └── room-utils.ts
│ │ ├── computed-stats.ts
│ │ ├── constants.ts
│ │ ├── crafting-apply.ts
│ │ ├── crafting-attunements.ts
│ │ ├── crafting-design.ts
│ │ ├── crafting-equipment.ts
│ │ ├── crafting-loot.ts
│ │ ├── crafting-prep.ts
│ │ ├── crafting-slice.ts
│ │ ├── crafting-utils.ts
│ │ ├── debug-context.tsx
│ │ ├── dynamic-compute.ts
│ │ ├── effects.ts
│ │ ├── effects.ts.fix
│ │ ├── formatting.ts
│ │ ├── navigation-slice.ts
│ │ ├── skill-evolution.ts
│ │ ├── skills.test.ts
│ │ ├── special-effects.ts
│ │ ├── store.test.ts
│ │ ├── store.ts
│ │ ├── stores.test.ts
│ │ ├── study-slice.ts
│ │ ├── types.ts
│ │ ├── upgrade-effects.ts
│ │ └── upgrade-effects.types.ts
│ ├── db.ts
│ └── utils.ts
├── .accesslog
├── .dockerignore
├── .gitignore
├── 3001
├── AGENTS.md
├── CLAUDE.md
├── Caddyfile
├── Dockerfile
├── README.md
├── add_debugname.py
├── bun.lock
├── bunfig.toml
├── components.json
├── docker-compose.yml
├── eslint.config.mjs
├── fix_remaining.py
├── fix_tabs.py
├── fix_tabs2.py
├── next.config.ts
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── tailwind.config.ts
├── tsconfig-check.json
├── tsconfig-leftpanel.json
├── tsconfig-lp.json
├── tsconfig.json
└── vitest.config.ts