valheim-oz-dsm 1.4.3 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -9
- package/dist/main.js +342 -7
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.5.0] - 2026-02-01
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Valheim Dedicated Server status section in Dashboard showing installation status, verification, build ID, and location
|
|
14
|
+
- Automatic Valheim server installation after SteamCMD is installed
|
|
15
|
+
- Installation verification that checks for required files (executable, data folder, DLLs)
|
|
16
|
+
- `[V]` keyboard shortcut to manually install/reinstall/verify Valheim server
|
|
17
|
+
- `verifyValheimInstallation()` function with detailed verification results
|
|
18
|
+
- Valheim server state management in Zustand store
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Server start and update actions now require Valheim to be installed (not just SteamCMD)
|
|
22
|
+
- Quick Actions section updated to show Valheim install prompts when needed
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Valheim dedicated server now installs to the correct location (`steamapps/common/Valheim dedicated server`)
|
|
26
|
+
|
|
10
27
|
## [1.4.3] - 2026-02-01
|
|
11
28
|
|
|
12
29
|
### Fixed
|
|
@@ -123,12 +140,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
123
140
|
- Platform detection for Windows, Linux, macOS
|
|
124
141
|
- Basic TUI framework with Ink
|
|
125
142
|
|
|
126
|
-
[Unreleased]: https://github.com/land-of-oz
|
|
127
|
-
[1.0
|
|
128
|
-
[1.
|
|
129
|
-
[1.0.
|
|
130
|
-
[1.0.
|
|
131
|
-
[0.
|
|
132
|
-
[0.
|
|
133
|
-
[0.
|
|
134
|
-
[0.
|
|
143
|
+
[Unreleased]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.5.0...HEAD
|
|
144
|
+
[1.5.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.4.3...v1.5.0
|
|
145
|
+
[1.4.3]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.0.9...v1.4.3
|
|
146
|
+
[1.0.9]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.0.8...v1.0.9
|
|
147
|
+
[1.0.8]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.0.7...v1.0.8
|
|
148
|
+
[1.0.7]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v1.0.0...v1.0.7
|
|
149
|
+
[1.0.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v0.4.0...v1.0.0
|
|
150
|
+
[0.4.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v0.3.0...v0.4.0
|
|
151
|
+
[0.3.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v0.2.0...v0.3.0
|
|
152
|
+
[0.2.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/compare/v0.1.0...v0.2.0
|
|
153
|
+
[0.1.0]: https://github.com/caleb-collar/land-of-oz-dsm-valheim/releases/tag/v0.1.0
|
package/dist/main.js
CHANGED
|
@@ -1810,6 +1810,85 @@ async function isValheimInstalled() {
|
|
|
1810
1810
|
return false;
|
|
1811
1811
|
}
|
|
1812
1812
|
}
|
|
1813
|
+
function getRequiredValheimFiles() {
|
|
1814
|
+
const platform = process.platform;
|
|
1815
|
+
if (platform === "win32") {
|
|
1816
|
+
return [
|
|
1817
|
+
"valheim_server.exe",
|
|
1818
|
+
"valheim_server_Data",
|
|
1819
|
+
"UnityPlayer.dll",
|
|
1820
|
+
"MonoBleedingEdge",
|
|
1821
|
+
"steam_appid.txt"
|
|
1822
|
+
];
|
|
1823
|
+
}
|
|
1824
|
+
return [
|
|
1825
|
+
"valheim_server.x86_64",
|
|
1826
|
+
"valheim_server_Data",
|
|
1827
|
+
"UnityPlayer.so",
|
|
1828
|
+
"steam_appid.txt"
|
|
1829
|
+
];
|
|
1830
|
+
}
|
|
1831
|
+
async function verifyValheimInstallation() {
|
|
1832
|
+
const { valheimDir } = getSteamPaths();
|
|
1833
|
+
const requiredFiles = getRequiredValheimFiles();
|
|
1834
|
+
const missingFiles = [];
|
|
1835
|
+
const foundFiles = [];
|
|
1836
|
+
try {
|
|
1837
|
+
const dirStat = await fs2.stat(valheimDir);
|
|
1838
|
+
if (!dirStat.isDirectory()) {
|
|
1839
|
+
return {
|
|
1840
|
+
valid: false,
|
|
1841
|
+
message: "Valheim installation path exists but is not a directory",
|
|
1842
|
+
missingFiles: requiredFiles,
|
|
1843
|
+
foundFiles: [],
|
|
1844
|
+
installPath: valheimDir
|
|
1845
|
+
};
|
|
1846
|
+
}
|
|
1847
|
+
} catch {
|
|
1848
|
+
return {
|
|
1849
|
+
valid: false,
|
|
1850
|
+
message: "Valheim dedicated server is not installed",
|
|
1851
|
+
missingFiles: requiredFiles,
|
|
1852
|
+
foundFiles: [],
|
|
1853
|
+
installPath: valheimDir
|
|
1854
|
+
};
|
|
1855
|
+
}
|
|
1856
|
+
for (const file of requiredFiles) {
|
|
1857
|
+
const filePath = path3.join(valheimDir, file);
|
|
1858
|
+
try {
|
|
1859
|
+
await fs2.stat(filePath);
|
|
1860
|
+
foundFiles.push(file);
|
|
1861
|
+
} catch {
|
|
1862
|
+
missingFiles.push(file);
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
if (missingFiles.length === 0) {
|
|
1866
|
+
return {
|
|
1867
|
+
valid: true,
|
|
1868
|
+
message: "Valheim installation verified successfully",
|
|
1869
|
+
missingFiles: [],
|
|
1870
|
+
foundFiles,
|
|
1871
|
+
installPath: valheimDir
|
|
1872
|
+
};
|
|
1873
|
+
}
|
|
1874
|
+
const executableFile = process.platform === "win32" ? "valheim_server.exe" : "valheim_server.x86_64";
|
|
1875
|
+
if (missingFiles.includes(executableFile)) {
|
|
1876
|
+
return {
|
|
1877
|
+
valid: false,
|
|
1878
|
+
message: `Valheim server executable not found. Missing: ${missingFiles.join(", ")}`,
|
|
1879
|
+
missingFiles,
|
|
1880
|
+
foundFiles,
|
|
1881
|
+
installPath: valheimDir
|
|
1882
|
+
};
|
|
1883
|
+
}
|
|
1884
|
+
return {
|
|
1885
|
+
valid: false,
|
|
1886
|
+
message: `Valheim installation incomplete. Missing: ${missingFiles.join(", ")}`,
|
|
1887
|
+
missingFiles,
|
|
1888
|
+
foundFiles,
|
|
1889
|
+
installPath: valheimDir
|
|
1890
|
+
};
|
|
1891
|
+
}
|
|
1813
1892
|
|
|
1814
1893
|
// src/steamcmd/updater.ts
|
|
1815
1894
|
import fs3 from "fs/promises";
|
|
@@ -3721,7 +3800,7 @@ import { useEffect as useEffect3, useMemo as useMemo2, useRef as useRef2, useSta
|
|
|
3721
3800
|
// package.json
|
|
3722
3801
|
var package_default = {
|
|
3723
3802
|
name: "valheim-oz-dsm",
|
|
3724
|
-
version: "1.
|
|
3803
|
+
version: "1.5.0",
|
|
3725
3804
|
description: "Land of OZ - Valheim Dedicated Server Manager",
|
|
3726
3805
|
type: "module",
|
|
3727
3806
|
bin: {
|
|
@@ -3911,6 +3990,16 @@ var useStore = create((set) => ({
|
|
|
3911
3990
|
installPercent: 0,
|
|
3912
3991
|
path: null
|
|
3913
3992
|
},
|
|
3993
|
+
// Initial Valheim server state
|
|
3994
|
+
valheim: {
|
|
3995
|
+
installed: null,
|
|
3996
|
+
installing: false,
|
|
3997
|
+
installProgress: "",
|
|
3998
|
+
installPercent: 0,
|
|
3999
|
+
path: null,
|
|
4000
|
+
verified: null,
|
|
4001
|
+
buildId: null
|
|
4002
|
+
},
|
|
3914
4003
|
// Actions
|
|
3915
4004
|
actions: {
|
|
3916
4005
|
// Server actions
|
|
@@ -4096,6 +4185,37 @@ var useStore = create((set) => ({
|
|
|
4096
4185
|
installProgress: "",
|
|
4097
4186
|
installPercent: 0
|
|
4098
4187
|
}
|
|
4188
|
+
})),
|
|
4189
|
+
// Valheim server actions
|
|
4190
|
+
setValheimInstalled: (installed) => set((state) => ({
|
|
4191
|
+
valheim: { ...state.valheim, installed }
|
|
4192
|
+
})),
|
|
4193
|
+
setValheimInstalling: (installing) => set((state) => ({
|
|
4194
|
+
valheim: { ...state.valheim, installing }
|
|
4195
|
+
})),
|
|
4196
|
+
setValheimInstallProgress: (message, percent) => set((state) => ({
|
|
4197
|
+
valheim: {
|
|
4198
|
+
...state.valheim,
|
|
4199
|
+
installProgress: message,
|
|
4200
|
+
installPercent: percent
|
|
4201
|
+
}
|
|
4202
|
+
})),
|
|
4203
|
+
setValheimPath: (path9) => set((state) => ({
|
|
4204
|
+
valheim: { ...state.valheim, path: path9 }
|
|
4205
|
+
})),
|
|
4206
|
+
setValheimVerified: (verified) => set((state) => ({
|
|
4207
|
+
valheim: { ...state.valheim, verified }
|
|
4208
|
+
})),
|
|
4209
|
+
setValheimBuildId: (buildId) => set((state) => ({
|
|
4210
|
+
valheim: { ...state.valheim, buildId }
|
|
4211
|
+
})),
|
|
4212
|
+
resetValheimInstall: () => set((state) => ({
|
|
4213
|
+
valheim: {
|
|
4214
|
+
...state.valheim,
|
|
4215
|
+
installing: false,
|
|
4216
|
+
installProgress: "",
|
|
4217
|
+
installPercent: 0
|
|
4218
|
+
}
|
|
4099
4219
|
}))
|
|
4100
4220
|
}
|
|
4101
4221
|
}));
|
|
@@ -43317,6 +43437,22 @@ var Dashboard = () => {
|
|
|
43317
43437
|
);
|
|
43318
43438
|
const setSteamCmdPath = useStore((s) => s.actions.setSteamCmdPath);
|
|
43319
43439
|
const resetSteamCmdInstall = useStore((s) => s.actions.resetSteamCmdInstall);
|
|
43440
|
+
const valheimInstalled = useStore((s) => s.valheim.installed);
|
|
43441
|
+
const valheimInstalling = useStore((s) => s.valheim.installing);
|
|
43442
|
+
const valheimProgress = useStore((s) => s.valheim.installProgress);
|
|
43443
|
+
const valheimPercent = useStore((s) => s.valheim.installPercent);
|
|
43444
|
+
const valheimPath = useStore((s) => s.valheim.path);
|
|
43445
|
+
const valheimVerified = useStore((s) => s.valheim.verified);
|
|
43446
|
+
const valheimBuildId = useStore((s) => s.valheim.buildId);
|
|
43447
|
+
const setValheimInstalled = useStore((s) => s.actions.setValheimInstalled);
|
|
43448
|
+
const setValheimInstalling = useStore((s) => s.actions.setValheimInstalling);
|
|
43449
|
+
const setValheimInstallProgress = useStore(
|
|
43450
|
+
(s) => s.actions.setValheimInstallProgress
|
|
43451
|
+
);
|
|
43452
|
+
const setValheimPath = useStore((s) => s.actions.setValheimPath);
|
|
43453
|
+
const setValheimVerified = useStore((s) => s.actions.setValheimVerified);
|
|
43454
|
+
const setValheimBuildId = useStore((s) => s.actions.setValheimBuildId);
|
|
43455
|
+
const resetValheimInstall = useStore((s) => s.actions.resetValheimInstall);
|
|
43320
43456
|
const { start, stop, restart, update, forceSave } = useServer();
|
|
43321
43457
|
const [isUpdating2, setIsUpdating] = useState6(false);
|
|
43322
43458
|
const [updateProgress, setUpdateProgress] = useState6("");
|
|
@@ -43338,6 +43474,96 @@ var Dashboard = () => {
|
|
|
43338
43474
|
};
|
|
43339
43475
|
checkSteamCmd2();
|
|
43340
43476
|
}, [setSteamCmdInstalled, setSteamCmdPath]);
|
|
43477
|
+
useEffect7(() => {
|
|
43478
|
+
if (steamCmdInstalled !== true) return;
|
|
43479
|
+
const checkValheim = async () => {
|
|
43480
|
+
try {
|
|
43481
|
+
const installed = await isValheimInstalled();
|
|
43482
|
+
setValheimInstalled(installed);
|
|
43483
|
+
if (installed) {
|
|
43484
|
+
const paths = getSteamPaths();
|
|
43485
|
+
setValheimPath(paths.valheimDir);
|
|
43486
|
+
const verification = await verifyValheimInstallation();
|
|
43487
|
+
setValheimVerified(verification.valid);
|
|
43488
|
+
if (!verification.valid) {
|
|
43489
|
+
addLog("warn", verification.message);
|
|
43490
|
+
}
|
|
43491
|
+
const buildId = await getInstalledVersion();
|
|
43492
|
+
setValheimBuildId(buildId);
|
|
43493
|
+
}
|
|
43494
|
+
} catch {
|
|
43495
|
+
setValheimInstalled(false);
|
|
43496
|
+
setValheimVerified(false);
|
|
43497
|
+
}
|
|
43498
|
+
};
|
|
43499
|
+
checkValheim();
|
|
43500
|
+
}, [
|
|
43501
|
+
steamCmdInstalled,
|
|
43502
|
+
setValheimInstalled,
|
|
43503
|
+
setValheimPath,
|
|
43504
|
+
setValheimVerified,
|
|
43505
|
+
setValheimBuildId,
|
|
43506
|
+
addLog
|
|
43507
|
+
]);
|
|
43508
|
+
useEffect7(() => {
|
|
43509
|
+
if (steamCmdInstalled === true && valheimInstalled === false && !valheimInstalling) {
|
|
43510
|
+
const autoInstallValheim = async () => {
|
|
43511
|
+
setValheimInstalling(true);
|
|
43512
|
+
addLog("info", "Auto-installing Valheim Dedicated Server...");
|
|
43513
|
+
try {
|
|
43514
|
+
await installValheim((status2) => {
|
|
43515
|
+
setValheimInstallProgress(status2.message, status2.progress);
|
|
43516
|
+
if (status2.stage === "complete") {
|
|
43517
|
+
addLog(
|
|
43518
|
+
"info",
|
|
43519
|
+
"Valheim Dedicated Server installed successfully!"
|
|
43520
|
+
);
|
|
43521
|
+
}
|
|
43522
|
+
});
|
|
43523
|
+
setValheimInstalled(true);
|
|
43524
|
+
const paths = getSteamPaths();
|
|
43525
|
+
setValheimPath(paths.valheimDir);
|
|
43526
|
+
const verification = await verifyValheimInstallation();
|
|
43527
|
+
setValheimVerified(verification.valid);
|
|
43528
|
+
if (verification.valid) {
|
|
43529
|
+
addLog(
|
|
43530
|
+
"info",
|
|
43531
|
+
`Installation verified at: ${verification.installPath}`
|
|
43532
|
+
);
|
|
43533
|
+
} else {
|
|
43534
|
+
addLog("warn", verification.message);
|
|
43535
|
+
}
|
|
43536
|
+
const buildId = await getInstalledVersion();
|
|
43537
|
+
setValheimBuildId(buildId);
|
|
43538
|
+
if (buildId) {
|
|
43539
|
+
addLog("info", `Valheim build ID: ${buildId}`);
|
|
43540
|
+
}
|
|
43541
|
+
} catch (error2) {
|
|
43542
|
+
addLog(
|
|
43543
|
+
"error",
|
|
43544
|
+
`Valheim installation failed: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
43545
|
+
);
|
|
43546
|
+
setValheimInstalled(false);
|
|
43547
|
+
setValheimVerified(false);
|
|
43548
|
+
} finally {
|
|
43549
|
+
resetValheimInstall();
|
|
43550
|
+
}
|
|
43551
|
+
};
|
|
43552
|
+
autoInstallValheim();
|
|
43553
|
+
}
|
|
43554
|
+
}, [
|
|
43555
|
+
steamCmdInstalled,
|
|
43556
|
+
valheimInstalled,
|
|
43557
|
+
valheimInstalling,
|
|
43558
|
+
setValheimInstalling,
|
|
43559
|
+
setValheimInstallProgress,
|
|
43560
|
+
setValheimInstalled,
|
|
43561
|
+
setValheimPath,
|
|
43562
|
+
setValheimVerified,
|
|
43563
|
+
setValheimBuildId,
|
|
43564
|
+
resetValheimInstall,
|
|
43565
|
+
addLog
|
|
43566
|
+
]);
|
|
43341
43567
|
useEffect7(() => {
|
|
43342
43568
|
const checkStartupTask = async () => {
|
|
43343
43569
|
try {
|
|
@@ -43373,6 +43599,43 @@ var Dashboard = () => {
|
|
|
43373
43599
|
resetSteamCmdInstall();
|
|
43374
43600
|
}
|
|
43375
43601
|
};
|
|
43602
|
+
const handleInstallValheim = async () => {
|
|
43603
|
+
closeModal();
|
|
43604
|
+
setValheimInstalling(true);
|
|
43605
|
+
addLog("info", "Starting Valheim Dedicated Server installation...");
|
|
43606
|
+
try {
|
|
43607
|
+
await installValheim((status2) => {
|
|
43608
|
+
setValheimInstallProgress(status2.message, status2.progress);
|
|
43609
|
+
if (status2.stage === "complete") {
|
|
43610
|
+
addLog("info", "Valheim Dedicated Server installed successfully!");
|
|
43611
|
+
}
|
|
43612
|
+
});
|
|
43613
|
+
setValheimInstalled(true);
|
|
43614
|
+
const paths = getSteamPaths();
|
|
43615
|
+
setValheimPath(paths.valheimDir);
|
|
43616
|
+
const verification = await verifyValheimInstallation();
|
|
43617
|
+
setValheimVerified(verification.valid);
|
|
43618
|
+
if (verification.valid) {
|
|
43619
|
+
addLog("info", `Installation verified at: ${verification.installPath}`);
|
|
43620
|
+
} else {
|
|
43621
|
+
addLog("warn", verification.message);
|
|
43622
|
+
}
|
|
43623
|
+
const buildId = await getInstalledVersion();
|
|
43624
|
+
setValheimBuildId(buildId);
|
|
43625
|
+
if (buildId) {
|
|
43626
|
+
addLog("info", `Valheim build ID: ${buildId}`);
|
|
43627
|
+
}
|
|
43628
|
+
} catch (error2) {
|
|
43629
|
+
addLog(
|
|
43630
|
+
"error",
|
|
43631
|
+
`Valheim installation failed: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
43632
|
+
);
|
|
43633
|
+
setValheimInstalled(false);
|
|
43634
|
+
setValheimVerified(false);
|
|
43635
|
+
} finally {
|
|
43636
|
+
resetValheimInstall();
|
|
43637
|
+
}
|
|
43638
|
+
};
|
|
43376
43639
|
const handleStopConfirm = () => {
|
|
43377
43640
|
closeModal();
|
|
43378
43641
|
stop();
|
|
@@ -43444,10 +43707,10 @@ var Dashboard = () => {
|
|
|
43444
43707
|
}
|
|
43445
43708
|
};
|
|
43446
43709
|
useInput4((input) => {
|
|
43447
|
-
if (modalOpen || isUpdating2 || steamCmdInstalling || startupTaskProcessing)
|
|
43710
|
+
if (modalOpen || isUpdating2 || steamCmdInstalling || valheimInstalling || startupTaskProcessing)
|
|
43448
43711
|
return;
|
|
43449
43712
|
if (input === "s" || input === "S") {
|
|
43450
|
-
if (status === "offline" && steamCmdInstalled) {
|
|
43713
|
+
if (status === "offline" && steamCmdInstalled && valheimInstalled) {
|
|
43451
43714
|
start();
|
|
43452
43715
|
addLog("info", "Starting server...");
|
|
43453
43716
|
}
|
|
@@ -43481,7 +43744,7 @@ var Dashboard = () => {
|
|
|
43481
43744
|
}
|
|
43482
43745
|
}
|
|
43483
43746
|
if (input === "u" || input === "U") {
|
|
43484
|
-
if (status === "offline" && steamCmdInstalled) {
|
|
43747
|
+
if (status === "offline" && steamCmdInstalled && valheimInstalled) {
|
|
43485
43748
|
openModal(
|
|
43486
43749
|
/* @__PURE__ */ jsx11(
|
|
43487
43750
|
ConfirmModal,
|
|
@@ -43508,6 +43771,21 @@ var Dashboard = () => {
|
|
|
43508
43771
|
);
|
|
43509
43772
|
}
|
|
43510
43773
|
}
|
|
43774
|
+
if (input === "v" || input === "V") {
|
|
43775
|
+
if (steamCmdInstalled && !valheimInstalling) {
|
|
43776
|
+
const action = valheimInstalled === false ? "Install" : "Reinstall/Verify";
|
|
43777
|
+
openModal(
|
|
43778
|
+
/* @__PURE__ */ jsx11(
|
|
43779
|
+
ConfirmModal,
|
|
43780
|
+
{
|
|
43781
|
+
message: `${action} Valheim Dedicated Server? This may take several minutes.`,
|
|
43782
|
+
onConfirm: handleInstallValheim,
|
|
43783
|
+
onCancel: closeModal
|
|
43784
|
+
}
|
|
43785
|
+
)
|
|
43786
|
+
);
|
|
43787
|
+
}
|
|
43788
|
+
}
|
|
43511
43789
|
if (input === "f" || input === "F") {
|
|
43512
43790
|
if (status === "online") {
|
|
43513
43791
|
handleForceSave();
|
|
@@ -43614,6 +43892,28 @@ var Dashboard = () => {
|
|
|
43614
43892
|
)
|
|
43615
43893
|
] });
|
|
43616
43894
|
}
|
|
43895
|
+
if (valheimInstalling) {
|
|
43896
|
+
return /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", flexGrow: 1, padding: 1, children: [
|
|
43897
|
+
/* @__PURE__ */ jsx11(Box11, { marginBottom: 1, children: /* @__PURE__ */ jsx11(Text11, { bold: true, color: theme.primary, children: "\u2500 Dashboard \u2500" }) }),
|
|
43898
|
+
/* @__PURE__ */ jsxs10(
|
|
43899
|
+
Box11,
|
|
43900
|
+
{
|
|
43901
|
+
flexDirection: "column",
|
|
43902
|
+
alignItems: "center",
|
|
43903
|
+
justifyContent: "center",
|
|
43904
|
+
flexGrow: 1,
|
|
43905
|
+
children: [
|
|
43906
|
+
/* @__PURE__ */ jsx11(Spinner, { label: "Installing Valheim Dedicated Server..." }),
|
|
43907
|
+
valheimProgress && /* @__PURE__ */ jsx11(Box11, { marginTop: 1, children: /* @__PURE__ */ jsxs10(Text11, { dimColor: true, children: [
|
|
43908
|
+
valheimProgress,
|
|
43909
|
+
valheimPercent > 0 && ` (${valheimPercent}%)`
|
|
43910
|
+
] }) }),
|
|
43911
|
+
/* @__PURE__ */ jsx11(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Please wait, this may take several minutes..." }) })
|
|
43912
|
+
]
|
|
43913
|
+
}
|
|
43914
|
+
)
|
|
43915
|
+
] });
|
|
43916
|
+
}
|
|
43617
43917
|
return /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", flexGrow: 1, padding: 1, children: [
|
|
43618
43918
|
/* @__PURE__ */ jsx11(Box11, { marginBottom: 1, children: /* @__PURE__ */ jsx11(Text11, { bold: true, color: theme.primary, children: "\u2500 Dashboard \u2500" }) }),
|
|
43619
43919
|
/* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", marginBottom: 1, children: [
|
|
@@ -43629,6 +43929,27 @@ var Dashboard = () => {
|
|
|
43629
43929
|
] })
|
|
43630
43930
|
] })
|
|
43631
43931
|
] }),
|
|
43932
|
+
/* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", marginBottom: 1, children: [
|
|
43933
|
+
/* @__PURE__ */ jsx11(Text11, { bold: true, children: "Valheim Dedicated Server" }),
|
|
43934
|
+
/* @__PURE__ */ jsxs10(Box11, { marginLeft: 2, flexDirection: "column", children: [
|
|
43935
|
+
/* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43936
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Status: " }),
|
|
43937
|
+
steamCmdInstalled !== true ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Waiting for SteamCMD..." }) : valheimInstalled === null ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Checking..." }) : valheimInstalled ? /* @__PURE__ */ jsx11(Text11, { color: theme.success, children: "\u25CF Installed" }) : /* @__PURE__ */ jsx11(Text11, { color: theme.warning, children: "\u25CB Not Installed" })
|
|
43938
|
+
] }),
|
|
43939
|
+
valheimInstalled && valheimVerified !== null && /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43940
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Verified: " }),
|
|
43941
|
+
valheimVerified ? /* @__PURE__ */ jsx11(Text11, { color: theme.success, children: "\u25CF Yes" }) : /* @__PURE__ */ jsx11(Text11, { color: theme.error, children: "\u25CB Files Missing" })
|
|
43942
|
+
] }),
|
|
43943
|
+
valheimInstalled && valheimBuildId && /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43944
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Build ID: " }),
|
|
43945
|
+
/* @__PURE__ */ jsx11(Text11, { dimColor: true, children: valheimBuildId })
|
|
43946
|
+
] }),
|
|
43947
|
+
valheimInstalled && valheimPath && /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43948
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Location: " }),
|
|
43949
|
+
/* @__PURE__ */ jsx11(Text11, { dimColor: true, children: valheimPath })
|
|
43950
|
+
] })
|
|
43951
|
+
] })
|
|
43952
|
+
] }),
|
|
43632
43953
|
/* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", marginBottom: 1, children: [
|
|
43633
43954
|
/* @__PURE__ */ jsx11(Text11, { bold: true, children: "Server Status" }),
|
|
43634
43955
|
/* @__PURE__ */ jsxs10(Box11, { marginLeft: 2, flexDirection: "column", children: [
|
|
@@ -43697,7 +44018,17 @@ var Dashboard = () => {
|
|
|
43697
44018
|
/* @__PURE__ */ jsx11(Text11, { children: "Install SteamCMD" }),
|
|
43698
44019
|
/* @__PURE__ */ jsx11(Text11, { color: theme.warning, children: " (required)" })
|
|
43699
44020
|
] }) }),
|
|
43700
|
-
steamCmdInstalled
|
|
44021
|
+
steamCmdInstalled && valheimInstalled === false && !valheimInstalling && /* @__PURE__ */ jsx11(Box11, { marginBottom: 1, flexShrink: 0, children: /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
44022
|
+
/* @__PURE__ */ jsx11(Text11, { color: theme.info, children: "[V] " }),
|
|
44023
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Install Valheim Server" }),
|
|
44024
|
+
/* @__PURE__ */ jsx11(Text11, { color: theme.warning, children: " (required)" })
|
|
44025
|
+
] }) }),
|
|
44026
|
+
steamCmdInstalled && valheimInstalled && valheimVerified === false && /* @__PURE__ */ jsx11(Box11, { marginBottom: 1, flexShrink: 0, children: /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
44027
|
+
/* @__PURE__ */ jsx11(Text11, { color: theme.warning, children: "[V] " }),
|
|
44028
|
+
/* @__PURE__ */ jsx11(Text11, { children: "Reinstall Valheim Server" }),
|
|
44029
|
+
/* @__PURE__ */ jsx11(Text11, { color: theme.error, children: " (verification failed)" })
|
|
44030
|
+
] }) }),
|
|
44031
|
+
steamCmdInstalled && valheimInstalled ? status === "offline" ? /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
|
|
43701
44032
|
/* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43702
44033
|
/* @__PURE__ */ jsx11(Text11, { color: theme.success, children: "[S] " }),
|
|
43703
44034
|
/* @__PURE__ */ jsx11(Text11, { children: "Start Server" })
|
|
@@ -43706,6 +44037,10 @@ var Dashboard = () => {
|
|
|
43706
44037
|
/* @__PURE__ */ jsx11(Text11, { color: theme.info, children: "[U] " }),
|
|
43707
44038
|
/* @__PURE__ */ jsx11(Text11, { children: "Update Server" }),
|
|
43708
44039
|
updateAvailable && /* @__PURE__ */ jsx11(Text11, { color: theme.warning, children: " \u2605" })
|
|
44040
|
+
] }),
|
|
44041
|
+
/* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
44042
|
+
/* @__PURE__ */ jsx11(Text11, { color: theme.info, children: "[V] " }),
|
|
44043
|
+
/* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Verify/Reinstall Server" })
|
|
43709
44044
|
] })
|
|
43710
44045
|
] }) : status === "online" ? /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
|
|
43711
44046
|
/* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
@@ -43730,7 +44065,7 @@ var Dashboard = () => {
|
|
|
43730
44065
|
/* @__PURE__ */ jsx11(Text11, { color: theme.error, children: "[K] " }),
|
|
43731
44066
|
/* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Force Kill (if stuck)" })
|
|
43732
44067
|
] })
|
|
43733
|
-
] }) : steamCmdInstalled === null ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Checking
|
|
44068
|
+
] }) : steamCmdInstalled === null ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Checking installation status..." }) : !steamCmdInstalled ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Install SteamCMD to manage server" }) : valheimInstalled === null ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Checking Valheim installation..." }) : /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Install Valheim to manage server" }),
|
|
43734
44069
|
/* @__PURE__ */ jsx11(Box11, { marginTop: 1, flexShrink: 0, children: startupTaskProcessing ? /* @__PURE__ */ jsx11(Spinner, { label: "Updating auto-start..." }) : startupTaskRegistered === null ? /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Checking auto-start status..." }) : /* @__PURE__ */ jsxs10(Box11, { flexShrink: 0, children: [
|
|
43735
44070
|
/* @__PURE__ */ jsxs10(
|
|
43736
44071
|
Text11,
|
|
@@ -45678,7 +46013,7 @@ function launchTui() {
|
|
|
45678
46013
|
}
|
|
45679
46014
|
|
|
45680
46015
|
// src/mod.ts
|
|
45681
|
-
var VERSION2 = "1.
|
|
46016
|
+
var VERSION2 = "1.5.0";
|
|
45682
46017
|
var APP_NAME = "Land of OZ - Valheim DSM";
|
|
45683
46018
|
|
|
45684
46019
|
// main.ts
|