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 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/valheim-dsm/compare/v1.0.9...HEAD
127
- [1.0.9]: https://github.com/land-of-oz/valheim-dsm/compare/v1.0.8...v1.0.9
128
- [1.0.8]: https://github.com/land-of-oz/valheim-dsm/compare/v1.0.7...v1.0.8
129
- [1.0.7]: https://github.com/land-of-oz/valheim-dsm/compare/v1.0.0...v1.0.7
130
- [1.0.0]: https://github.com/land-of-oz/valheim-dsm/compare/v0.4.0...v1.0.0
131
- [0.4.0]: https://github.com/land-of-oz/valheim-dsm/compare/v0.3.0...v0.4.0
132
- [0.3.0]: https://github.com/land-of-oz/valheim-dsm/compare/v0.2.0...v0.3.0
133
- [0.2.0]: https://github.com/land-of-oz/valheim-dsm/compare/v0.1.0...v0.2.0
134
- [0.1.0]: https://github.com/land-of-oz/valheim-dsm/releases/tag/v0.1.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.4.3",
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 ? status === "offline" ? /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", children: [
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 SteamCMD status..." }) : /* @__PURE__ */ jsx11(Text11, { dimColor: true, children: "Install SteamCMD to manage server" }),
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.4.3";
46016
+ var VERSION2 = "1.5.0";
45682
46017
  var APP_NAME = "Land of OZ - Valheim DSM";
45683
46018
 
45684
46019
  // main.ts