diff --git a/package.json b/package.json index c333284..4e70471 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,10 @@ }, "dependencies": { "@tauri-apps/api": "^2.0.0", + "@tauri-apps/plugin-http": "^2.5.9", "@tauri-apps/plugin-os": "^2.3.2", + "@tauri-apps/plugin-shell": "^2.3.5", + "@tauri-apps/plugin-store": "^2.4.3", "phosphor-svelte": "^3.1.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 376cca2..56df0dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,18 @@ importers: '@tauri-apps/api': specifier: ^2.0.0 version: 2.11.0 + '@tauri-apps/plugin-http': + specifier: ^2.5.9 + version: 2.5.9 '@tauri-apps/plugin-os': specifier: ^2.3.2 version: 2.3.2 + '@tauri-apps/plugin-shell': + specifier: ^2.3.5 + version: 2.3.5 + '@tauri-apps/plugin-store': + specifier: ^2.4.3 + version: 2.4.3 phosphor-svelte: specifier: ^3.1.0 version: 3.1.0(svelte@5.55.5(@typescript-eslint/types@8.57.1))(vite@8.0.10) @@ -477,9 +486,18 @@ packages: engines: {node: '>= 10'} hasBin: true + '@tauri-apps/plugin-http@2.5.9': + resolution: {integrity: sha512-lCiY0+vs4HvIUSvZrBs8TC3TiCB0MOPRmiUjTq4prW7SlcJE2jdLeT6KBsJrT9Tlplufl7W1pY6SFAO3gCWxDA==} + '@tauri-apps/plugin-os@2.3.2': resolution: {integrity: sha512-n+nXWeuSeF9wcEsSPmRnBEGrRgOy6jjkSU+UVCOV8YUGKb2erhDOxis7IqRXiRVHhY8XMKks00BJ0OAdkpf6+A==} + '@tauri-apps/plugin-shell@2.3.5': + resolution: {integrity: sha512-jewtULhiQ7lI7+owCKAjc8tYLJr92U16bPOeAa472LHJdgaibLP83NcfAF2e+wkEcA53FxKQAZ7byDzs2eeizg==} + + '@tauri-apps/plugin-store@2.4.3': + resolution: {integrity: sha512-9LWPj9yMphRi9czEtUv87XHbl1b6xgd9EXpPrUnq6nG7+nbtoF84d4Kwz9xhAv/Hf30sr58pq7EOlyI936y8qw==} + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -1145,10 +1163,22 @@ snapshots: '@tauri-apps/cli-win32-ia32-msvc': 2.11.2 '@tauri-apps/cli-win32-x64-msvc': 2.11.2 + '@tauri-apps/plugin-http@2.5.9': + dependencies: + '@tauri-apps/api': 2.11.0 + '@tauri-apps/plugin-os@2.3.2': dependencies: '@tauri-apps/api': 2.11.0 + '@tauri-apps/plugin-shell@2.3.5': + dependencies: + '@tauri-apps/api': 2.11.0 + + '@tauri-apps/plugin-store@2.4.3': + dependencies: + '@tauri-apps/api': 2.11.0 + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 diff --git a/src/app.css b/src/app.css index 027fdb2..27393ac 100644 --- a/src/app.css +++ b/src/app.css @@ -1,3 +1,5 @@ +@import '$lib/components/settings/Settings.css'; + :root { --bg-void: #080808; --bg-base: #0c0c0c; diff --git a/src/lib/ui/chrome/AuthGate.svelte b/src/lib/components/chrome/AuthGate.svelte similarity index 74% rename from src/lib/ui/chrome/AuthGate.svelte rename to src/lib/components/chrome/AuthGate.svelte index fb05126..44b4efe 100644 --- a/src/lib/ui/chrome/AuthGate.svelte +++ b/src/lib/components/chrome/AuthGate.svelte @@ -1,35 +1,10 @@ @@ -43,8 +18,8 @@
{appState.serverUrl || 'localhost:4567'}
- {#if loginError} -{loginError}
+ {#if boot.loginError} +{boot.loginError}
{/if}{TABS.find(t => t.id === tab)?.label}
+Moku
+Version
+Server
+Releases
+{releasesError}
+ {:else if releasesLoading} +Fetching releases…
+ {:else if releases.length === 0} +No releases found.
+ {:else} +{release.body.trim()}
+ Links
+Theme
+Behaviour
+Global Defaults
+Downloads
+On Read
+Updates
+Custom Overrides
+Content Level
+Source Overrides
+Loading sources…
+ {:else if contentSources.length === 0} +No sources found — check your server connection.
+ {:else} +Toasts
+Previews
+Biometrics
+Runtime
+Auth (UI Login)
+Manage Folders
+Loading folders…
+ {:else} +No custom folders yet. Create one below.
+ {/if} + {/if} + +Interface Scale
+Server
+Window
+Inactivity
+Integrations
+Animations
+Language
++ Keyboard Shortcuts + +
+Click a binding to rebind, then press the new key combination.
+Display
+Chapters
+Series
+Render Limit
+Rendering
+Idle / Splash Screen
+Session Cache
+Cache
+Page Layout
+Fit & Zoom
+Behaviour
++ Server Authentication + + {settingsState.settings.serverAuthMode === 'BASIC_AUTH' ? 'Basic Auth' : + settingsState.settings.serverAuthMode === 'UI_LOGIN' ? 'UI Login' : 'Disabled'} + +
+SOCKS Proxy
+FlareSolverr
++ Disk Usage + +
+Reading filesystem…
+ {:else if storageError} +{storageError}
+ {:else if isExternalServer} +Disk usage is unavailable for external servers — filesystem access requires a local connection.
+ {:else if multiStorageInfos.length > 0} + {#each multiStorageInfos as info} + {@const limitGb = settingsState.settings.storageLimitGb ?? null} + {@const limitBytes = limitGb !== null ? limitGb * 1024 ** 3 : null} + {@const available = info.manga_bytes + info.free_bytes} + {@const cap = limitBytes !== null ? Math.min(limitBytes, available) : available} + {@const pct = cap > 0 ? Math.min(100, (info.manga_bytes / cap) * 100) : 0} +No download path configured.
+ {/if} +Downloads Path
+Storage Limit
+Library backup
+ +No backups yet — create one above.
+ {:else} + {#each backupList as backup} +App data backup
+ +Connected Trackers
+Loading trackers…
+ {:else} + {#each trackers as tracker} +Sync back from tracker
+{displayManga.description}
+ {#if displayManga.description.length > 220} + + {/if} +