From da0d79f0db873c08fab3bc85023167e174d18b0e Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Mon, 19 Jan 2026 14:17:32 +0800 Subject: chore(ui): refactor workspace to monorepo --- packages/ui/src/components/SettingsView.svelte | 1217 ++++++++++++++++++++++++ 1 file changed, 1217 insertions(+) create mode 100644 packages/ui/src/components/SettingsView.svelte (limited to 'packages/ui/src/components/SettingsView.svelte') diff --git a/packages/ui/src/components/SettingsView.svelte b/packages/ui/src/components/SettingsView.svelte new file mode 100644 index 0000000..0020506 --- /dev/null +++ b/packages/ui/src/components/SettingsView.svelte @@ -0,0 +1,1217 @@ + + +
+
+

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} -- cgit v1.2.3-70-g09d2