Skip to content

richardcocks/Increlution-Tools

Repository files navigation

Loadout Manager for Increlution

A visual editor for managing automation loadouts in the Increlution incremental game. Configure automation priorities for Jobs, Construction, and Exploration actions across all chapters, then export directly to your game.

Features

  • Visual Automation Wheel: Click to increase, right-click to decrease automation levels (Off/Low/Regular/High/Top)
  • Lock Actions: Ctrl+click to exclude actions from export (uses game defaults)
  • Bulk Lock/Unlock: Ctrl+click chapter tabs to lock/unlock all actions at once
  • Chapter Tabs: Quickly navigate between chapters
  • Folder Organization: Organize loadouts in folders with drag-and-drop
  • Duplicate: Clone loadouts or entire folder structures with one click
  • Undo/Redo: Ctrl+Z to undo, Ctrl+Y or Ctrl+Shift+Z to redo loadout changes
  • Import/Export:
    • Copy/paste loadouts directly (Ctrl+V to import)
    • Upload/download JSON files
  • Sharing: Share loadouts or entire folders via links with optional expiration and attribution
  • Chapter Progress: Unlock chapters by proving you've reached them (prevents spoilers)
  • Favourites: Save and quickly access favourite loadout configurations
  • Default Priorities: Configure default skill priorities for new loadouts
  • Dark Mode: Light, dark, or system theme preference
  • Multi-user Support: Each user has their own isolated loadouts

Quick Start

Prerequisites

Setup

# Clone the repository
git clone https://github.com/yourusername/IncrelutionAutomationEditor.git
cd IncrelutionAutomationEditor

# Backend setup
cd backend
dotnet restore
dotnet ef database update
dotnet ef database update --context IdentityAppDbContext

# Frontend setup
cd ../frontend
npm install

Discord OAuth Setup

  1. Go to Discord Developer Portal
  2. Create a new application
  3. Go to OAuth2 and add redirect URI: https://localhost:7145/api/auth/discord/callback
  4. Copy your Client ID into backend/appsettings.json
  5. Set your Client Secret using user-secrets:
    cd backend
    dotnet user-secrets set "Discord:ClientSecret" "YOUR_SECRET"

Running

Start both servers in separate terminals:

# Terminal 1: Backend (https://localhost:7145)
cd backend
dotnet watch run

# Terminal 2: Frontend (http://localhost:5173)
cd frontend
npm run dev

Open http://localhost:5173 in your browser.

Usage

Getting Started

  1. Sign in with your Discord account
  2. Create a new loadout in the sidebar
  3. Click on the automation wheel next to each action to set the level:
    • Click: Increase level (Off -> Low -> Regular -> High -> Top)
    • Right-click: Decrease level
    • Ctrl+click (wheel): Set to maximum/minimum
    • Ctrl+click (row): Lock/unlock (locked actions are excluded from export)
    • Ctrl+click (chapter tab): Bulk lock/unlock all actions in that chapter
    • Ctrl+Z: Undo last change
    • Ctrl+Y or Ctrl+Shift+Z: Redo

Import from Game

  1. In Increlution, press F1 (or Esc -> Automations) to open the Automations screen
  2. Click Export and copy the JSON
  3. In the editor, press Ctrl+V anywhere on the loadout page
  4. Alternatively, click "Import (Paste)" button and paste

Export to Game

  1. Click "Export (Clipboard)" to copy your loadout
  2. In Increlution, press F1 (or Esc -> Automations) to open the Automations screen
  3. Click Import (imports directly from clipboard)

Organizing Loadouts

  • Click a folder in the sidebar to view its contents
  • Create new folders and loadouts from the folder view
  • Drag and drop loadouts and folders in the sidebar to reorganize
  • Duplicate, rename, or delete folders/loadouts using buttons in the page view
  • Deleting a non-empty folder requires typing the folder name to confirm
  • Protected (readonly) loadouts are moved to the parent folder instead of deleted

Sharing Loadouts and Folders

  1. Click the "Share" button on any loadout or folder (except the root folder)
  2. Configure options:
    • Expiration: 1 hour, 24 hours, 7 days, 30 days, or never
    • Show Attribution: Whether your username appears on the shared view
  3. Copy the generated link and share it
  4. Recipients can view the shared content read-only:
    • Loadout shares: Display the loadout directly
    • Folder shares: Display a folder tree with all subfolders and loadouts
  5. Logged-in recipients can save shares to their "Others' Loadouts" for quick access
  6. Shared items show live data (changes you make are reflected in the share)
  7. Manage all your shares from the shares icon in the header

Chapter Progress

To prevent spoilers, chapters 2-11 are locked by default. Unlock them in Settings by entering the name of the first exploration in each chapter. This affects what you can see and export.

Project Structure

IncrelutionAutomationEditor/
├── backend/                 # ASP.NET Core API
│   ├── Data/               # Entity Framework contexts
│   ├── DTOs/               # Data transfer objects and request/response records
│   ├── Endpoints/          # Minimal API endpoint groups (Auth, Folders, Loadouts, Settings, Shares, GameData)
│   ├── Models/             # Entity models (Folder, Loadout, LoadoutShare, FolderShare, etc.)
│   ├── Migrations/         # EF Core migrations
│   ├── Services/           # Business logic (GameData, Folder, Loadout, Settings, Share)
│   └── GameData/           # Static JSON game data files
├── backend.Tests/           # xUnit backend tests
├── frontend/               # React + TypeScript
│   ├── src/
│   │   ├── components/     # React components (Sidebar, TreeNode, LoadoutEditor, ShareModal, etc.)
│   │   ├── contexts/       # React contexts (Auth, Settings, SavedShares, GameData)
│   │   ├── hooks/          # Custom hooks (useLoadoutHistory, useSidebarResize)
│   │   ├── pages/          # Full-page components (Login, Settings, Favourites, ManageShares)
│   │   ├── services/       # API client
│   │   ├── types/          # TypeScript types
│   │   └── utils/          # Utilities (validation, filtering, folder tree helpers)
│   └── package.json
├── examples/               # Example loadout files
├── CLAUDE.md              # Development documentation
└── README.md              # This file

Development

Running Tests

# Frontend tests
cd frontend
npm run test        # Single run
npm run test:ui     # With Vitest UI

# Backend tests
cd backend.Tests
dotnet test

Building for Production

# Frontend
cd frontend
npm run build       # Output in dist/

# Backend
cd backend
dotnet publish -c Release

Tech Stack

  • Backend: ASP.NET Core 10.0, Entity Framework Core, SQLite
  • Frontend: React 19, TypeScript, Vite
  • Authentication: Discord OAuth2 with cookie sessions
  • Testing: Vitest

License

MIT

About

Automation Editor for Increlution

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors