Skip to content
Closed
6 changes: 6 additions & 0 deletions UIMod/onboard_bundled/twoboxform/twoboxform.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,12 @@ document.addEventListener('DOMContentLoaded', () => {

} else if (configField === "SaveInfo") {
const primaryValue = document.getElementById('primary-field').value.trim();
// If the world type contains a space, it's invalid
if (primaryValue.includes(' ')) {
showNotification('The world type cannot contain spaces!', 'error');
hidePreloader();
return; // Prevent submission
}
Comment on lines +141 to +146

Copilot AI Sep 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment on line 141 has a trailing space that should be removed for consistency.

Copilot uses AI. Check for mistakes.
const secondaryValue = document.getElementById('secondary-field').value.trim();
if (secondaryValue === '' || secondaryValue === document.getElementById('secondary-field').placeholder) {
showNotification('Please select a world type!', 'error');
Expand Down
122 changes: 122 additions & 0 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":semanticCommits",
":semanticCommitsAll",
":rebaseStalePrs",
":prConcurrentLimit10",
":prHourlyLimit4",
":labels(renovate)",
":disableRateLimiting"
],

"timezone": "Etc/UTC",
"automerge": false,
"platformAutomerge": false,
"assignees": [],
"baseBranches": ["nightly"],
"reviewers": ["JacksonTheMaster", "mitoskalandiel"],
"dependencyDashboard": true,
"dependencyDashboardTitle": "Renovate Dashboard",

"enabledManagers": [
"gomod",
"npm",
"dockerfile",
"docker-compose",
"github-actions"
],

"npm": {
"managerFilePatterns": [
"frontend/package.json"
]
},

"ignorePaths": [
"**/node_modules/**",
"**/dist/**",
"**/build/**",
"**/public/**",
"**/.svelte-kit/**",
"**/sscm/**",
"**/steamcmd/**",
"**/Steam/**",
"**/steamapps/**",
"**/UIMod/**",
"**/saves/**"
],

"packageRules": [
{
"matchManagers": ["github-actions"],
"groupName": "github-actions",
"labels": ["ci", "renovate"],
"automerge": false,
"automergeType": "branch",
"platformAutomerge": false
},
{
"matchManagers": ["dockerfile", "docker-compose"],
"groupName": "docker base images",
"labels": ["docker", "renovate"],
"pinDigests": true,
"matchUpdateTypes": ["digest"],
"automerge": false,
"automergeType": "branch",
"platformAutomerge": false
},
{
"matchManagers": ["gomod"],
"groupName": "go modules (minor/patch)",
"labels": ["go", "renovate"],
"matchUpdateTypes": ["minor", "patch"],
"automerge": false,
"automergeType": "branch",
"platformAutomerge": false
},
{
"matchManagers": ["gomod"],
"groupName": "go modules (major)",
"labels": ["go", "major"],
"matchUpdateTypes": ["major"],
"automerge": false
},
{
"matchManagers": ["npm"],
"matchFileNames": [
"^frontend/"
],
"labels": ["frontend", "npm", "renovate"],
"matchUpdateTypes": ["patch", "minor"],
"groupName": "frontend deps (minor/patch)",
"automerge": false,
"automergeType": "branch",
"platformAutomerge": false
},
{
"matchManagers": ["npm"],
"matchFileNames": [
"^frontend/"
],
"labels": ["frontend", "npm", "major"],
"matchUpdateTypes": ["major"],
"groupName": "frontend deps (major)",
"automerge": false
},
{
"matchPackageNames": [
"golang.org/x/*",
"github.com/golang/*",
"github.com/bwmarrin/discordgo"
],
"labels": ["go", "important"],
"separateMinorPatch": false
}
],

"prCreation": "not-pending",
"minimumReleaseAge": "2 days",
"commitBodyTable": true
}
2 changes: 1 addition & 1 deletion src/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

var (
// All configuration variables can be found in vars.go
Version = "5.6.5"
Version = "5.6.6"
Branch = "release"
)

Expand Down
6 changes: 6 additions & 0 deletions src/config/getters.go
Original file line number Diff line number Diff line change
Expand Up @@ -487,3 +487,9 @@ func GetAllowAutoGameServerUpdates() bool {
defer ConfigMu.RUnlock()
return AllowAutoGameServerUpdates
}

func GetExtractedGameVersion() string {
ConfigMu.RLock()
defer ConfigMu.RUnlock()
return ExtractedGameVersion
}
8 changes: 8 additions & 0 deletions src/config/setters.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ func SetCurrentBranchBuildID(value string) error {
return nil
}

func SetExtractedGameVersion(value string) error {
ConfigMu.Lock()
defer ConfigMu.Unlock()

ExtractedGameVersion = value
return nil
}

// ALL SETTERS BELOW THIS LINE ARE UNUSED AT THE MOMENT
// ALL SETTERS BELOW THIS LINE ARE UNUSED AT THE MOMENT
// ALL SETTERS BELOW THIS LINE ARE UNUSED AT THE MOMENT
Expand Down
1 change: 1 addition & 0 deletions src/config/vars.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ var (
AutoStartServerOnStartup bool
SSUIIdentifier string
CurrentBranchBuildID string // ONLY RUNTIME
ExtractedGameVersion string // ONLY RUNTIME
)

// Discord integration
Expand Down
2 changes: 1 addition & 1 deletion src/core/loader/terminalmsg.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,6 @@ func printFirstTimeSetupMessage() {
logger.Core.Cleanf(" │ • Configure your server by visiting the WebUI! │")
logger.Core.Cleanf(" │ • Support is provided at https://discord.gg/8n3vN92MyJ │")
logger.Core.Cleanf(" │ • For more details, check the GitHub Wiki: │")
logger.Core.Cleanf(" │ • https://github.com/JacksonTheMaster/StationeersServerUI/v5/wiki │")
logger.Core.Cleanf(" │ • https://github.com/SteamServerUI/StationeersServerUI/v5/wiki │")
logger.Core.Cleanf(" └─────────────────────────────────────────────────────────────────────────────────────────────┘")
}
14 changes: 14 additions & 0 deletions src/managers/detectionmgr/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"strings"
"time"

"github.com/JacksonTheMaster/StationeersServerUI/v5/src/config"
"github.com/JacksonTheMaster/StationeersServerUI/v5/src/discordbot"
)

