Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
68ed892
this adds the core runfile logic from steamserverui
JacksonTheMaster Sep 30, 2025
e47d898
this adds the settings implementaiton from SteamServerUI
JacksonTheMaster Sep 30, 2025
fa05177
added config interfaces from SteamServerUI
JacksonTheMaster Sep 30, 2025
56624c4
added systeminfo (osstats) from SteamServerUI
JacksonTheMaster Sep 30, 2025
d24ff61
added runfile gallery from SteamServerUI
JacksonTheMaster Sep 30, 2025
3e20c25
reorganized package names
JacksonTheMaster Sep 30, 2025
085ca89
added persistent IsSteamServerUI setting and switch in steamcmd accor…
JacksonTheMaster Sep 30, 2025
9564c4c
refactored runfile handling to use persistent "RunfileIdentifier"; up…
JacksonTheMaster Sep 30, 2025
de6d573
added runfile loading to loader
JacksonTheMaster Sep 30, 2025
09d45af
added steamcmd call to loader when init runfile is called
JacksonTheMaster Sep 30, 2025
ffc9d85
small logging and testing improvements
JacksonTheMaster Oct 3, 2025
0b48572
renamed "default" value in runfiles to "value" as that field stores t…
JacksonTheMaster Oct 3, 2025
8e224ea
renamed setting "IsSteamServerUI" to "UseRunfiles"
JacksonTheMaster Oct 3, 2025
db8d729
skip steamcmd when runfiles are true for better testing
JacksonTheMaster Oct 3, 2025
c9dc0f0
fix loggin in runfile init
JacksonTheMaster Oct 3, 2025
98fedc2
add TestArgBuilder and register new CLI command for argument building…
JacksonTheMaster Oct 3, 2025
a471203
changed BuildCommandArgs to allow appending the value but not the fla…
JacksonTheMaster Oct 3, 2025
229fbd1
save config when RunfileIdentifier is updated
JacksonTheMaster Oct 4, 2025
a4f227c
added a arg.Special to hide args from the rf on the UI
JacksonTheMaster Oct 4, 2025
a36f803
use runfile for steamcmd auto update poller if configured, otherwise …
JacksonTheMaster Oct 5, 2025
e118d27
added IsStationeersMode setting
JacksonTheMaster Oct 5, 2025
a1f1100
update Discord RPC activity wording
JacksonTheMaster Oct 5, 2025
eb5bd1b
unified setter & getter files
JacksonTheMaster Oct 5, 2025
b270df5
re-enable steamcmd for testing
JacksonTheMaster Oct 5, 2025
7539046
added v6 arg builder to startup
JacksonTheMaster Oct 5, 2025
5398c33
[Megacommit] Rework of many systems, see following lines:
JacksonTheMaster Oct 5, 2025
e38fddb
allow any category name from the rf on the UI
JacksonTheMaster Oct 5, 2025
c143395
Added socket server: Unix socket / named pipes and add dedicated logg…
JacksonTheMaster Oct 10, 2025
4238c90
add runfiles folder to gitignore
JacksonTheMaster Oct 10, 2025
58850f0
updated logger references in future api package to use logger.API
JacksonTheMaster Oct 10, 2025
11bb32b
renamed web package to api, changed references accordingly
JacksonTheMaster Oct 10, 2025
7920074
improve socket paths
JacksonTheMaster Oct 10, 2025
fc3117e
updated devcontainer config
JacksonTheMaster Oct 10, 2025
fed7508
moved discordbot and discordrpc to dedicated discord folder
JacksonTheMaster Oct 10, 2025
010ff17
apply fix for SSE Stream race condition in v7 SSE handling
JacksonTheMaster Oct 11, 2025
cd00e8b
change module name from JacksonTheMaster/StationeersServerUI to Steam…
JacksonTheMaster Oct 11, 2025
0383a75
adjust executable name to SteamServerUI
JacksonTheMaster Oct 11, 2025
16a86d5
bump version to v7
JacksonTheMaster Oct 11, 2025
70ea29b
update startup banner
JacksonTheMaster Oct 11, 2025
6e2d56d
revert unix socket path to /tmp
JacksonTheMaster Oct 11, 2025
013c1f2
renamed UIMod folder to SSUI
JacksonTheMaster Oct 11, 2025
35f411a
fix github workflows after renames
JacksonTheMaster Oct 11, 2025
e1dcf55
refactor: move web's auth handlers to httpauth package and update rou…
JacksonTheMaster Oct 14, 2025
c5ff3f6
refactor: relocate API functions into subpages for better organization
JacksonTheMaster Oct 14, 2025
4b0f06b
refactor activateAuth (FinalizeSetup) to use setters instead of legac…
JacksonTheMaster Oct 14, 2025
1b1a465
adds jwt based api keys (long-lived user tokens for now)
JacksonTheMaster Oct 14, 2025
704f7c0
added a logger api that can log to logger.Plugin from an api request
JacksonTheMaster Oct 15, 2025
8e3d685
add GetArgValue method to RunFile for retrieving runtime values by flag
JacksonTheMaster Oct 15, 2025
45aa895
remove deprecated staioneers specific server configuration fields and…
JacksonTheMaster Oct 15, 2025
3933d98
firstpass on making the BMv2 a standalone plugin by removing config r…
JacksonTheMaster Oct 15, 2025
7e17ef8
changed default UI (/) to svelte UI
JacksonTheMaster Oct 15, 2025
a4cfa6e
disabled BMv2 and removed the IsNewTerrain setting
JacksonTheMaster Oct 15, 2025
6e205d4
updated devcontainer to expose socket api file, improve socket api
JacksonTheMaster Oct 16, 2025
17c8531
fix runfile loading & improve logging noise
JacksonTheMaster Oct 17, 2025
b79ad68
added small logsCard to main dashboard
JacksonTheMaster Oct 17, 2025
b5f65f4
add socket proxy handler and endpoit to register routes that are pass…
JacksonTheMaster Oct 18, 2025
8f4101b
added route already registered check
JacksonTheMaster Oct 18, 2025
cf9a280
change socket permission to 0600
JacksonTheMaster Oct 18, 2025
2b81619
improved responses for plugin proxy
JacksonTheMaster Oct 18, 2025
7185932
added global reference to webserver mux
JacksonTheMaster Oct 18, 2025
7b4bbd8
added some sanity checking to plugin proxy
JacksonTheMaster Oct 18, 2025
f572095
fix UnixSocketProxyHandler to support dynamic plugin names for route …
JacksonTheMaster Oct 19, 2025
d1854b9
enhance UnixSocketProxyHandler to include query params
JacksonTheMaster Oct 19, 2025
80b9c9f
added /api/v2/runfile/args/getarg to get a single arg from rf
JacksonTheMaster Oct 19, 2025
8eddb7a
added dynamic plugins views to frontend
JacksonTheMaster Oct 19, 2025
3b2e72a
fix plugins view would show multiple times in navbars
JacksonTheMaster Oct 19, 2025
00ff4af
re-added the Desktop App & Backend CORS handling for it.
JacksonTheMaster Oct 19, 2025
a1e970c
added firstpass on file gather/edit/save api
JacksonTheMaster Oct 20, 2025
b77d5f8
added more info to the getFiles endpoint
JacksonTheMaster Oct 21, 2025
3f46b81
changed getFile endpoint to POST
JacksonTheMaster Oct 21, 2025
40efcd1
added fileView to settings tab: allows editing additional config file…
JacksonTheMaster Oct 21, 2025
2cd5d24
improved file view, now has structured view display and notifications
JacksonTheMaster Oct 21, 2025
5aa4841
ignored some svelte warnings and removed unused css
JacksonTheMaster Oct 21, 2025
a58641e
removed warnbox from UI
JacksonTheMaster Oct 21, 2025
f9979b8
improved file viewer error response text
JacksonTheMaster Oct 21, 2025
d6f8e1e
added plugingallery based on runfilegallery, plugin loading not yet i…
JacksonTheMaster Oct 21, 2025
c8d1782
after multiple tries, this is a functional, (hopefully) versatile way…
JacksonTheMaster Oct 22, 2025
2489de2
fix executable location in test-build.yml
JacksonTheMaster Oct 22, 2025
41fcb0e
fix wrong string in SanityCheck, fixes #132 in v7
JacksonTheMaster Oct 22, 2025
bd50a37
Add redownload option to PluginSelectHandler and update SavePluginToD…
JacksonTheMaster Oct 22, 2025
43d9baf
Refactor plugin API: update endpoints, add plugin management function…
JacksonTheMaster Oct 22, 2025
1f08ec7
fixed error when route was already registerd to use success
JacksonTheMaster Oct 22, 2025
d02150b
removed debugging print statement
JacksonTheMaster Oct 22, 2025
0972b1d
Potential fix for code scanning alert no. 34: Uncontrolled data used …
JacksonTheMaster Oct 22, 2025
49f993f
Potential fix for code scanning alert no. 13: Reflected cross-site sc…
JacksonTheMaster Oct 22, 2025
4e89b8c
Potential fix for code scanning alert no. 36: Uncontrolled data used …
JacksonTheMaster Oct 22, 2025
45a027e
improved plugin socket error response
JacksonTheMaster Oct 22, 2025
9879d00
undo 49f993f0ee58f5fcd3e54341e51dc56595a34b63 as fix did not fix things
JacksonTheMaster Oct 22, 2025
3e263a1
added first pass on plugin gallery, combined plugin and runfile lib
JacksonTheMaster Oct 22, 2025
2c7f30e
removed all references to old backup manager
JacksonTheMaster Oct 22, 2025
f79139f
reorganized gallery frontend files
JacksonTheMaster Oct 23, 2025
1f5b30a
added redownload failsaves for plugins & runfiles with basic UI
JacksonTheMaster Oct 23, 2025
916fed7
BepInEx, gameserver and SSCM now use the subfolder named after the cu…
JacksonTheMaster Oct 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
43 changes: 35 additions & 8 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,60 @@
{
"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": {
"extensions": [
"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"
}
}
}
},
Expand Down
6 changes: 3 additions & 3 deletions .docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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

