diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt
index 52e6191..47ac179 100644
--- a/docs/circular-deps.txt
+++ b/docs/circular-deps.txt
@@ -1,4 +1,4 @@
# Circular Dependencies
-Generated: 2026-05-29T23:43:49.944Z
+Generated: 2026-05-30T08:40:53.794Z
No circular dependencies found. ✅
diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json
index e108d10..b819c0d 100644
--- a/docs/dependency-graph.json
+++ b/docs/dependency-graph.json
@@ -1,6 +1,6 @@
{
"_meta": {
- "generated": "2026-05-29T23:43:46.156Z",
+ "generated": "2026-05-30T08:40:52.033Z",
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
},
diff --git a/docs/project-structure.txt b/docs/project-structure.txt
index 78596cc..d983f7a 100644
--- a/docs/project-structure.txt
+++ b/docs/project-structure.txt
@@ -14,6 +14,8 @@ Mana-Loop/
│ ├── circular-deps.txt
│ ├── dependency-graph.json
│ └── project-structure.txt
+├── e2e/
+│ └── playtest.spec.ts
├── playwright-report/
│ ├── data/
│ │ ├── 1513ea5b9ea5985996f67ca36f2bc4d34add51f1.webm
@@ -408,6 +410,10 @@ Mana-Loop/
│ └── test/
│ └── setup.ts
├── test-results/
+│ ├── playtest-Mana-Loop---Compr-0eb11--crash-with-React-error-185-chromium/
+│ │ ├── error-context.md
+│ │ ├── test-failed-1.png
+│ │ └── video.webm
│ └── .last-run.json
├── .dockerignore
├── .gitignore
diff --git a/src/app/components/LeftPanel.tsx b/src/app/components/LeftPanel.tsx
index 36cd009..dceff08 100644
--- a/src/app/components/LeftPanel.tsx
+++ b/src/app/components/LeftPanel.tsx
@@ -58,7 +58,7 @@ export function LeftPanel() {
const maxMana = computeTotalMaxMana({ skills: {}, prestigeUpgrades, skillUpgrades: {}, skillTiers: {}, equippedInstances, equipmentInstances }, upgradeEffects);
const baseRegen = computeTotalRegen({ skills: {}, prestigeUpgrades, skillUpgrades: {}, skillTiers: {}, equippedInstances, equipmentInstances }, upgradeEffects);
const clickMana = computeTotalClickMana({ skills: {}, skillUpgrades: {}, skillTiers: {}, equippedInstances, equipmentInstances }, upgradeEffects);
- const meditationMultiplier = getMeditationBonus(meditateTicks, {}, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus);
+ const meditationMultiplier = getMeditationBonus(meditateTicks, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus);
const incursionStrength = getIncursionStrength(useGameStore((s) => s.day), useGameStore((s) => s.hour));
const effectiveRegen = baseRegen * (1 - incursionStrength) * meditationMultiplier;
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 4be3002..a57f82f 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -91,7 +91,7 @@ function useGameDerivedStats() {
}, upgradeEffects, disciplineEffects);
const clickMana = computeClickMana({}, disciplineEffects);
- const meditationMultiplier = getMeditationBonus(meditateTicks, {}, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus);
+ const meditationMultiplier = getMeditationBonus(meditateTicks, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus);
const incursionStrength = getIncursionStrength(day, hour);
const effectiveRegenWithSpecials = baseRegen * (1 - incursionStrength);
diff --git a/src/components/game/tabs/SpireSummaryTab.tsx b/src/components/game/tabs/SpireSummaryTab.tsx
index 7ba4357..74f938b 100644
--- a/src/components/game/tabs/SpireSummaryTab.tsx
+++ b/src/components/game/tabs/SpireSummaryTab.tsx
@@ -7,12 +7,11 @@ import { ELEMENT_OPPOSITES, FLOOR_ELEM_CYCLE } from '@/lib/game/constants';
import { getGuardianForFloor, getAllGuardianFloors } from '@/lib/game/data/guardian-encounters';
import type { GuardianDef } from '@/lib/game/types';
import { Card, CardContent } from '@/components/ui/card';
-import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { ScrollArea } from '@/components/ui/scroll-area';
import { SectionHeader } from '@/components/ui/section-header';
import { DebugName } from '@/components/game/debug/debug-context';
-import { Mountain } from 'lucide-react';
+
// ─── Guardian Data ────────────────────────────────────────────────────────────
@@ -364,17 +363,6 @@ export function SpireSummaryTab() {
insight={insight}
/>
-
-
-
-
{nextGuardianData && nextGuardian && (
)}
diff --git a/src/lib/game/hooks/useGameDerived.ts b/src/lib/game/hooks/useGameDerived.ts
index 1ed65e9..c6f4bf6 100644
--- a/src/lib/game/hooks/useGameDerived.ts
+++ b/src/lib/game/hooks/useGameDerived.ts
@@ -39,8 +39,8 @@ export function useManaStats() {
);
const maxMana = useMemo(
- () => computeMaxMana({ prestigeUpgrades }, upgradeEffects),
- [prestigeUpgrades, upgradeEffects]
+ () => computeMaxMana({ prestigeUpgrades }, upgradeEffects, disciplineEffects),
+ [prestigeUpgrades, upgradeEffects, disciplineEffects]
);
const baseRegen = useMemo(
@@ -56,7 +56,7 @@ export function useManaStats() {
const disciplineEffects = computeDisciplineEffects();
const meditationCap = 5.0 + disciplineEffects.meditationCapBonus;
const meditationMultiplier = useMemo(
- () => getMeditationBonus(meditateTicks, {}, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus),
+ () => getMeditationBonus(meditateTicks, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus),
[meditateTicks, upgradeEffects.meditationEfficiency, disciplineEffects.meditationCapBonus]
);