Settings

Appearance

{#if settingsState.settings.custom_background_path} Background Preview { console.error("Failed to load image:", settingsState.settings.custom_background_path, e); // e.currentTarget.style.display = 'none'; }} /> {:else}
Default Gradient
{/if}
{#if settingsState.settings.custom_background_path} {/if}

Select an image from your computer to replace the default gradient background. Supported formats: PNG, JPG, WEBP, GIF.

Visual Effects

Enable particle effects and animated gradients. (Default: On)

{#if settingsState.settings.enable_visual_effects}

Theme Effect

Select the active visual theme.

settingsState.saveSettings()} class="w-52" />
{/if}

GPU Acceleration

Enable GPU acceleration for the interface. (Default: Off, Requires Restart)

Color Theme

Interface color mode. (Locked to Dark)

Java Environment

{#if settingsState.javaInstallations.length > 0}

Detected Installations

{#each settingsState.javaInstallations as java} {/each}
{/if}

Memory Allocation (RAM)

Game Window Size

Network

Higher values usually mean faster downloads but use more CPU/Network.

Storage & Version Caches

Use Shared Caches

Store versions/libraries/assets in a global cache shared by all instances.

Keep Legacy Per-Instance Storage

Do not migrate existing instance caches; keep current layout.

Run Migration

Hard-link or copy existing per-instance caches into the shared cache.

Feature Flags (Launcher Arguments)

Demo User

Enable demo-related arguments when rules require them.

Quick Play

Enable quick play singleplayer/multiplayer arguments.

{#if settingsState.settings.feature_flags.quick_play_enabled}

Prefer Singleplayer

If enabled, use singleplayer quick play path.

{/if}

Debug & Logs

{#if settingsState.settings.log_upload_service === 'pastebin.com'}

Get your API key from Pastebin API Documentation.

{/if}

AI Assistant

Enable Assistant

Toggle the AI assistant feature on or off.

{#if settingsState.settings.assistant.enabled}

Language Model

settingsState.saveSettings()} class="w-full" />
{#if settingsState.settings.assistant.llm_provider === 'ollama'}

Default: http://localhost:11434. Make sure Ollama is running.

{#if settingsState.ollamaModels.length > 0} {settingsState.ollamaModels.length} installed {/if}
{#if settingsState.isLoadingOllamaModels}
Loading models...
{:else if settingsState.ollamaModelsError}
{settingsState.ollamaModelsError}
settingsState.saveSettings()} class="w-full mt-2" allowCustom={true} /> {:else if settingsState.ollamaModels.length === 0}
No models found. Click Refresh to load installed models.
settingsState.saveSettings()} class="w-full mt-2" allowCustom={true} /> {:else} settingsState.saveSettings()} class="w-full" allowCustom={true} /> {/if}

Run ollama pull {''} to download new models. Or type a custom model name above.

{:else if settingsState.settings.assistant.llm_provider === 'openai'}

Get your API key from OpenAI Dashboard.

Use custom endpoint for Azure OpenAI or other compatible APIs.

{#if settingsState.openaiModels.length > 0} {settingsState.openaiModels.length} available {/if}
{#if settingsState.isLoadingOpenaiModels}
Loading models...
{:else if settingsState.openaiModelsError}
{settingsState.openaiModelsError}
settingsState.saveSettings()} class="w-full" allowCustom={true} /> {:else} settingsState.saveSettings()} class="w-full" allowCustom={true} /> {/if}
{/if}

Response Settings

settingsState.saveSettings()} class="w-full" />
({ value: p.value, label: p.label }))} bind:value={selectedPersona} placeholder="Load a preset persona..." onchange={applyPersona} class="w-full" />

Customize how the assistant behaves and responds.

Text-to-Speech (Coming Soon)

Enable TTS

Read assistant responses aloud.

{/if}
{#if settingsState.showConfigEditor} {/if} {#if settingsState.showJavaDownloadModal}

Download Java

Sources
{#if settingsState.isLoadingCatalog}
Loading Java versions...
{:else if settingsState.catalogError}
{settingsState.catalogError}
{:else}
{#each settingsState.availableMajorVersions as version} {@const isLts = settingsState.javaCatalog?.lts_versions.includes(version)} {@const isSelected = settingsState.selectedMajorVersion === version} {@const releaseInfo = settingsState.javaCatalog?.releases.find(r => r.major_version === version && r.image_type === settingsState.selectedImageType)} {@const isAvailable = releaseInfo?.is_available ?? false} {@const installStatus = releaseInfo ? settingsState.getInstallStatus(releaseInfo) : 'download'} {/each}
{/if}
Details
{#if settingsState.selectedRelease}
Version
{settingsState.selectedRelease.version}
Release Name
{settingsState.selectedRelease.release_name}
Release Date
{settingsState.formatDate(settingsState.selectedRelease.release_date)}
Size
{settingsState.formatBytes(settingsState.selectedRelease.file_size)}
Type
{settingsState.selectedRelease.image_type} {#if settingsState.selectedRelease.is_lts} LTS {/if}
Architecture
{settingsState.selectedRelease.architecture}
{#if !settingsState.selectedRelease.is_available}
Not available for your platform
{/if}
{:else}
Select a Java version to view details
{/if}
{#if settingsState.isDownloadingJava && settingsState.downloadProgress}

Downloading Java

{settingsState.downloadProgress.status}
{settingsState.downloadProgress.file_name} {Math.round(settingsState.downloadProgress.percentage)}%
{settingsState.formatBytes(settingsState.downloadProgress.speed_bytes_per_sec)}/s · ETA: {settingsState.formatTime(settingsState.downloadProgress.eta_seconds)} {settingsState.formatBytes(settingsState.downloadProgress.downloaded_bytes)} / {settingsState.formatBytes(settingsState.downloadProgress.total_bytes)}
{/if} {#if settingsState.pendingDownloads.length > 0 && !settingsState.isDownloadingJava}
{settingsState.pendingDownloads.length} pending download(s) can be resumed
{/if}
{#if settingsState.isDownloadingJava} {:else} {@const isInstalled = settingsState.selectedRelease ? settingsState.getInstallStatus(settingsState.selectedRelease) === 'installed' : false} {/if}
{/if}