diff --git a/.gitignore b/.gitignore index 734cb9e..c05605a 100755 --- a/.gitignore +++ b/.gitignore @@ -48,4 +48,5 @@ prompt server.log # Skills directory -/.zscripts/ \ No newline at end of file +/.zscripts/ +.gitnexus diff --git a/AGENTS.md b/AGENTS.md index 5ff78bd..c727564 100755 --- a/AGENTS.md +++ b/AGENTS.md @@ -600,3 +600,47 @@ Base Elements (7) → Compound (3) → Exotic (3) ↓ Utility (1) ← Special attunement-based ``` + + +# GitNexus — Code Intelligence + +This project is indexed by GitNexus as **Mana-Loop** (3795 symbols, 6409 relationships, 146 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. + +> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. + +## Always Do + +- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `gitnexus_impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user. +- **MUST run `gitnexus_detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. +- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits. +- When exploring unfamiliar code, use `gitnexus_query({query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance. +- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `gitnexus_context({name: "symbolName"})`. + +## Never Do + +- NEVER edit a function, class, or method without first running `gitnexus_impact` on it. +- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis. +- NEVER rename symbols with find-and-replace — use `gitnexus_rename` which understands the call graph. +- NEVER commit changes without running `gitnexus_detect_changes()` to check affected scope. + +## Resources + +| Resource | Use for | +|----------|---------| +| `gitnexus://repo/Mana-Loop/context` | Codebase overview, check index freshness | +| `gitnexus://repo/Mana-Loop/clusters` | All functional areas | +| `gitnexus://repo/Mana-Loop/processes` | All execution flows | +| `gitnexus://repo/Mana-Loop/process/{name}` | Step-by-step execution trace | + +## CLI + +| Task | Read this skill file | +|------|---------------------| +| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` | +| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` | +| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` | +| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` | +| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` | +| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` | + + diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..96186fc --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,43 @@ + +# GitNexus — Code Intelligence + +This project is indexed by GitNexus as **Mana-Loop** (3795 symbols, 6409 relationships, 146 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely. + +> If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first. + +## Always Do + +- **MUST run impact analysis before editing any symbol.** Before modifying a function, class, or method, run `gitnexus_impact({target: "symbolName", direction: "upstream"})` and report the blast radius (direct callers, affected processes, risk level) to the user. +- **MUST run `gitnexus_detect_changes()` before committing** to verify your changes only affect expected symbols and execution flows. +- **MUST warn the user** if impact analysis returns HIGH or CRITICAL risk before proceeding with edits. +- When exploring unfamiliar code, use `gitnexus_query({query: "concept"})` to find execution flows instead of grepping. It returns process-grouped results ranked by relevance. +- When you need full context on a specific symbol — callers, callees, which execution flows it participates in — use `gitnexus_context({name: "symbolName"})`. + +## Never Do + +- NEVER edit a function, class, or method without first running `gitnexus_impact` on it. +- NEVER ignore HIGH or CRITICAL risk warnings from impact analysis. +- NEVER rename symbols with find-and-replace — use `gitnexus_rename` which understands the call graph. +- NEVER commit changes without running `gitnexus_detect_changes()` to check affected scope. + +## Resources + +| Resource | Use for | +|----------|---------| +| `gitnexus://repo/Mana-Loop/context` | Codebase overview, check index freshness | +| `gitnexus://repo/Mana-Loop/clusters` | All functional areas | +| `gitnexus://repo/Mana-Loop/processes` | All execution flows | +| `gitnexus://repo/Mana-Loop/process/{name}` | Step-by-step execution trace | + +## CLI + +| Task | Read this skill file | +|------|---------------------| +| Understand architecture / "How does X work?" | `.claude/skills/gitnexus/gitnexus-exploring/SKILL.md` | +| Blast radius / "What breaks if I change X?" | `.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md` | +| Trace bugs / "Why is X failing?" | `.claude/skills/gitnexus/gitnexus-debugging/SKILL.md` | +| Rename / extract / split / refactor | `.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md` | +| Tools, resources, schema reference | `.claude/skills/gitnexus/gitnexus-guide/SKILL.md` | +| Index, status, clean, wiki CLI commands | `.claude/skills/gitnexus/gitnexus-cli/SKILL.md` | + + \ No newline at end of file diff --git a/docs/project-structure.txt b/docs/project-structure.txt index 64a02fe..bc9729c 100644 --- a/docs/project-structure.txt +++ b/docs/project-structure.txt @@ -455,6 +455,7 @@ Mana-Loop/ ├── .gitignore ├── 3001 ├── AGENTS.md +├── CLAUDE.md ├── Caddyfile ├── Dockerfile ├── README.md diff --git a/src/app/components/GameOverScreen.tsx b/src/app/components/GameOverScreen.tsx index 2690a4c..36ff1af 100644 --- a/src/app/components/GameOverScreen.tsx +++ b/src/app/components/GameOverScreen.tsx @@ -8,10 +8,11 @@ import { useGameStore } from '@/lib/game/stores'; interface GameOverScreenProps { day: number; hour: number; - insight: number; + insightGained: number; + totalInsight: number; } -export function GameOverScreen({ day, hour, insight }: GameOverScreenProps) { +export function GameOverScreen({ day, hour, insightGained, totalInsight }: GameOverScreenProps) { const startNewLoop = () => { useGameStore.getState().startNewLoop(); }; @@ -31,7 +32,7 @@ export function GameOverScreen({ day, hour, insight }: GameOverScreenProps) {
-
{fmt(insight)}
+
{fmt(insightGained)}
Insight Gained
@@ -43,7 +44,7 @@ export function GameOverScreen({ day, hour, insight }: GameOverScreenProps) {
Hour
-
{insight}
+
{fmt(totalInsight)}
Total Insight
diff --git a/src/app/page.tsx b/src/app/page.tsx index 9ef6bb2..1707ee7 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -49,7 +49,7 @@ import { LeftPanel } from './components/LeftPanel'; const SpireTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.SpireTab }))); const SkillsTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.SkillsTab }))); const SpellsTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.SpellsTab }))); -const LabTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.LabTab }))); + const StatsTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.StatsTab }))); const EquipmentTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.EquipmentTab }))); const AttunementsTab = lazy(() => import('@/components/game/tabs').then(module => ({ default: module.AttunementsTab }))); @@ -72,7 +72,7 @@ function GrimoireTab() { } return []; }); - const loaded = grimoireSpells.length > 0 || (typeof window !== 'undefined' && !SPELLS_DEF); + const loaded = typeof window !== 'undefined'; if (!loaded) { return
Loading grimoire...
; @@ -142,6 +142,7 @@ export default function ManaLoopGame() { const prestigeUpgrades = usePrestigeStore((s) => s.prestigeUpgrades); const insight = usePrestigeStore((s) => s.insight); + const loopInsight = usePrestigeStore((s) => s.loopInsight); const rawMana = useManaStore((s) => s.rawMana); const meditateTicks = useManaStore((s) => s.meditateTicks); @@ -221,7 +222,7 @@ export default function ManaLoopGame() { // Conditional returns AFTER all hooks if (gameOver) { - return ; + return ; } if (!mounted) return
Loading...
; @@ -256,7 +257,7 @@ export default function ManaLoopGame() { 🔧 Craft 💎 Loot 🏆 Achieve - 🔬 Lab + 📊 Stats 🐛 Debug 📖 Grimoire @@ -265,7 +266,7 @@ export default function ManaLoopGame() { spire tab failed to load.}> }> - + @@ -334,13 +335,7 @@ export default function ManaLoopGame() { - - lab tab failed to load.}> - }> - - - - + stats tab failed to load.}> diff --git a/src/components/game/debug/GameStateDebug.tsx b/src/components/game/debug/GameStateDebug.tsx index 0f2fb8a..81ca3e5 100644 --- a/src/components/game/debug/GameStateDebug.tsx +++ b/src/components/game/debug/GameStateDebug.tsx @@ -29,7 +29,6 @@ export function GameStateDebug() { // Get actions from stores const resetGame = useGameStore((s) => s.resetGame); - const setTime = useCombatStore((s) => s.debugSetTime); const setFloor = useCombatStore((s) => s.debugSetFloor); const resetHP = useCombatStore((s) => s.resetFloorHP); @@ -184,7 +183,7 @@ export function GameStateDebug() { Current: Day {day}, Hour {hour}
-