Fix: State-Based Issues & AboutSettings (WIP)

This commit is contained in:
Youwes09
2026-05-02 16:53:50 -05:00
parent 399d429142
commit 000195be89
5 changed files with 30 additions and 20 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ package() {
cat > "$pkgdir/usr/lib/moku/tachidesk/default-conf/server.conf" << 'CONF' cat > "$pkgdir/usr/lib/moku/tachidesk/default-conf/server.conf" << 'CONF'
server.ip = "127.0.0.1" server.ip = "127.0.0.1"
server.port = 4567 server.port = 4567
server.webUIEnabled = false server.webUIEnabled = true
server.initialOpenInBrowserEnabled = false server.initialOpenInBrowserEnabled = false
server.systemTrayEnabled = false server.systemTrayEnabled = false
server.downloadAsCbz = true server.downloadAsCbz = true
+3 -3
View File
@@ -95,12 +95,12 @@ modules:
cat > /app/tachidesk/default-conf/server.conf << 'EOF' cat > /app/tachidesk/default-conf/server.conf << 'EOF'
server.ip = "127.0.0.1" server.ip = "127.0.0.1"
server.port = 4567 server.port = 4567
server.webUIEnabled = false server.webUIEnabled = true
server.initialOpenInBrowserEnabled = false server.initialOpenInBrowserEnabled = false
server.systemTrayEnabled = false server.systemTrayEnabled = false
server.webUIInterface = "browser" server.webUIInterface = "browser"
server.webUIFlavor = "WebUI" server.webUIFlavor = "WebUI"
server.webUIChannel = "stable" server.webUIChannel = "PREVIEW"
server.electronPath = "" server.electronPath = ""
server.debugLogsEnabled = false server.debugLogsEnabled = false
server.downloadAsCbz = true server.downloadAsCbz = true
@@ -130,7 +130,7 @@ modules:
"$DATA_DIR/server.conf" "$DATA_DIR/server.conf"
# Append keys if absent # 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\.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" grep -q 'server\.systemTrayEnabled' "$DATA_DIR/server.conf" || echo 'server.systemTrayEnabled = false' >> "$DATA_DIR/server.conf"
@@ -61,12 +61,12 @@ if [ ! -f "$DATA_DIR/server.conf" ]; then
cat > "$DATA_DIR/server.conf" << 'EOF' cat > "$DATA_DIR/server.conf" << 'EOF'
server.ip = "127.0.0.1" server.ip = "127.0.0.1"
server.port = 4567 server.port = 4567
server.webUIEnabled = false server.webUIEnabled = true
server.initialOpenInBrowserEnabled = false server.initialOpenInBrowserEnabled = false
server.systemTrayEnabled = false server.systemTrayEnabled = false
server.webUIInterface = "browser" server.webUIInterface = "browser"
server.webUIFlavor = "WebUI" server.webUIFlavor = "WebUI"
server.webUIChannel = "stable" server.webUIChannel = "PREVIEW"
server.electronPath = "" server.electronPath = ""
server.debugLogsEnabled = false server.debugLogsEnabled = false
server.downloadAsCbz = true server.downloadAsCbz = true
@@ -79,13 +79,13 @@ fi
# ── Force-patch the three keys that cause JCEF/GUI crashes ──────────────────── # ── Force-patch the three keys that cause JCEF/GUI crashes ────────────────────
sed -i \ 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\.initialOpenInBrowserEnabled.*|server.initialOpenInBrowserEnabled = false|' \
-e 's|server\.systemTrayEnabled.*|server.systemTrayEnabled = false|' \ -e 's|server\.systemTrayEnabled.*|server.systemTrayEnabled = false|' \
"$DATA_DIR/server.conf" "$DATA_DIR/server.conf"
# Append keys if absent (e.g. user-managed conf missing them) # 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\.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" grep -q 'server\.systemTrayEnabled' "$DATA_DIR/server.conf" || echo 'server.systemTrayEnabled = false' >> "$DATA_DIR/server.conf"
@@ -32,6 +32,9 @@
$effect(() => { $effect(() => {
getVersion().then(v => appVersion = v).catch(() => appVersion = "unknown"); getVersion().then(v => appVersion = v).catch(() => appVersion = "unknown");
if (!releasesLoaded) { releasesLoaded = true; loadReleases(); } if (!releasesLoaded) { releasesLoaded = true; loadReleases(); }
});
$effect(() => {
loadServerInfo(); loadServerInfo();
}); });
@@ -92,9 +95,9 @@
return new Date(iso).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); return new Date(iso).toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" });
} }
function fmtBuildTime(unix: number) { function fmtBuildTime(unix: number | string) {
if (!unix) return ""; 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) { function fmtBytes(bytes: number) {
+7
View File
@@ -10,6 +10,7 @@ import { notifications } from "./no
import { app } from "./app.svelte"; import { app } from "./app.svelte";
import { persistSettings, persistLibrary, persistUpdates } from "../core/persistence/persist"; import { persistSettings, persistLibrary, persistUpdates } from "../core/persistence/persist";
import type { PersistedData } from "../core/persistence/persist"; import type { PersistedData } from "../core/persistence/persist";
import { untrack } from "svelte";
function localDateStr(d: Date): string { function localDateStr(d: Date): string {
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
@@ -104,6 +105,9 @@ class Store {
(saved.settings as any)[key] = (DEFAULT_SETTINGS as any)[key]; (saved.settings as any)[key] = (DEFAULT_SETTINGS as any)[key];
} }
// 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.settings = mergeSettings(saved);
this.history = saved.history ?? []; this.history = saved.history ?? [];
this.bookmarks = saved.bookmarks ?? []; this.bookmarks = saved.bookmarks ?? [];
@@ -114,7 +118,10 @@ class Store {
this.libraryUpdates = saved.libraryUpdates ?? []; this.libraryUpdates = saved.libraryUpdates ?? [];
this.lastLibraryRefresh = saved.lastLibraryRefresh ?? 0; this.lastLibraryRefresh = saved.lastLibraryRefresh ?? 0;
this.acknowledgedUpdates = new Set(saved.acknowledgedUpdateIds ?? []); 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; this.#ready = true;
$effect.root(() => { $effect.root(() => {