feat: separate NPM and Traefik settings tabs, add Events to sidebar nav
- Create /settings/npm page with NPM credentials + SSL certificate picker - Create /settings/traefik page with entrypoint, cert resolver, network, API URL + labels reference - Dynamic settings nav: NPM/Traefik tabs only visible when respective provider is selected - Remove inline Traefik config from general settings page - Remove old credentials page (replaced by NPM tab) - Add Events page to sidebar navigation - Fix SystemHealthCard after standalone proxy removal
This commit is contained in:
@@ -26,12 +26,6 @@
|
||||
// Proxy provider state.
|
||||
let proxyProvider = $state('npm');
|
||||
|
||||
// Traefik settings state.
|
||||
let traefikEntrypoint = $state('websecure');
|
||||
let traefikCertResolver = $state('letsencrypt');
|
||||
let traefikNetwork = $state('');
|
||||
let traefikApiUrl = $state('');
|
||||
|
||||
// DNS settings state.
|
||||
let wildcardDns = $state(true);
|
||||
let dnsProvider = $state('');
|
||||
@@ -97,10 +91,6 @@
|
||||
notificationUrl = settings.notification_url ?? '';
|
||||
staleThresholdDays = String(settings.stale_threshold_days ?? 7);
|
||||
proxyProvider = settings.proxy_provider ?? 'npm';
|
||||
traefikEntrypoint = settings.traefik_entrypoint ?? 'websecure';
|
||||
traefikCertResolver = settings.traefik_cert_resolver ?? 'letsencrypt';
|
||||
traefikNetwork = settings.traefik_network ?? '';
|
||||
traefikApiUrl = settings.traefik_api_url ?? '';
|
||||
wildcardDns = settings.wildcard_dns ?? true;
|
||||
dnsProvider = settings.dns_provider ?? '';
|
||||
hasCloudflareApiToken = settings.has_cloudflare_api_token ?? false;
|
||||
@@ -128,10 +118,6 @@
|
||||
subdomain_pattern: subdomainPattern.trim(), polling_interval: pollingInterval.trim(),
|
||||
base_volume_path: baseVolumePath.trim(), notification_url: notificationUrl.trim(),
|
||||
proxy_provider: proxyProvider,
|
||||
traefik_entrypoint: traefikEntrypoint.trim() || 'websecure',
|
||||
traefik_cert_resolver: traefikCertResolver.trim(),
|
||||
traefik_network: traefikNetwork.trim(),
|
||||
traefik_api_url: traefikApiUrl.trim(),
|
||||
stale_threshold_days: Math.max(1, parseInt(staleThresholdDays, 10) || 7),
|
||||
wildcard_dns: wildcardDns,
|
||||
dns_provider: wildcardDns ? '' : dnsProvider,
|
||||
@@ -317,18 +303,8 @@
|
||||
<p class="text-sm text-amber-800 dark:text-amber-300">{$t('settings.proxyNoneWarning')}</p>
|
||||
</div>
|
||||
{/if}
|
||||
{#if proxyProvider === 'traefik'}
|
||||
<div class="mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2 rounded-lg border border-[var(--border-primary)] bg-[var(--surface-card-hover)] p-4">
|
||||
<FormField label={$t('settings.traefikEntrypoint')} name="traefikEntrypoint" bind:value={traefikEntrypoint} placeholder="websecure" helpText={$t('settings.traefikEntrypointHelp')} />
|
||||
<FormField label={$t('settings.traefikCertResolver')} name="traefikCertResolver" bind:value={traefikCertResolver} placeholder="letsencrypt" helpText={$t('settings.traefikCertResolverHelp')} />
|
||||
<FormField label={$t('settings.traefikNetwork')} name="traefikNetwork" bind:value={traefikNetwork} placeholder="" helpText={$t('settings.traefikNetworkHelp')} />
|
||||
<FormField label={$t('settings.traefikApiUrl')} name="traefikApiUrl" bind:value={traefikApiUrl} placeholder="http://traefik:8080" helpText={$t('settings.traefikApiUrlHelp')} />
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- SSL Certificate moved to Credentials page -->
|
||||
|
||||
<!-- Stale Detection -->
|
||||
<div class="mt-6 border-t border-[var(--border-primary)] pt-4">
|
||||
<h3 class="mb-3 text-sm font-semibold text-[var(--text-primary)]">{$t('stale.title')}</h3>
|
||||
|
||||
Reference in New Issue
Block a user