############
Expand All @@ -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

############
Expand Down
2 changes: 1 addition & 1 deletion .docker/compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/auto-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand Down Expand Up @@ -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 }}
6 changes: 3 additions & 3 deletions .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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."
Expand All @@ -45,4 +45,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: StationeersServerControl
path: ./build/StationeersServerControl*
path: ./build/SteamServerUI*
21 changes: 13 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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/**
Expand All @@ -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/**
11 changes: 11 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
}
]
}
47 changes: 43 additions & 4 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
},
"problemMatcher": [],
"group": "build",
"detail": "Install Svelte UI dependencies",
"hide": true
"detail": "Install Svelte UI dependencies"
},
{
"type": "shell",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ document.addEventListener('DOMContentLoaded', () => {
resourceSaver(false);
}
typeh1(document.querySelector('h1'), 30);
if (window.location.pathname == '/') {
setupTabs();
fetchDetectionEvents();
setupLogStreams({
Expand All @@ -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 => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ <h4>Regex Detection:</h4>
</div>

<div class="form-actions">
<button type="button" class="back-button" onclick="window.location.href = '/config'"></button>
<button type="button" class="back-button" onclick="window.location.href = '/legacy/config'"></button>
</div>

<div class="notification" id="notification"></div>
Expand Down
Loading
Loading