aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/docs/content/en/features
diff options
context:
space:
mode:
Diffstat (limited to 'packages/docs/content/en/features')
-rw-r--r--packages/docs/content/en/features/authentication.mdx266
-rw-r--r--packages/docs/content/en/features/index.mdx176
-rw-r--r--packages/docs/content/en/features/java.mdx394
-rw-r--r--packages/docs/content/en/features/meta.json9
-rw-r--r--packages/docs/content/en/features/mod-loaders.mdx409
5 files changed, 1254 insertions, 0 deletions
diff --git a/packages/docs/content/en/features/authentication.mdx b/packages/docs/content/en/features/authentication.mdx
new file mode 100644
index 0000000..b6fc4ba
--- /dev/null
+++ b/packages/docs/content/en/features/authentication.mdx
@@ -0,0 +1,266 @@
+---
+title: Authentication
+description: Microsoft OAuth and offline authentication in DropOut
+---
+
+# Authentication
+
+DropOut supports two authentication methods: Microsoft Account (for official Minecraft) and Offline Mode (for testing and offline play).
+
+## Microsoft Authentication
+
+### Overview
+
+DropOut uses the **Device Code Flow** for Microsoft authentication, which:
+- Doesn't require a redirect URL (no browser integration)
+- Works on any device with a browser
+- Provides a simple code-based authentication
+- Fully compliant with Microsoft OAuth 2.0
+
+### Authentication Process
+
+The authentication chain consists of multiple steps:
+
+1. **Device Code** → User authorization
+2. **MS Token** → Access + refresh tokens
+3. **Xbox Live** → Xbox token + UHS
+4. **XSTS** → Security token
+5. **Minecraft** → Game access token
+6. **Profile** → Username + UUID
+
+#### Step 1: Device Code Request
+1. Click "Login with Microsoft"
+2. DropOut requests a device code from Microsoft
+3. You receive:
+ - User code (e.g., `A1B2-C3D4`)
+ - Verification URL (usually `https://microsoft.com/link`)
+ - Device code (used internally)
+
+#### Step 2: User Authorization
+1. Visit the verification URL in any browser
+2. Enter the user code
+3. Sign in with your Microsoft account
+4. Authorize DropOut to access your Minecraft profile
+
+#### Step 3: Token Exchange
+- DropOut polls Microsoft for authorization completion
+- Once authorized, receives an access token and refresh token
+- Refresh token is stored for future logins
+
+#### Step 4: Xbox Live Authentication
+- Microsoft token is exchanged for Xbox Live token
+- Retrieves User Hash (UHS) for next step
+
+#### Step 5: XSTS Authorization
+- Xbox Live token is used to get XSTS token
+- This token is specific to Minecraft services
+
+#### Step 6: Minecraft Login
+- XSTS token is exchanged for Minecraft access token
+- Uses endpoint: `/launcher/login`
+
+#### Step 7: Profile Fetching
+- Retrieves your Minecraft username
+- Fetches your UUID
+- Checks if you own Minecraft
+
+### Token Management
+
+**Access Token:**
+- Short-lived (typically 1 hour)
+- Used for game authentication
+- Automatically refreshed when expired
+
+**Refresh Token:**
+- Long-lived (typically 90 days)
+- Stored securely in `accounts.json`
+- Used to obtain new access tokens
+
+**Auto-refresh:**
+```rust
+// Automatic refresh when token expires
+if account.expires_at < current_time {
+ refresh_full_auth(&account).await?;
+}
+```
+
+### Security Considerations
+
+- Tokens are stored in platform-specific app data directory
+- HTTPS only for all API calls
+- No credentials stored (only tokens)
+- User-Agent header required (bypasses MS WAF)
+
+### Troubleshooting Microsoft Login
+
+**"Device code expired"**
+- Codes expire after 15 minutes
+- Start the login process again
+
+**"Authorization pending"**
+- Normal during the waiting phase
+- Complete authorization in the browser
+
+**"Invalid token"**
+- Token may have expired
+- Log out and log back in
+
+**"You don't own Minecraft"**
+- Verify your Microsoft account owns Minecraft Java Edition
+- Check at https://www.minecraft.net/profile
+
+## Offline Authentication
+
+### Overview
+
+Offline mode creates a local account that doesn't require internet connectivity or a Microsoft account. This is useful for:
+- Testing and development
+- Playing without internet
+- LAN multiplayer
+- Mod development
+
+### Creating an Offline Account
+
+1. Click "Offline Mode" in the login screen
+2. Enter a username (3-16 characters)
+3. Click "Create Account"
+
+### How It Works
+
+**UUID Generation:**
+```rust
+// Deterministic UUID v3 from username
+let uuid = generate_offline_uuid(&username);
+```
+
+- Uses UUID v3 (namespace-based)
+- Deterministic: same username = same UUID
+- No network requests
+
+**Authentication:**
+- Returns `"null"` as access token
+- Minecraft accepts null token in offline mode
+- Username and UUID stored locally
+
+### Limitations
+
+- Cannot join online servers
+- No skin support
+- No cape support
+- No Microsoft account features
+
+### Use Cases
+
+**Development:**
+```bash
+# Testing mod development
+cargo tauri dev
+# Use offline mode to test quickly
+```
+
+**LAN Play:**
+- Join LAN worlds without authentication
+- Host LAN worlds
+
+**Offline Play:**
+- Singleplayer without internet
+- No authentication required
+
+## Account Management
+
+### Switching Accounts
+
+Currently, DropOut supports one active account at a time. Multi-account support is planned.
+
+**To switch accounts:**
+1. Log out of current account
+2. Log in with new account
+
+### Account Storage
+
+Accounts are stored in `accounts.json`:
+
+```json
+{
+ "current_account_id": "uuid-here",
+ "accounts": [
+ {
+ "id": "uuid",
+ "type": "Microsoft",
+ "username": "PlayerName",
+ "access_token": "...",
+ "refresh_token": "...",
+ "expires_at": 1234567890
+ }
+ ]
+}
+```
+
+### Deleting Accounts
+
+To remove an account:
+1. Open Settings
+2. Navigate to Accounts
+3. Click "Log Out"
+4. Or manually delete `accounts.json`
+
+## API Reference
+
+### Tauri Commands
+
+**Start Microsoft Login:**
+```typescript
+const { user_code, verification_uri } = await invoke('start_microsoft_login');
+```
+
+**Complete Microsoft Login:**
+```typescript
+const account = await invoke('complete_microsoft_login', { deviceCode });
+```
+
+**Offline Login:**
+```typescript
+const account = await invoke('offline_login', { username: 'Player' });
+```
+
+**Logout:**
+```typescript
+await invoke('logout');
+```
+
+**Get Current Account:**
+```typescript
+const account = await invoke('get_current_account');
+```
+
+### Events
+
+**Authentication Status:**
+```typescript
+listen('auth-status', (event) => {
+ console.log(event.payload); // "logged_in" | "logged_out"
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Use Microsoft Account** for official servers
+2. **Keep tokens secure** - don't share accounts.json
+3. **Refresh tokens regularly** by logging in
+4. **Use offline mode** only for testing
+
+### For Developers
+
+1. **Handle token expiration** gracefully
+2. **Implement retry logic** for network failures
+3. **Cache account data** to reduce API calls
+4. **Validate tokens** before game launch
+
+## Future Enhancements
+
+- **Multi-account support**: Switch between accounts easily
+- **Account profiles**: Save per-account settings
+- **Auto-login**: Remember last account
+- **Token encryption**: Enhanced security for stored tokens
diff --git a/packages/docs/content/en/features/index.mdx b/packages/docs/content/en/features/index.mdx
new file mode 100644
index 0000000..3a463d0
--- /dev/null
+++ b/packages/docs/content/en/features/index.mdx
@@ -0,0 +1,176 @@
+---
+title: Features Overview
+description: Comprehensive guide to all DropOut features
+---
+
+# Features Overview
+
+DropOut is packed with features designed for both casual players and power users. This guide covers all major capabilities.
+
+## Core Features
+
+<Cards>
+ <Card
+ title="Authentication"
+ href="authentication"
+ description="Microsoft OAuth and offline authentication"
+ />
+ <Card
+ title="Java Management"
+ href="java"
+ description="Auto-detection and installation of Java runtimes"
+ />
+ <Card
+ title="Mod Loaders"
+ href="mod-loaders"
+ description="Fabric and Forge support with easy installation"
+ />
+ <Card
+ title="Instances"
+ href="instances"
+ description="Isolated game environments with independent configs"
+ />
+ <Card
+ title="Downloads"
+ href="downloads"
+ description="Fast concurrent downloads with resume support"
+ />
+ <Card
+ title="AI Assistant"
+ href="assistant"
+ description="Built-in AI helper for troubleshooting and guidance"
+ />
+</Cards>
+
+## Quick Feature Matrix
+
+| Feature | Status | Description |
+|---------|--------|-------------|
+| Microsoft Authentication | Complete | OAuth 2.0 with device code flow |
+| Offline Authentication | Complete | Local accounts for offline play |
+| Token Auto-refresh | Complete | Automatic refresh of expired tokens |
+| Java Auto-detection | Complete | Scans system for Java installations |
+| Java Download | Complete | Download Adoptium JDK/JRE versions |
+| Fabric Support | Complete | Install and launch Fabric loader |
+| Forge Support | Complete | Install and launch Forge loader |
+| Instance System | Complete | Isolated game environments |
+| GitHub Integration | Complete | View releases and changelogs |
+| Concurrent Downloads | Complete | Multi-threaded asset downloads |
+| Resume Downloads | Complete | Resume interrupted downloads |
+| AI Assistant | Complete | Built-in troubleshooting helper |
+| Config Editor | Complete | JSON/TOML configuration editor |
+| Custom Resolution | Complete | Set game window dimensions |
+| Memory Allocation | Complete | Customize JVM memory settings |
+| Multi-account | In Progress | Switch between multiple accounts |
+| Mods Manager | Planned | Enable/disable mods in launcher |
+| Launcher Auto-update | Planned | Self-updating mechanism |
+| Custom Game Directory | Planned | Choose game files location |
+| Import Profiles | Planned | Import from MultiMC/Prism |
+
+## Performance Features
+
+### Concurrent Downloads
+- Configurable thread count (default: 10)
+- Parallel asset and library downloads
+- Progress tracking per file
+- ETA calculation
+
+### Resume Support
+- Interrupted downloads auto-resume
+- `.part` files track progress
+- Multi-segment downloads for large files
+- Metadata files for state tracking
+
+### Caching
+- Java catalog cached for 24 hours
+- Version manifests cached locally
+- Asset index caching
+- Library deduplication
+
+## User Interface Features
+
+### Modern Design
+- Dark mode enforced for eye comfort
+- Particle background effects
+- Clean, distraction-free layout
+- Responsive design
+
+### Real-time Feedback
+- Live download progress
+- Game console output
+- Log streaming
+- Toast notifications
+
+### Settings Management
+- Memory allocation slider
+- Resolution customization
+- Java path selection
+- Thread count configuration
+- Custom JVM arguments
+
+## Advanced Features
+
+### Version Inheritance
+Modded versions (Fabric/Forge) automatically inherit from parent vanilla versions:
+- Libraries merged from parent + mod loader
+- Arguments combined and deduplicated
+- Assets inherited from vanilla version
+
+### Native Library Extraction
+- Platform-specific native extraction
+- Automatic cleanup
+- Proper library path configuration
+
+### Rules Engine
+- OS-specific library filtering
+- Feature flag support
+- Architecture detection
+
+### Download Queue Persistence
+- Save incomplete downloads
+- Resume after launcher restart
+- Queue priority management
+
+## Developer Features
+
+### Config Editor
+Built-in JSON/TOML editor with:
+- Syntax highlighting
+- Validation
+- Quick access to all configs
+
+### Log Access
+- Real-time game logs
+- Launcher debug logs
+- Copy/export functionality
+
+### AI Assistant
+- Troubleshooting guidance
+- Error analysis
+- Configuration help
+- Documentation search
+
+## Coming Soon
+
+### Multi-account Management
+- Switch between accounts easily
+- Account profiles
+- Quick switching
+
+### Mods Manager
+- Browse and install mods
+- Enable/disable mods
+- Mod compatibility checking
+- Version management
+
+### Profile Import
+- Import from MultiMC
+- Import from Prism Launcher
+- Import from other launchers
+- Preserve settings and saves
+
+### Launcher Auto-update
+- Background update checks
+- One-click updates
+- Version history
+- Rollback support
diff --git a/packages/docs/content/en/features/java.mdx b/packages/docs/content/en/features/java.mdx
new file mode 100644
index 0000000..21b95a9
--- /dev/null
+++ b/packages/docs/content/en/features/java.mdx
@@ -0,0 +1,394 @@
+---
+title: Java Management
+description: Automatic Java detection, download, and installation
+---
+
+# Java Management
+
+DropOut provides comprehensive Java management, automatically detecting installed versions and downloading new ones as needed.
+
+## Auto-detection
+
+### System Scan
+
+DropOut scans multiple locations for Java installations:
+
+**Linux:**
+- `/usr/lib/jvm/`
+- `/usr/java/`
+- `$JAVA_HOME`
+- `PATH` environment variable
+
+**macOS:**
+- `/Library/Java/JavaVirtualMachines/`
+- `/System/Library/Java/JavaVirtualMachines/`
+- `$JAVA_HOME`
+- `PATH` environment variable
+
+**Windows:**
+- `C:\Program Files\Java\`
+- `C:\Program Files (x86)\Java\`
+- `%JAVA_HOME%`
+- `PATH` environment variable
+- Windows Registry
+
+### Version Detection
+
+For each Java installation found, DropOut:
+1. Runs `java -version` to get version info
+2. Parses major version (8, 11, 17, 21, etc.)
+3. Detects architecture (x64, ARM64)
+4. Identifies vendor (Oracle, Adoptium, etc.)
+
+### Results
+
+All detected Java installations appear in Settings → Java:
+- Version number
+- Installation path
+- Architecture
+- Current selection status
+
+## Java Download
+
+### Adoptium Integration
+
+DropOut integrates with the Eclipse Adoptium API to download high-quality, free JDK/JRE builds.
+
+**Supported Versions:**
+- Java 8 (LTS)
+- Java 11 (LTS)
+- Java 17 (LTS)
+- Java 21 (LTS)
+- Java 23+ (Latest)
+
+**Features:**
+- Automatic platform detection
+- Architecture-specific builds
+- JDK or JRE selection
+- Checksum verification
+
+### Download Process
+
+1. Navigate to Settings → Java
+2. Click "Download Java"
+3. Select version (e.g., Java 17)
+4. Choose JDK or JRE
+5. Click Download
+6. Wait for download and extraction
+
+**Progress Tracking:**
+- Real-time download speed
+- ETA calculation
+- Extraction progress
+- Installation confirmation
+
+### Catalog Management
+
+The Java catalog is cached for 24 hours to improve performance:
+
+```rust
+// Catalog structure
+{
+ "versions": [
+ {
+ "version": "17.0.9+9",
+ "major": 17,
+ "url": "https://api.adoptium.net/...",
+ "sha256": "...",
+ "size": 123456789
+ }
+ ],
+ "last_updated": 1234567890
+}
+```
+
+**Refresh:**
+- Automatic after 24 hours
+- Manual refresh in settings
+- Forced refresh on download failure
+
+## Installation
+
+### Download Directory
+
+Downloaded Java runtimes are installed to:
+
+```
+~/.local/share/com.dropout.launcher/java/ (Linux)
+~/Library/Application Support/com.dropout.launcher/java/ (macOS)
+%APPDATA%/com.dropout.launcher/java/ (Windows)
+```
+
+### Directory Structure
+
+```
+java/
+├── jdk-17.0.9+9/
+│ ├── bin/
+│ │ └── java (or java.exe)
+│ └── lib/
+├── jdk-21.0.1+12/
+│ ├── bin/
+│ └── lib/
+└── download_queue.json
+```
+
+### Extraction
+
+1. Download to `.part` file
+2. Verify checksum
+3. Extract archive:
+ - `.tar.gz` on Linux/macOS
+ - `.zip` on Windows
+4. Move to `java/<version>/` directory
+5. Set executable permissions (Unix)
+
+## Configuration
+
+### Memory Allocation
+
+Configure JVM memory in Settings:
+
+**Minimum Memory:**
+- Default: 1024 MB
+- Recommended: 2048 MB for vanilla
+- Recommended: 4096+ MB for modded
+
+**Maximum Memory:**
+- Default: 4096 MB
+- Adjust based on your system RAM
+- Leave 4GB for OS and other apps
+
+**Format:**
+```bash
+-Xms1024M -Xmx4096M
+```
+
+### Custom JVM Arguments
+
+Add custom JVM arguments for advanced configuration:
+
+**Common Arguments:**
+```bash
+# Garbage collection
+-XX:+UseG1GC
+-XX:+UnlockExperimentalVMOptions
+
+# Performance
+-XX:G1NewSizePercent=20
+-XX:G1ReservePercent=20
+-XX:MaxGCPauseMillis=50
+
+# Memory
+-XX:G1HeapRegionSize=32M
+```
+
+### Java Path Selection
+
+**Auto-select:**
+- DropOut recommends the best Java version for each Minecraft version
+- Java 8 for Minecraft 1.12.2 and older
+- Java 17 for Minecraft 1.18-1.20.4
+- Java 21 for Minecraft 1.20.5+
+
+**Manual selection:**
+1. Go to Settings → Java
+2. Choose from detected installations
+3. Or specify custom path
+
+## Version Recommendations
+
+### Minecraft Version → Java Version
+
+| Minecraft Version | Recommended Java | Minimum Java |
+|-------------------|------------------|--------------|
+| 1.7.10 and older | Java 8 | Java 8 |
+| 1.8 - 1.12.2 | Java 8 | Java 8 |
+| 1.13 - 1.16.5 | Java 8 or 11 | Java 8 |
+| 1.17 - 1.17.1 | Java 16 | Java 16 |
+| 1.18 - 1.20.4 | Java 17 | Java 17 |
+| 1.20.5+ | Java 21 | Java 21 |
+
+### Modded Minecraft
+
+**Fabric:**
+- Usually matches vanilla requirements
+- Some mods may require newer Java
+
+**Forge:**
+- May require specific Java versions
+- Check mod loader documentation
+- Often requires exact version match
+
+## Troubleshooting
+
+### Java Not Detected
+
+**Issue:** Installed Java not showing up
+
+**Solutions:**
+1. Verify Java is in standard location
+2. Check `JAVA_HOME` environment variable
+3. Add Java `bin` directory to `PATH`
+4. Restart DropOut
+5. Manual path selection
+
+### Download Fails
+
+**Issue:** Java download doesn't complete
+
+**Solutions:**
+1. Check internet connection
+2. Verify disk space
+3. Try different version
+4. Clear download queue
+5. Manual download from Adoptium
+
+### Wrong Java Version
+
+**Issue:** Game crashes due to Java version
+
+**Solutions:**
+1. Check Minecraft version requirements
+2. Download correct Java version
+3. Select appropriate Java in settings
+4. Verify Java path is correct
+
+### OutOfMemoryError
+
+**Issue:** Game crashes with memory error
+
+**Solutions:**
+1. Increase maximum memory allocation
+2. Close other applications
+3. Upgrade system RAM
+4. Use 64-bit Java
+5. Optimize JVM arguments
+
+### Performance Issues
+
+**Issue:** Low FPS or stuttering
+
+**Solutions:**
+1. Adjust memory allocation (not too high!)
+2. Enable G1GC garbage collector
+3. Add performance JVM arguments
+4. Use newer Java version if compatible
+5. Allocate 4-8GB for modpacks
+
+## API Reference
+
+### Tauri Commands
+
+**Detect Java Installations:**
+```typescript
+const javas = await invoke('detect_java_installations');
+// Returns: Array<{ path: string, version: string, major: number }>
+```
+
+**Get Java Catalog:**
+```typescript
+const catalog = await invoke('get_java_catalog');
+// Returns: { versions: Array<JavaVersion>, last_updated: number }
+```
+
+**Download Java:**
+```typescript
+await invoke('download_java', {
+ version: '17.0.9+9',
+ variant: 'jdk' // or 'jre'
+});
+```
+
+**Cancel Java Download:**
+```typescript
+await invoke('cancel_java_download');
+```
+
+**Set Java Path:**
+```typescript
+await invoke('set_java_path', { path: '/path/to/java' });
+```
+
+### Events
+
+**Download Progress:**
+```typescript
+listen('java-download-progress', (event) => {
+ const { percent, speed, eta } = event.payload;
+});
+```
+
+**Download Complete:**
+```typescript
+listen('java-download-complete', (event) => {
+ const { path, version } = event.payload;
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Use Adoptium builds** - Free, high-quality, maintained
+2. **Match Java to Minecraft** - Check version requirements
+3. **Don't over-allocate memory** - Leave RAM for OS
+4. **Keep Java updated** - Security and performance
+5. **Use 64-bit Java** - Required for large memory
+
+### For Developers
+
+1. **Test multiple Java versions** - Ensure compatibility
+2. **Document Java requirements** - Help users
+3. **Handle missing Java** - Graceful fallbacks
+4. **Validate Java path** - Before launching
+5. **Provide clear errors** - When Java is wrong
+
+## Advanced Topics
+
+### Custom Java Installation
+
+To use a custom Java installation:
+
+1. Install Java manually
+2. Note the installation path
+3. In DropOut Settings → Java
+4. Click "Custom Path"
+5. Browse to Java executable
+6. Verify version is correct
+
+### Java for Servers
+
+When running a Minecraft server:
+
+```bash
+# Recommended server JVM arguments
+-Xms4G -Xmx4G \
+-XX:+UseG1GC \
+-XX:+ParallelRefProcEnabled \
+-XX:MaxGCPauseMillis=200 \
+-XX:+UnlockExperimentalVMOptions \
+-XX:+DisableExplicitGC \
+-XX:G1NewSizePercent=30 \
+-XX:G1MaxNewSizePercent=40 \
+-XX:G1HeapRegionSize=8M \
+-XX:G1ReservePercent=20 \
+-XX:G1HeapWastePercent=5 \
+-XX:G1MixedGCCountTarget=4 \
+-XX:InitiatingHeapOccupancyPercent=15 \
+-XX:G1MixedGCLiveThresholdPercent=90 \
+-XX:G1RSetUpdatingPauseTimePercent=5 \
+-XX:SurvivorRatio=32 \
+-XX:+PerfDisableSharedMem \
+-XX:MaxTenuringThreshold=1
+```
+
+### GraalVM
+
+GraalVM is supported for advanced users:
+
+1. Download GraalVM from graalvm.org
+2. Install manually
+3. Add to DropOut as custom Java
+4. May improve performance
+5. Test thoroughly before use
diff --git a/packages/docs/content/en/features/meta.json b/packages/docs/content/en/features/meta.json
new file mode 100644
index 0000000..4725321
--- /dev/null
+++ b/packages/docs/content/en/features/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "Features",
+ "pages": [
+ "index",
+ "authentication",
+ "java",
+ "mod-loaders"
+ ]
+}
diff --git a/packages/docs/content/en/features/mod-loaders.mdx b/packages/docs/content/en/features/mod-loaders.mdx
new file mode 100644
index 0000000..d6fdf4f
--- /dev/null
+++ b/packages/docs/content/en/features/mod-loaders.mdx
@@ -0,0 +1,409 @@
+---
+title: Mod Loaders
+description: Fabric and Forge installation and management
+---
+
+# Mod Loaders
+
+DropOut supports the two most popular Minecraft mod loaders: Fabric and Forge. Both can be easily installed and managed directly from the launcher.
+
+## Fabric Support
+
+### Overview
+
+Fabric is a lightweight, modular modding toolchain focused on:
+- Fast updates to new Minecraft versions
+- Clean, minimal API
+- Strong developer community
+- Excellent performance
+
+### Installation
+
+1. Navigate to **Versions** tab
+2. Click **"Install Fabric"**
+3. Select Minecraft version
+4. Choose Fabric loader version
+5. Click **"Install"**
+6. Wait for installation to complete
+
+### How It Works
+
+**Meta API Integration:**
+```rust
+// Fetch available Fabric versions
+let url = format!(
+ "https://meta.fabricmc.net/v2/versions/loader/{}",
+ minecraft_version
+);
+```
+
+**Profile Generation:**
+1. Fetch Fabric loader metadata
+2. Download Fabric libraries
+3. Generate version JSON with `inheritsFrom`
+4. Merge with parent Minecraft version
+5. Add to versions list
+
+**Version Format:**
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "net.fabricmc.loader.impl.launch.knot.KnotClient",
+ "libraries": [...]
+}
+```
+
+### Fabric Versions
+
+**Loader Versions:**
+- Latest stable (recommended)
+- Specific versions for compatibility
+- Beta/snapshot versions
+
+**Game Versions:**
+- All Minecraft versions from 1.14+
+- Snapshots supported
+- Combat Test versions
+
+### Library Management
+
+Fabric libraries are resolved from Maven:
+
+**Main Library:**
+```
+net.fabricmc:fabric-loader:0.15.0
+```
+
+**Dependencies:**
+- `net.fabricmc:tiny-mappings-parser`
+- `net.fabricmc:sponge-mixin`
+- `net.fabricmc:access-widener`
+
+**Download:**
+```rust
+// Maven resolution
+let url = format!(
+ "https://maven.fabricmc.net/{}/{}",
+ artifact_path, filename
+);
+```
+
+### Fabric API
+
+Fabric Loader ≠ Fabric API:
+- **Fabric Loader**: Mod loader (installed by DropOut)
+- **Fabric API**: Library mod (download separately)
+
+Many mods require Fabric API:
+1. Download from [Modrinth](https://modrinth.com/mod/fabric-api) or [CurseForge](https://www.curseforge.com/minecraft/mc-mods/fabric-api)
+2. Place in instance's `mods/` folder
+
+## Forge Support
+
+### Overview
+
+Forge is the original and most popular Minecraft mod loader:
+- Extensive mod ecosystem
+- Mature API
+- Wide version support
+- Large community
+
+### Installation
+
+1. Navigate to **Versions** tab
+2. Click **"Install Forge"**
+3. Select Minecraft version
+4. Choose Forge version
+5. Click **"Install"**
+6. Wait for installer to run
+7. Installation complete
+
+### How It Works
+
+**Forge Installer:**
+```rust
+// Download Forge installer
+let installer_url = format!(
+ "https://maven.minecraftforge.net/net/minecraftforge/forge/{}/forge-{}-installer.jar",
+ full_version, full_version
+);
+
+// Run installer
+java -jar forge-installer.jar --installClient
+```
+
+**Profile Parsing:**
+1. Forge installer creates version JSON
+2. DropOut parses install profile
+3. Extracts library dependencies
+4. Processes processors (if any)
+5. Generates launcher profile
+
+**Version Format:**
+```json
+{
+ "id": "1.20.4-forge-49.0.26",
+ "inheritsFrom": "1.20.4",
+ "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher",
+ "libraries": [...]
+}
+```
+
+### Forge Versions
+
+**Release Types:**
+- **Latest**: Most recent stable
+- **Recommended**: Most stable for production
+- **Specific**: Version-locked for compatibility
+
+**Minecraft Version Support:**
+- Legacy versions (1.6.4+)
+- Modern versions (1.13+)
+- Latest versions (1.20+)
+
+### Library Management
+
+Forge has many libraries:
+
+**Core Libraries:**
+- `net.minecraftforge:forge:<version>`
+- `net.minecraftforge:fmlloader:<version>`
+- `org.ow2.asm:asm:<version>`
+
+**Resolution:**
+```rust
+// Forge Maven
+"https://maven.minecraftforge.net/"
+
+// Dependencies may use:
+// - Maven Central
+// - Minecraft Libraries
+```
+
+### Forge Processors
+
+Some Forge versions run "processors" during installation:
+- Bytecode manipulation
+- Library patching
+- Mapping generation
+
+DropOut handles these automatically.
+
+## Version Inheritance
+
+Both Fabric and Forge use Minecraft's inheritance system:
+
+### Parent Version
+
+```json
+{
+ "id": "fabric-loader-0.15.0-1.20.4",
+ "inheritsFrom": "1.20.4" // Parent vanilla version
+}
+```
+
+### Merging Process
+
+**Libraries:**
+```rust
+// Merged from both
+parent_libraries + modded_libraries
+// Duplicates removed
+```
+
+**Arguments:**
+```rust
+// Combined
+parent_jvm_args + modded_jvm_args
+parent_game_args + modded_game_args
+```
+
+**Assets:**
+```rust
+// Inherited from parent
+assets = parent.assets
+```
+
+**Main Class:**
+```rust
+// Overridden by modded
+main_class = modded.mainClass
+```
+
+## Comparison
+
+| Feature | Fabric | Forge |
+|---------|--------|-------|
+| **Performance** | Excellent | Good |
+| **Update Speed** | Very Fast | Moderate |
+| **Mod Selection** | Growing | Extensive |
+| **API Simplicity** | Simple | Complex |
+| **Version Support** | 1.14+ | 1.6.4+ |
+| **Developer Friendly** | Very | Moderate |
+| **Stability** | Excellent | Excellent |
+
+## Installing Mods
+
+### Fabric Mods
+
+1. Create/select instance
+2. Ensure Fabric is installed
+3. Download mods from:
+ - [Modrinth](https://modrinth.com/)
+ - [CurseForge](https://www.curseforge.com/)
+ - [GitHub Releases](https://github.com/)
+4. Place `.jar` files in `instances/<name>/mods/`
+5. Launch game
+
+**Compatibility:**
+- Check Minecraft version
+- Check Fabric Loader version
+- Check for Fabric API requirement
+- Read mod dependencies
+
+### Forge Mods
+
+1. Create/select instance
+2. Ensure Forge is installed
+3. Download mods from:
+ - [CurseForge](https://www.curseforge.com/)
+ - [Modrinth](https://modrinth.com/)
+4. Place `.jar` files in `instances/<name>/mods/`
+5. Launch game
+
+**Compatibility:**
+- Check Minecraft version exactly
+- Check Forge version range
+- Read mod dependencies
+- Check for conflicts
+
+## Troubleshooting
+
+### Fabric Issues
+
+**"Fabric Loader not found"**
+- Reinstall Fabric
+- Check version JSON exists
+- Verify libraries downloaded
+
+**"Mixin apply failed"**
+- Mod incompatibility
+- Remove conflicting mods
+- Update Fabric Loader
+
+**"Fabric API required"**
+- Download Fabric API
+- Match Minecraft version
+- Place in mods folder
+
+### Forge Issues
+
+**"Forge installer failed"**
+- Verify Java installation
+- Check disk space
+- Try older Forge version
+- Check logs for details
+
+**"Missing dependencies"**
+- Install required mods
+- Check mod version compatibility
+- Read error message carefully
+
+**"Class not found"**
+- Forge version mismatch
+- Reinstall Forge
+- Verify libraries downloaded
+
+### General Mod Issues
+
+**Crash on Launch:**
+1. Check crash report
+2. Identify problematic mod
+3. Remove or update mod
+4. Test with minimal mods
+5. Add mods back incrementally
+
+**Performance Problems:**
+1. Too many mods installed
+2. Increase memory allocation
+3. Install performance mods:
+ - Fabric: Sodium, Lithium
+ - Forge: OptiFine, Magnesium
+4. Remove resource-heavy mods
+
+## API Reference
+
+### Tauri Commands
+
+**Install Fabric:**
+```typescript
+await invoke('install_fabric', {
+ minecraftVersion: '1.20.4',
+ loaderVersion: '0.15.0'
+});
+```
+
+**Install Forge:**
+```typescript
+await invoke('install_forge', {
+ minecraftVersion: '1.20.4',
+ forgeVersion: '49.0.26'
+});
+```
+
+**List Fabric Versions:**
+```typescript
+const versions = await invoke('get_fabric_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+**List Forge Versions:**
+```typescript
+const versions = await invoke('get_forge_versions', {
+ minecraftVersion: '1.20.4'
+});
+```
+
+### Events
+
+**Installation Progress:**
+```typescript
+listen('mod-loader-progress', (event) => {
+ const { stage, percent } = event.payload;
+ // Stages: "downloading", "installing", "processing", "complete"
+});
+```
+
+## Best Practices
+
+### For Players
+
+1. **Choose one mod loader** per instance
+2. **Match versions exactly** - Minecraft and loader
+3. **Read mod requirements** before installing
+4. **Start small** - Add mods incrementally
+5. **Backup worlds** before adding mods
+6. **Check compatibility** lists
+7. **Update cautiously** - Test in separate instance
+
+### For Modpack Creators
+
+1. **Document versions** - MC, loader, all mods
+2. **Test thoroughly** - All features
+3. **List dependencies** - Including API
+4. **Provide changelog** - For updates
+5. **Version lock** - For stability
+6. **Include configs** - Pre-configured
+7. **Test updates** - Before release
+
+## Future Features
+
+- **Mod browser** - Install mods from launcher
+- **Automatic updates** - Keep mods current
+- **Dependency resolution** - Auto-install requirements
+- **Conflict detection** - Warn about incompatibilities
+- **Profile export** - Share modpack configurations
+- **CurseForge integration** - Direct modpack import
+- **Modrinth integration** - Mod search and install