From 000195be8914a4a8751001146edcd5e51e2ba0c3 Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Sat, 2 May 2026 16:53:50 -0500 Subject: [PATCH] Fix: State-Based Issues & AboutSettings (WIP) --- PKGBUILD | 2 +- io.github.moku_project.Moku.yml | 6 ++--- src-tauri/binaries/suwayomi-launcher-linux.sh | 8 +++--- .../settings/sections/AboutSettings.svelte | 7 +++-- src/store/state.svelte.ts | 27 ++++++++++++------- 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/PKGBUILD b/PKGBUILD index b5c0cc2..4e1d6b4 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -52,7 +52,7 @@ package() { cat > "$pkgdir/usr/lib/moku/tachidesk/default-conf/server.conf" << 'CONF' server.ip = "127.0.0.1" server.port = 4567 -server.webUIEnabled = false +server.webUIEnabled = true server.initialOpenInBrowserEnabled = false server.systemTrayEnabled = false server.downloadAsCbz = true diff --git a/io.github.moku_project.Moku.yml b/io.github.moku_project.Moku.yml index 4186fa2..17d47af 100644 --- a/io.github.moku_project.Moku.yml +++ b/io.github.moku_project.Moku.yml @@ -95,12 +95,12 @@ modules: cat > /app/tachidesk/default-conf/server.conf << 'EOF' server.ip = "127.0.0.1" server.port = 4567 - server.webUIEnabled = false + server.webUIEnabled = true server.initialOpenInBrowserEnabled = false server.systemTrayEnabled = false server.webUIInterface = "browser" server.webUIFlavor = "WebUI" - server.webUIChannel = "stable" + server.webUIChannel = "PREVIEW" server.electronPath = "" server.debugLogsEnabled = false server.downloadAsCbz = true @@ -130,7 +130,7 @@ modules: "$DATA_DIR/server.conf" # Append keys if absent - grep -q 'server\.webUIEnabled' "$DATA_DIR/server.conf" || echo 'server.webUIEnabled = false' >> "$DATA_DIR/server.conf" + grep -q 'server\.webUIEnabled' "$DATA_DIR/server.conf" || echo 'server.webUIEnabled = true' >> "$DATA_DIR/server.conf" grep -q 'server\.initialOpenInBrowserEnabled' "$DATA_DIR/server.conf" || echo 'server.initialOpenInBrowserEnabled = false' >> "$DATA_DIR/server.conf" grep -q 'server\.systemTrayEnabled' "$DATA_DIR/server.conf" || echo 'server.systemTrayEnabled = false' >> "$DATA_DIR/server.conf" diff --git a/src-tauri/binaries/suwayomi-launcher-linux.sh b/src-tauri/binaries/suwayomi-launcher-linux.sh index a1baa5b..7eea078 100644 --- a/src-tauri/binaries/suwayomi-launcher-linux.sh +++ b/src-tauri/binaries/suwayomi-launcher-linux.sh @@ -61,12 +61,12 @@ if [ ! -f "$DATA_DIR/server.conf" ]; then cat > "$DATA_DIR/server.conf" << 'EOF' server.ip = "127.0.0.1" server.port = 4567 -server.webUIEnabled = false +server.webUIEnabled = true server.initialOpenInBrowserEnabled = false server.systemTrayEnabled = false server.webUIInterface = "browser" server.webUIFlavor = "WebUI" -server.webUIChannel = "stable" +server.webUIChannel = "PREVIEW" server.electronPath = "" server.debugLogsEnabled = false server.downloadAsCbz = true @@ -79,13 +79,13 @@ fi # ── Force-patch the three keys that cause JCEF/GUI crashes ──────────────────── sed -i \ - -e 's|server\.webUIEnabled.*|server.webUIEnabled = false|' \ + -e 's|server\.webUIEnabled.*|server.webUIEnabled = true|' \ -e 's|server\.initialOpenInBrowserEnabled.*|server.initialOpenInBrowserEnabled = false|' \ -e 's|server\.systemTrayEnabled.*|server.systemTrayEnabled = false|' \ "$DATA_DIR/server.conf" # Append keys if absent (e.g. user-managed conf missing them) -grep -q 'server\.webUIEnabled' "$DATA_DIR/server.conf" || echo 'server.webUIEnabled = false' >> "$DATA_DIR/server.conf" +grep -q 'server\.webUIEnabled' "$DATA_DIR/server.conf" || echo 'server.webUIEnabled = true' >> "$DATA_DIR/server.conf" grep -q 'server\.initialOpenInBrowserEnabled' "$DATA_DIR/server.conf" || echo 'server.initialOpenInBrowserEnabled = false' >> "$DATA_DIR/server.conf" grep -q 'server\.systemTrayEnabled' "$DATA_DIR/server.conf" || echo 'server.systemTrayEnabled = false' >> "$DATA_DIR/server.conf" diff --git a/src/features/settings/sections/AboutSettings.svelte b/src/features/settings/sections/AboutSettings.svelte index bb77fb9..9e115d5 100644 --- a/src/features/settings/sections/AboutSettings.svelte +++ b/src/features/settings/sections/AboutSettings.svelte @@ -32,6 +32,9 @@ $effect(() => { getVersion().then(v => appVersion = v).catch(() => appVersion = "unknown"); if (!releasesLoaded) { releasesLoaded = true; loadReleases(); } + }); + + $effect(() => { loadServerInfo(); }); @@ -92,9 +95,9 @@ return new Date(iso).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); } - function fmtBuildTime(unix: number) { + function fmtBuildTime(unix: number | string) { if (!unix) return ""; - return new Date(unix).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); + return new Date(Number(unix) * 1000).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); } function fmtBytes(bytes: number) { diff --git a/src/store/state.svelte.ts b/src/store/state.svelte.ts index b89c660..e63cd47 100644 --- a/src/store/state.svelte.ts +++ b/src/store/state.svelte.ts @@ -10,6 +10,7 @@ import { notifications } from "./no import { app } from "./app.svelte"; import { persistSettings, persistLibrary, persistUpdates } from "../core/persistence/persist"; import type { PersistedData } from "../core/persistence/persist"; +import { untrack } from "svelte"; function localDateStr(d: Date): string { return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; @@ -104,17 +105,23 @@ class Store { (saved.settings as any)[key] = (DEFAULT_SETTINGS as any)[key]; } - this.settings = mergeSettings(saved); - this.history = saved.history ?? []; - this.bookmarks = saved.bookmarks ?? []; - this.markers = saved.markers ?? []; - this.readLog = saved.readLog ?? []; - this.readingStats = saved.readingStats ?? { ...DEFAULT_READING_STATS }; - this.dailyReadCounts = saved.dailyReadCounts ?? {}; - this.libraryUpdates = saved.libraryUpdates ?? []; - this.lastLibraryRefresh = saved.lastLibraryRefresh ?? 0; - this.acknowledgedUpdates = new Set(saved.acknowledgedUpdateIds ?? []); + // Assign all persisted values outside of reactive tracking so the + // $effects registered below don't fire on this initial write. + untrack(() => { + this.settings = mergeSettings(saved); + this.history = saved.history ?? []; + this.bookmarks = saved.bookmarks ?? []; + this.markers = saved.markers ?? []; + this.readLog = saved.readLog ?? []; + this.readingStats = saved.readingStats ?? { ...DEFAULT_READING_STATS }; + this.dailyReadCounts = saved.dailyReadCounts ?? {}; + this.libraryUpdates = saved.libraryUpdates ?? []; + this.lastLibraryRefresh = saved.lastLibraryRefresh ?? 0; + this.acknowledgedUpdates = new Set(saved.acknowledgedUpdateIds ?? []); + }); + // Mark ready before registering effects so the first reactive run + // (which Svelte schedules after the current microtask) is allowed through. this.#ready = true; $effect.root(() => {