diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 9681386c..b76e55a2 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -27,6 +27,22 @@ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \ apt-get install -y nodejs && \ npm install -g npm@latest +# Install Wine for Windows .exe builds +RUN dpkg --add-architecture i386 && \ + apt-get update && \ + apt-get install -y wine wine32 wine64 && \ + rm -rf /var/lib/apt/lists/* + +# Install NSIS for Windows NSIS installer +RUN wget -q https://downloads.sourceforge.net/project/nsis/NSIS%203/3.09/nsis-3.09-setup.exe && \ + wine nsis-3.09-setup.exe /S && \ + rm nsis-3.09-setup.exe + +# Start D-Bus to avoid Electron errors +RUN service dbus start + # Set up non-root user and workspace + +RUN mkdir -p /tmp/ssui && chmod 777 /tmp/ssui USER vscode WORKDIR /workspaces \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0ed4e03b..d3b18136 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,21 +1,32 @@ { - "name": "StationeersServerUI", + "name": "SteamSererUI", "build": { "dockerfile": "Dockerfile", - "args": { "TZ": "${localEnv:TZ:Europe/Stockholm}" } + "args": { + "TZ": "${localEnv:TZ:Europe/Stockholm}" + } }, "workspaceFolder": "/workspaces/project", "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/project,type=bind,consistency=cached", + "mounts": [ + "source=ssui-socket-volume,target=/tmp/ssui,type=volume" + ], "features": { "ghcr.io/devcontainers/features/go:1": { "version": "1.25.0" } }, - "forwardPorts": [8443], - "runArgs": ["-p=27015:27015/udp", "-p=27016:27016/udp"], + "forwardPorts": [ + 8443 + ], + "runArgs": [ + "-p=27015:27015/udp", + "-p=27016:27016/udp" + ], "portsAttributes": { - "8443": { "label": "Go Backend Server" } - + "8443": { + "label": "Go Backend Server" + } }, "customizations": { "vscode": { @@ -23,11 +34,27 @@ "golang.go", "svelte.svelte-vscode", "supermaven.supermaven", - "eamodio.gitlens" + "eamodio.gitlens", + "pkief.material-icon-theme" ], "settings": { "go.toolsManagement.autoUpdate": true, - "svelte.enable-ts-plugin": true + "svelte.enable-ts-plugin": true, + "workbench.iconTheme": "material-icon-theme", + "workbench.colorTheme": "Solarized Dark", + "material-icon-theme.files.customClones": [ + { + "name": "ssui", + "base": "rocket", + "color": "blue-500", + "fileExtensions": [ + "ssui" + ] + } + ], + "files.associations": { + "*.ssui": "json" + } } } }, diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 9bd45c49..e6bf47a4 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -10,7 +10,7 @@ COPY ./frontend/package.json ./frontend/package-lock.json* ./ RUN npm install COPY ./frontend/ ./ -# Build Svelte UI into ../UIMod/onboard_bundled/v2 (as configured in vite.config.js) +# Build Svelte UI into ../SSUI/onboard_bundled/v2 (as configured in vite.config.js) RUN npm run build ############ @@ -26,9 +26,9 @@ RUN go mod download COPY . ./ -COPY --from=frontend-builder /src/UIMod /src/UIMod +COPY --from=frontend-builder /src/SSUI /src/SSUI -# Build the server (embed will include UIMod/* at build time) +# Build the server (embed will include SSUI/* at build time) RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /out/StationeersServerUI ./server.go ############ diff --git a/.docker/compose.yml b/.docker/compose.yml index a57d4413..920705af 100644 --- a/.docker/compose.yml +++ b/.docker/compose.yml @@ -24,7 +24,7 @@ services: volumes: - app-data:/app - ./saves:/app/saves:rw - - ./UIMod:/app/UIMod:rw + - ./SSUI:/app/SSUI:rw restart: unless-stopped volumes: diff --git a/.github/workflows/auto-release.yaml b/.github/workflows/auto-release.yaml index b36a7157..5252c402 100644 --- a/.github/workflows/auto-release.yaml +++ b/.github/workflows/auto-release.yaml @@ -39,7 +39,7 @@ jobs: - name: Verify build output run: | cd build - if ls StationeersServerControl*; then + if ls SteamServerUI*; then echo "Build succeeded: Executable found." else echo "Build failed: No executable found." @@ -108,7 +108,7 @@ jobs: prerelease: false tag_name: ${{ steps.check_tag.outputs.tag }} name: "Release ${{ steps.check_tag.outputs.tag }}" - files: ./build/StationeersServerControl* + files: ./build/SteamServerUI* fail_on_unmatched_files: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index e26bd219..7e691137 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -31,8 +31,8 @@ jobs: # Verify the executable exists - name: Verify build output run: | - cd build - if ls StationeersServerControl*; then + cd build/release + if ls SteamServerUI*; then echo "Build succeeded: Executable found." else echo "Build failed: No executable found." @@ -45,4 +45,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: StationeersServerControl - path: ./build/StationeersServerControl* \ No newline at end of file + path: ./build/SteamServerUI* \ No newline at end of file diff --git a/.gitignore b/.gitignore index ecfce688..4f79e85a 100644 --- a/.gitignore +++ b/.gitignore @@ -16,12 +16,13 @@ rocketstation_DedicatedServer* /saves/* .github/workflows/nightly-sync.yml repos.md -UIMod/*.pem -build/StationeersServerControl* +SSUI/*.pem +build/SteamServerUI* +build/release Blacklist.txt -UIMod/detectionmanager/customdetections.json -UIMod/tls/cert.pem -UIMod/tls/key.pem +SSUI/detectionmanager/customdetections.json +SSUI/tls/cert.pem +SSUI/tls/key.pem steamapps/** steamcmd/** Steam/** @@ -34,13 +35,17 @@ BepInEx/** run_bepinex.sh debug.log modconfig.xml -UIMod/config/config.json +SSUI/config/config.json C:/custom/file.txt -UIMod/config/customdetections.json +SSUI/config/customdetections.json winhttp.dll autostart* __debug_bin* frontend/node_modules +frontend/dist_electron frontend/dist frontend/build -UIMod/onboard_bundled/v2 +SSUI/onboard_bundled/v2 +SSUI/runfiles/** +SSUI/plugins/** +StationeersNewTerrain/** diff --git a/.vscode/launch.json b/.vscode/launch.json index b5d9d441..2498df4a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -29,6 +29,17 @@ "console": "integratedTerminal", "showLog": false, // Hides some Go Debugger(Delve) log stuff that is not useful for debugging atm "args": ["--NoSteamCMD"] + }, + { + "name": "Debug Go Server noSteamCMD BUT svelte", + "type": "go", + "request": "launch", + "mode": "debug", + "program": "${workspaceFolder}/server.go", + "console": "integratedTerminal", + "preLaunchTask": "npm: build", + "showLog": false, // Hides some Go Debugger(Delve) log stuff that is not useful for debugging atm + "args": ["--NoSteamCMD"] } ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 377aed6d..1f0b6364 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -13,8 +13,7 @@ }, "problemMatcher": [], "group": "build", - "detail": "Install Svelte UI dependencies", - "hide": true + "detail": "Install Svelte UI dependencies" }, { "type": "shell", @@ -52,7 +51,32 @@ }, { "type": "shell", - "label": "Build: Go Server with fresh assets", + "label": "npm: build electron & svelte", + "command": "npm", + "args": [ + "run", + "electron" + ], + "options": { + "cwd": "${workspaceFolder}/frontend" + }, + "problemMatcher": [], + "group": "test", + "isBackground": true, + "presentation": { + "reveal": "always", + "panel": "dedicated" + }, + "dependsOn": [ + "go: sync backend version with frontend version", + "npm: build" + ], + "dependsOrder": "sequence", + "detail": "Build Electron App for Linux and Windows" + }, + { + "type": "shell", + "label": "go: run build.go", "command": "go", "args": [ "run", @@ -67,7 +91,22 @@ "npm: build" ], "dependsOrder": "sequence", - "hide": false + "hide": true + }, + { + "label": "Build: Full Project (Prep a release)", + "dependsOn": [ + "npm: install", + "npm: build electron & svelte", + "go: run build.go" + ], + "dependsOrder": "sequence", + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Complete build pipeline to prepare all files needed to ship release", + "problemMatcher": [] }, { "label": "Run: Go Server with fresh assets", diff --git a/UIMod/onboard_bundled/assets/apiinfo.html b/SSUI/onboard_bundled/assets/apiinfo.html similarity index 100% rename from UIMod/onboard_bundled/assets/apiinfo.html rename to SSUI/onboard_bundled/assets/apiinfo.html diff --git a/UIMod/onboard_bundled/assets/css/apiinfo.css b/SSUI/onboard_bundled/assets/css/apiinfo.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/apiinfo.css rename to SSUI/onboard_bundled/assets/css/apiinfo.css diff --git a/UIMod/onboard_bundled/assets/css/background.css b/SSUI/onboard_bundled/assets/css/background.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/background.css rename to SSUI/onboard_bundled/assets/css/background.css diff --git a/UIMod/onboard_bundled/assets/css/base.css b/SSUI/onboard_bundled/assets/css/base.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/base.css rename to SSUI/onboard_bundled/assets/css/base.css diff --git a/UIMod/onboard_bundled/assets/css/components.css b/SSUI/onboard_bundled/assets/css/components.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/components.css rename to SSUI/onboard_bundled/assets/css/components.css diff --git a/UIMod/onboard_bundled/assets/css/config.css b/SSUI/onboard_bundled/assets/css/config.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/config.css rename to SSUI/onboard_bundled/assets/css/config.css diff --git a/UIMod/onboard_bundled/assets/css/detectionmanager.css b/SSUI/onboard_bundled/assets/css/detectionmanager.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/detectionmanager.css rename to SSUI/onboard_bundled/assets/css/detectionmanager.css diff --git a/UIMod/onboard_bundled/assets/css/flags.css b/SSUI/onboard_bundled/assets/css/flags.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/flags.css rename to SSUI/onboard_bundled/assets/css/flags.css diff --git a/UIMod/onboard_bundled/assets/css/home.css b/SSUI/onboard_bundled/assets/css/home.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/home.css rename to SSUI/onboard_bundled/assets/css/home.css diff --git a/UIMod/onboard_bundled/assets/css/info-notice.css b/SSUI/onboard_bundled/assets/css/info-notice.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/info-notice.css rename to SSUI/onboard_bundled/assets/css/info-notice.css diff --git a/UIMod/onboard_bundled/assets/css/mobile.css b/SSUI/onboard_bundled/assets/css/mobile.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/mobile.css rename to SSUI/onboard_bundled/assets/css/mobile.css diff --git a/UIMod/onboard_bundled/assets/css/popup.css b/SSUI/onboard_bundled/assets/css/popup.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/popup.css rename to SSUI/onboard_bundled/assets/css/popup.css diff --git a/UIMod/onboard_bundled/assets/css/sscm.css b/SSUI/onboard_bundled/assets/css/sscm.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/sscm.css rename to SSUI/onboard_bundled/assets/css/sscm.css diff --git a/UIMod/onboard_bundled/assets/css/style.css b/SSUI/onboard_bundled/assets/css/style.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/style.css rename to SSUI/onboard_bundled/assets/css/style.css diff --git a/UIMod/onboard_bundled/assets/css/tabs.css b/SSUI/onboard_bundled/assets/css/tabs.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/tabs.css rename to SSUI/onboard_bundled/assets/css/tabs.css diff --git a/UIMod/onboard_bundled/assets/css/variables.css b/SSUI/onboard_bundled/assets/css/variables.css similarity index 100% rename from UIMod/onboard_bundled/assets/css/variables.css rename to SSUI/onboard_bundled/assets/css/variables.css diff --git a/UIMod/onboard_bundled/assets/favicon.ico b/SSUI/onboard_bundled/assets/favicon.ico similarity index 100% rename from UIMod/onboard_bundled/assets/favicon.ico rename to SSUI/onboard_bundled/assets/favicon.ico diff --git a/UIMod/onboard_bundled/assets/flags/de.webp b/SSUI/onboard_bundled/assets/flags/de.webp similarity index 100% rename from UIMod/onboard_bundled/assets/flags/de.webp rename to SSUI/onboard_bundled/assets/flags/de.webp diff --git a/UIMod/onboard_bundled/assets/flags/en.webp b/SSUI/onboard_bundled/assets/flags/en.webp similarity index 100% rename from UIMod/onboard_bundled/assets/flags/en.webp rename to SSUI/onboard_bundled/assets/flags/en.webp diff --git a/UIMod/onboard_bundled/assets/flags/sv.webp b/SSUI/onboard_bundled/assets/flags/sv.webp similarity index 100% rename from UIMod/onboard_bundled/assets/flags/sv.webp rename to SSUI/onboard_bundled/assets/flags/sv.webp diff --git a/UIMod/onboard_bundled/assets/js/console-manager.js b/SSUI/onboard_bundled/assets/js/console-manager.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/console-manager.js rename to SSUI/onboard_bundled/assets/js/console-manager.js diff --git a/UIMod/onboard_bundled/assets/js/detectionmanager.js b/SSUI/onboard_bundled/assets/js/detectionmanager.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/detectionmanager.js rename to SSUI/onboard_bundled/assets/js/detectionmanager.js diff --git a/UIMod/onboard_bundled/assets/js/main.js b/SSUI/onboard_bundled/assets/js/main.js similarity index 99% rename from UIMod/onboard_bundled/assets/js/main.js rename to SSUI/onboard_bundled/assets/js/main.js index ab8acda6..469c853f 100644 --- a/UIMod/onboard_bundled/assets/js/main.js +++ b/SSUI/onboard_bundled/assets/js/main.js @@ -8,7 +8,6 @@ document.addEventListener('DOMContentLoaded', () => { resourceSaver(false); } typeh1(document.querySelector('h1'), 30); - if (window.location.pathname == '/') { setupTabs(); fetchDetectionEvents(); setupLogStreams({ @@ -34,7 +33,6 @@ document.addEventListener('DOMContentLoaded', () => { createPlanet(planetContainer, 70, 400, 28, 'rgba(200, 150, 200, 0.7)'); } console.warn("If you see errors for sscm.js or sscm.css, you may want to enable SSCM."); - } // Language flag selection const languageFlags = document.querySelectorAll('#language-flags img'); languageFlags.forEach(flag => { diff --git a/UIMod/onboard_bundled/assets/js/popup.js b/SSUI/onboard_bundled/assets/js/popup.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/popup.js rename to SSUI/onboard_bundled/assets/js/popup.js diff --git a/UIMod/onboard_bundled/assets/js/server-api.js b/SSUI/onboard_bundled/assets/js/server-api.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/server-api.js rename to SSUI/onboard_bundled/assets/js/server-api.js diff --git a/UIMod/onboard_bundled/assets/js/sscm.js b/SSUI/onboard_bundled/assets/js/sscm.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/sscm.js rename to SSUI/onboard_bundled/assets/js/sscm.js diff --git a/UIMod/onboard_bundled/assets/js/ui-utils.js b/SSUI/onboard_bundled/assets/js/ui-utils.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/ui-utils.js rename to SSUI/onboard_bundled/assets/js/ui-utils.js diff --git a/UIMod/onboard_bundled/assets/js/world-gen-config.js b/SSUI/onboard_bundled/assets/js/world-gen-config.js similarity index 100% rename from UIMod/onboard_bundled/assets/js/world-gen-config.js rename to SSUI/onboard_bundled/assets/js/world-gen-config.js diff --git a/UIMod/onboard_bundled/assets/playerimages/anna.webp b/SSUI/onboard_bundled/assets/playerimages/anna.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/anna.webp rename to SSUI/onboard_bundled/assets/playerimages/anna.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/dan.webp b/SSUI/onboard_bundled/assets/playerimages/dan.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/dan.webp rename to SSUI/onboard_bundled/assets/playerimages/dan.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/darragh.webp b/SSUI/onboard_bundled/assets/playerimages/darragh.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/darragh.webp rename to SSUI/onboard_bundled/assets/playerimages/darragh.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/david.webp b/SSUI/onboard_bundled/assets/playerimages/david.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/david.webp rename to SSUI/onboard_bundled/assets/playerimages/david.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/dean.webp b/SSUI/onboard_bundled/assets/playerimages/dean.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/dean.webp rename to SSUI/onboard_bundled/assets/playerimages/dean.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/garrison.webp b/SSUI/onboard_bundled/assets/playerimages/garrison.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/garrison.webp rename to SSUI/onboard_bundled/assets/playerimages/garrison.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/ivette.webp b/SSUI/onboard_bundled/assets/playerimages/ivette.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/ivette.webp rename to SSUI/onboard_bundled/assets/playerimages/ivette.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/john.webp b/SSUI/onboard_bundled/assets/playerimages/john.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/john.webp rename to SSUI/onboard_bundled/assets/playerimages/john.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/julia.webp b/SSUI/onboard_bundled/assets/playerimages/julia.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/julia.webp rename to SSUI/onboard_bundled/assets/playerimages/julia.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/ove.webp b/SSUI/onboard_bundled/assets/playerimages/ove.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/ove.webp rename to SSUI/onboard_bundled/assets/playerimages/ove.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/pierre.webp b/SSUI/onboard_bundled/assets/playerimages/pierre.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/pierre.webp rename to SSUI/onboard_bundled/assets/playerimages/pierre.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/rolf.webp b/SSUI/onboard_bundled/assets/playerimages/rolf.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/rolf.webp rename to SSUI/onboard_bundled/assets/playerimages/rolf.webp diff --git a/UIMod/onboard_bundled/assets/playerimages/ronald.webp b/SSUI/onboard_bundled/assets/playerimages/ronald.webp similarity index 100% rename from UIMod/onboard_bundled/assets/playerimages/ronald.webp rename to SSUI/onboard_bundled/assets/playerimages/ronald.webp diff --git a/UIMod/onboard_bundled/assets/stationeers.webp b/SSUI/onboard_bundled/assets/stationeers.webp similarity index 100% rename from UIMod/onboard_bundled/assets/stationeers.webp rename to SSUI/onboard_bundled/assets/stationeers.webp diff --git a/UIMod/onboard_bundled/detectionmanager/detectionmanager.html b/SSUI/onboard_bundled/detectionmanager/detectionmanager.html similarity index 99% rename from UIMod/onboard_bundled/detectionmanager/detectionmanager.html rename to SSUI/onboard_bundled/detectionmanager/detectionmanager.html index e298d02e..f0f7158a 100644 --- a/UIMod/onboard_bundled/detectionmanager/detectionmanager.html +++ b/SSUI/onboard_bundled/detectionmanager/detectionmanager.html @@ -103,7 +103,7 @@