Expand Down Expand Up @@ -240,6 +241,19 @@ func (d *Detector) processRegexPatterns(logMessage string) {
})
},
},
{
pattern: regexp.MustCompile(`Version\s*:\s*(\d+\.\d+\.\d+\.\d+)`),
handler: func(matches []string, logMessage string) {
version := matches[1]
d.triggerEvent(Event{
Type: EventVersionExtracted,
Message: fmt.Sprintf("Version %s detected", version),

Copilot AI Sep 19, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The message format duplicates the version display logic from the handler. Consider using just the version string as the message to avoid redundancy, since the handler already formats it as 'Version %s detected'.

Suggested change
Message: fmt.Sprintf("Version %s detected", version),
Message: version,

Copilot uses AI. Check for mistakes.
RawLog: logMessage,
Timestamp: time.Now().Format(time.RFC3339),
})
config.SetExtractedGameVersion(version)
},
},
}

for _, p := range patterns {
Expand Down
6 changes: 6 additions & 0 deletions src/managers/detectionmgr/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ func DefaultHandlers() map[EventType]Handler {
ssestream.BroadcastDetectionEvent(message)
discordbot.SendMessageToStatusChannel(message)
},
EventVersionExtracted: func(event Event) {
message := fmt.Sprintf("🎮 [Gameserver] 📦 Version %s detected", event.Message)
logger.Detection.Info(message)
ssestream.BroadcastDetectionEvent(message)
discordbot.SendMessageToStatusChannel(message)
},
EventServerRunning: func(event Event) {
message := "🎮 [Gameserver] ✅ Server process has started!"
logger.Detection.Info(message)
Expand Down
1 change: 1 addition & 0 deletions src/managers/detectionmgr/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const (
EventSettingsChanged EventType = "SETTINGS_CHANGED"
EventServerHosted EventType = "SERVER_HOSTED"
EventNewGameStarted EventType = "NEW_GAME_STARTED"
EventVersionExtracted EventType = "VERSION_EXTRACTED"
EventServerRunning EventType = "SERVER_RUNNING"
EventCustomDetection EventType = "CUSTOM_DETECTION"
)
Expand Down