{t("settings.dialog_title")}
{#if settings.backendStub && section === "sync"}

{t("settings.sync.stub")}

{/if} {#if section === "recording"}

{t("settings.recording.title")}

{t("settings.recording.default_hint")}

{t("settings.recording.consent_label", { status: settings.settings.consent_acknowledged ? t("settings.recording.consent_ack") : t("settings.recording.consent_not"), })}

{t("settings.recording.auto_hint")}

{t("settings.recording.autostart_hint")}

{t("settings.recording.close_tray_hint")}

{#if showConsent} (showConsent = false)} /> {/if}
{:else if section === "hardware"}

{t("settings.hardware.title")}

{#if settings.hardware}
{t("settings.hardware.active_backend")}{settings.hardware.active} {t("settings.hardware.model_meta", { size: settings.hardware.modelSize, })}

{t("settings.hardware.fallback_hint")}

{t("settings.hardware.audio_devices")}

{t("settings.hardware.recording_device_hint")}

{#if monitorKind === "loopback"} {/if}

{t("settings.hardware.mic_hint")}

{#if monitorKind === "input"} {/if}

{t("settings.hardware.stress_title")}

{t("settings.hardware.stress_hint")}

{#if stressProgress}

{t("settings.hardware.stress_progress", { pair: stressProgress })}

{/if} {#if stressError}

{stressError}

{/if} {#if stressResult} {#if stressResult.recommended}
{t("settings.hardware.stress_recommend", { backend: stressResult.recommended.backend, model: stressResult.recommended.model, })}
{:else}

{t("settings.hardware.stress_none")}

{/if} {#each stressResult.results as r (r.backend + r.model)} {/each}
{t("settings.hardware.stress_backend")} {t("settings.hardware.stress_model")} {t("settings.hardware.stress_rtf")} {t("settings.hardware.stress_realtime")}
{r.backend} {r.model} {r.rtf.toFixed(2)}× {#if r.realtime} {t("settings.hardware.stress_yes")} {:else} {t("settings.hardware.stress_no")} {/if}
{/if} {#if settings.hardware.npu?.present} {@const npu = settings.hardware.npu} {@const ready = npu.runtimeReady && npu.modelInstalled}
{t("settings.hardware.npu_detected")} {#if ready} {t("settings.hardware.ready")} {:else if npuBusy} {t("settings.hardware.downloading")} {:else} {t("settings.hardware.package_needed")} {/if}
{#if !ready}

{t("settings.hardware.npu_hint", { extra: npu.runtimeReady ? "" : t("settings.hardware.plus_openvino"), })}

{/if} {#if npuMsg}

{npuMsg}

{/if}
{/if} {#if settings.hardware.directml?.applicable} {@const dml = settings.hardware.directml} {@const dmlReady = dml.runtimeReady && dml.modelInstalled}
{t("settings.hardware.dml_title")} {#if dmlReady} {t("settings.hardware.ready")} {:else if dmlBusy} {t("settings.hardware.downloading")} {:else} {t("settings.hardware.package_needed")} {/if}
{#if !dmlReady}

{t("settings.hardware.dml_hint", { extra: dml.runtimeReady ? "" : t("settings.hardware.plus_directml"), })}

{/if} {#if dmlMsg}

{dmlMsg}

{/if}
{/if} {:else}

{t("settings.hardware.detection_unavailable")}

{/if}

{t("settings.hardware.models")}

    {#each settings.models as m (m.id)} {@const downloading = m.id in settings.downloadProgress} {@const pct = progressPct(m.id)}
  • {m.label} {fmtBytes(m.size_mb)} {#if m.active} {t("settings.hardware.active_badge")} {:else if m.installed} {t("settings.hardware.installed")} {/if} {#if downloading}
    {t("settings.hardware.downloading")} {pct !== null ? `${pct}%` : ""} {/if}
    {#if downloading} {:else if m.installed} {:else} {/if}
  • {/each}

{t("settings.hardware.diarization")}

{t("settings.hardware.diarization_hint")}

    {#each settings.diarizationModels as m (m.id)} {@const downloading = m.id in settings.downloadProgress} {@const pct = progressPct(m.id)}
  • {m.label} {fmtBytes(m.size_mb)} {#if m.installed} {t("settings.hardware.installed")} {/if} {#if downloading}
    {t("settings.hardware.downloading")} {pct !== null ? `${pct}%` : ""} {/if}
    {#if downloading} {:else if m.installed} {:else} {/if}
  • {/each}

{t("settings.transcription.title")}

{#if activeModel?.multilingual}

{t("settings.transcription.applies_hint")}

{:else}

{activeModel ? t("settings.transcription.model_english_only", { model: activeModel.label }) : t("settings.transcription.no_model")} {t("settings.transcription.switch_multilingual")}

{/if}
{:else if section === "storage"}

{t("settings.storage.title")}

{t("settings.storage.location_label")}{settings.settings.storage_root}

{t("settings.storage.location_hint")}

{t("settings.storage.retention_title")}

{t("settings.storage.retention_hint")}

{t("settings.storage.export_import_title")}

{t("settings.storage.export_hint_1")} meeting.json {t("settings.storage.export_hint_2")}

{#if ioStatus}

{ioStatus}

{/if}
{:else if section === "calendar"}

{t("settings.calendar.title")}

{t("settings.calendar.intro_1")} .pst {t("settings.calendar.intro_2")}

{t("settings.calendar.requires")}

{t("settings.calendar.range_hint")}

{#if calendar.importProgress} {t("settings.calendar.import_progress", { processed: calendar.importProgress.processed, total: calendar.importProgress.total, })} {/if}

{t("settings.calendar.auto_reimport_hint")}

{#if calendar.importError}

{t("settings.calendar.import_failed", { error: calendar.importError })}

{/if}

{t("settings.calendar.cleanup_title")}

{t("settings.calendar.cleanup_hint")}

{#if cleanupResult}

{t("settings.calendar.cleanup_result", { deleted: cleanupResult.deleted, extra: cleanupResult.protected ? t("settings.calendar.cleanup_kept", { n: cleanupResult.protected }) : "", })}

{/if} {#if cleanupError}

{t("settings.calendar.cleanup_failed", { error: cleanupError })}

{/if}

{t("settings.calendar.imported_events")}

{#if calendar.events.length === 0}

{t("settings.calendar.no_events")}

{:else}

{t("settings.calendar.events_count", { shown: filteredEvents.length, total: calendar.events.length, })}

    {#each filteredEvents as ev (ev.id)}
  • {ev.subject ?? t("settings.calendar.untitled")} {formatEventDate(ev.starts_at)} {#if ev.organizer}· {ev.organizer}{/if}
  • {/each}
{/if}
{:else if section === "sync"}

{t("settings.sync.title")}

{t("settings.sync.enable_hint")}

{t("settings.sync.targets_title")}

{#if settings.targets.length === 0}

{t("settings.sync.no_targets")}

{:else}
    {#each settings.targets as target (target.id)}
  • {target.third_party ? t("settings.sync.third_party") : t("settings.sync.your_server")} {target.host ?? target.kind} {#if !target.third_party} {/if}
  • {/each}
{/if}

{editingId ? t("settings.sync.edit_target") : t("settings.sync.add_target")}

{#if !editingId}
{#each ["webdav", "onedrive", "dropbox", "box"] as k (k)} {/each}
{/if} {#if form.kind === "webdav"}

{t("settings.sync.webdav_hint")}

{t("settings.sync.upload_legend")}
{#if editingId} {/if} {#if testResult} {#if testResult.ok}{:else}{/if} {testResult.message} {/if}
{:else}
{t("settings.sync.third_party_banner", { kind: form.kind })}
{t("settings.sync.oauth_hint")}
{#if settings.linkMessage}

{settings.linkMessage}

{/if} {/if}

{t("settings.sync.footnote")}

{:else if section === "ai"}

{t("settings.ai.title")}

{t("settings.ai.intro_1")} 192.168.0.x) {t("settings.ai.intro_2")}

{#if llmProvider !== "off"}
{#if llmProvider !== "anthropic"} {:else} {/if}
{#if llmProvider === "anthropic"}
{t("settings.ai.anthropic_banner")}
{:else if llmEndpoint && !endpointIsLocalOrLan(llmEndpoint)}
{t("settings.ai.endpoint_banner")}
{/if}
{#if showHostedBanner} (showHostedBanner = false)} /> {/if} {#if settings.llmStatus} {@const s = settings.llmStatus}
{s.reachable ? t("settings.ai.reachable") : t("settings.ai.unreachable")} {#if s.reachable} {s.models.length === 1 ? t("settings.ai.model_count_one", { n: s.models.length }) : t("settings.ai.model_count_many", { n: s.models.length })} {s.isLocal ? t("settings.ai.on_lan") : t("settings.ai.leaves_network")} {/if}
{#if s.reachable && s.models.length}

{s.models.slice(0, 6).join(", ")}{s.models.length > 6 ? " …" : ""}

{/if} {/if} {#if llmProvider === "ollama"} {#snippet paramRow(opt: OllamaOption)} {@const disabled = opt.needsMirostat && mirostatOff()}
{opt.label} {opt.help}{#if opt.default !== undefined} {t("settings.ai.default_value", { value: String(opt.default) })}{/if}
{#if opt.kind === "bool"} setBool(opt, e.currentTarget.checked)} /> {:else if opt.kind === "enum"} {:else if opt.kind === "tags"} setTags(opt, e.currentTarget.value)} /> {:else} setNumber(opt, e.currentTarget.value)} /> {/if}
{/snippet}
{t("settings.ai.advanced_title")} {#if advChangedCount}{t("settings.ai.changed", { n: advChangedCount })}{/if}
{#if advChangedCount} {/if}

{t("settings.ai.system_prompt_hint")}

{#each OPTION_GROUPS as g (g)}
{OLLAMA_GROUP_LABELS[g]} {#if g === "context"}
{t("settings.ai.think")} {t("settings.ai.think_help")}
{t("settings.ai.keep_alive")} {t("settings.ai.keep_alive_help")}
{/if} {#each OLLAMA_OPTIONS.filter((o) => o.group === g) as opt (opt.key)} {@render paramRow(opt)} {/each}
{/each}
{t("settings.ai.runtime_hardware")} {t("settings.ai.rarely_needed")}
{#each OLLAMA_OPTIONS.filter((o) => o.group === "hardware") as opt (opt.key)} {@render paramRow(opt)} {/each}
{#if advSaved} {t("settings.ai.saved")}{/if}
{/if} {:else}
{/if}
{:else if section === "mcp"}

{t("settings.mcp.title")}

{t("settings.mcp.banner_1")} {t("settings.mcp.banner_agent")} {t("settings.mcp.banner_2")}127.0.0.1{t("settings.mcp.banner_3")}

{t("settings.mcp.enable_hint")}

{#if mcpTransport === "http"} {/if}
{#if settings.mcpStatus?.enabled}

{t("settings.mcp.transport_change_hint")}

{/if}

{t("settings.mcp.scope_title")}

{#if settings.mcpLastToken}
{t("settings.mcp.token_title")}

{t("settings.mcp.token_hint")}

{settings.mcpLastToken}
{/if} {#if settings.mcpStatus?.enabled}
{t("settings.mcp.endpoint")}{settings.mcpStatus.endpoint}

{t("settings.mcp.endpoint_hint", { kind: settings.mcpStatus.transport === "stdio" ? t("settings.mcp.kind_command") : t("settings.mcp.kind_url"), })}

{/if}

{t("settings.mcp.access_log")}

{t("settings.mcp.access_log_hint")}

{#if settings.mcpAccessLog.length === 0}

{t("settings.mcp.no_reads")}

{:else}
    {#each settings.mcpAccessLog as entry, i (entry.at + "-" + i)}
  • {entry.tool} {#if entry.meeting_id}{t("settings.mcp.log_meeting", { id: entry.meeting_id.slice(0, 8) })}{/if} {#if entry.client}{entry.client}{/if} {relativeTime(entry.at)}
  • {/each}
{/if}
{:else if section === "privacy"}

{t("settings.privacy.title")}

{t("settings.privacy.intro")}

{#if settings.privacy}
{t("settings.privacy.llm_endpoint")}{settings.privacy.llmEndpoint || t("settings.privacy.off")} {settings.privacy.llmIsLocal ? t("settings.privacy.local_only") : t("settings.privacy.leaves_device")}
{t("settings.privacy.sync_label")} {settings.privacy.syncEnabled ? t("settings.privacy.enabled") : t("settings.privacy.off")}
{t("settings.privacy.mcp_label")} {settings.mcpStatus?.enabled ? t("settings.privacy.mcp_on", { scope: settings.mcpStatus.exposeScope }) : t("settings.privacy.off")}
{#if settings.mcpStatus?.enabled}

{t("settings.privacy.mcp_loopback_note")}

{/if}

{t("settings.privacy.egress_title")}

{#if settings.privacy.allowlistedHosts.length === 0}

{t("settings.privacy.no_egress")}

{:else}
    {#each settings.privacy.allowlistedHosts as host (host)}
  • {host}
  • {/each}
{/if} {#if settings.privacy.syncTargets.length > 0}

{t("settings.privacy.sync_targets_title")}

    {#each settings.privacy.syncTargets as target (target.name)}
  • {target.name} {target.thirdParty ? t("settings.privacy.third_party") : t("settings.privacy.your_server")} {target.host} {target.tls ? t("settings.privacy.tls") : t("settings.privacy.no_tls")}
  • {/each}
{/if} {:else}

{t("settings.privacy.unavailable")}

{/if} {#if vault}
{#if !vault.enabled} {:else if !vault.unlocked} {:else} {/if}

{t("settings.privacy.vault_title")}

{#if vault.enabled} {vault.unlocked ? t("settings.privacy.unlocked_word") : t("settings.privacy.locked_word")} {/if}
{#if !vault.enabled}

{t("settings.privacy.vault_intro")}

{t("settings.privacy.vault_pw_hint")}

{:else if !vault.unlocked}

{t("settings.privacy.vault_locked_1")}{t("settings.privacy.locked_word")}{t("settings.privacy.vault_locked_2")}

e.key === "Enter" && vaultPw && unlockVault()} />
{:else}

{t("settings.privacy.vault_unlocked_1")}{t("settings.privacy.unlocked_word")}{t("settings.privacy.vault_unlocked_2")}

{t("settings.privacy.change_password")}
{/if} {#if vaultMsg}

{vaultMsg}

{/if}
{/if}
{:else if section === "language"}

{t("settings.language.title")}

{t("settings.language.display_hint")}

{:else if section === "about"}

{t("settings.about.title")}

WhispAssist v{appInfo?.version ?? "…"}

{t("settings.about.tagline")}

{t("settings.about.build_commit")}{appInfo?.commit ?? "…"}

{/if}