diff --git a/app.go b/app.go
index 409370d..954d389 100644
--- a/app.go
+++ b/app.go
@@ -174,15 +174,16 @@ type Result struct {
}
type ExtraOptions struct {
- Freeplay bool `json:"freeplay"`
- EnableRendering flat.DebugRendering `json:"enableRendering"`
- EnableStateSetting bool `json:"enableStateSetting"`
- InstantStart bool `json:"instantStart"`
- SkipReplays bool `json:"skipReplays"`
- AutoSaveReplay bool `json:"autoSaveReplay"`
- ExistingMatchBehavior byte `json:"existingMatchBehavior"`
- AutoStartAgents bool `json:"autoStartAgents"`
- WaitForAgents bool `json:"waitForAgents"`
+ Freeplay bool `json:"freeplay"`
+ EnableRendering flat.DebugRendering `json:"enableRendering"`
+ EnableStateSetting bool `json:"enableStateSetting"`
+ InstantStart bool `json:"instantStart"`
+ SkipReplays bool `json:"skipReplays"`
+ AutoSaveReplay bool `json:"autoSaveReplay"`
+ ExistingMatchBehavior byte `json:"existingMatchBehavior"`
+ AutoStartAgents bool `json:"autoStartAgents"`
+ WaitForAgents bool `json:"waitForAgents"`
+ PerformanceMonitor flat.PerformanceMonitor `json:"performanceMonitor"`
}
type StartMatchOptions struct {
@@ -424,6 +425,7 @@ func (a *App) StartMatch(options StartMatchOptions) Result {
Freeplay: options.ExtraOptions.Freeplay,
EnableRendering: options.ExtraOptions.EnableRendering,
EnableStateSetting: options.ExtraOptions.EnableStateSetting,
+ PerformanceMonitor: options.ExtraOptions.PerformanceMonitor,
InstantStart: options.ExtraOptions.InstantStart,
SkipReplays: options.ExtraOptions.SkipReplays,
AutoSaveReplay: options.ExtraOptions.AutoSaveReplay,
diff --git a/frontend/src/components/MatchSettings/Main.svelte b/frontend/src/components/MatchSettings/Main.svelte
index 8a95d49..871d861 100644
--- a/frontend/src/components/MatchSettings/Main.svelte
+++ b/frontend/src/components/MatchSettings/Main.svelte
@@ -36,6 +36,12 @@ const renderingOptions: { [n: string]: number } = {
"Always off": 2,
};
+const performanceMonitorOptions: { [n: string]: number } = {
+ "Show when suboptimal": 0,
+ "Always show": 1,
+ "Never show": 2,
+};
+
function cleanCase(toClean: string): string {
const halfClean = toClean.replaceAll("_", " ");
return halfClean.charAt(0).toUpperCase() + halfClean.slice(1);
@@ -205,6 +211,10 @@ const ALL_MAPS = getMaps();
+
Performance Monitor
+
+
+
{
let extraOptions: ExtraOptions = $state({
existingMatchBehavior: ExistingMatchBehavior.ExistingMatchBehaviorRestart,
enableRendering: DebugRendering.DebugRenderingOffByDefault,
+ performanceMonitor: PerformanceMonitor.PerformanceMonitorShowWhenSuboptimal,
enableStateSetting: true,
autoStartAgents: true,
waitForAgents: true,
diff --git a/go.mod b/go.mod
index 1ac205a..b4d87da 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,7 @@ toolchain go1.24.4
require (
github.com/BurntSushi/toml v1.5.0
- github.com/RLBot/go-interface v0.0.0-20250705224140-6c179505c975
+ github.com/RLBot/go-interface v0.0.0-20260602190105-919cd596b426
github.com/ncruces/zenity v0.10.14
github.com/ulikunitz/xz v0.5.15
github.com/wailsapp/mimetype v1.4.1
@@ -31,7 +31,7 @@ require (
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
- github.com/google/flatbuffers v25.9.23+incompatible // indirect
+ github.com/google/flatbuffers v25.12.19+incompatible // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 // indirect
diff --git a/go.sum b/go.sum
index 181f7f9..272b6e1 100644
--- a/go.sum
+++ b/go.sum
@@ -7,8 +7,8 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw=
github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE=
-github.com/RLBot/go-interface v0.0.0-20250705224140-6c179505c975 h1:vw1+2F2mY7qlw1d8dCvW8r+f+zxyq1H03NL+XrmzBiM=
-github.com/RLBot/go-interface v0.0.0-20250705224140-6c179505c975/go.mod h1:zogQvXLJKb2EQ4bb/PUH168VPwxBdzG1SSFJt9uJM5c=
+github.com/RLBot/go-interface v0.0.0-20260602190105-919cd596b426 h1:UH1GscdLmZTpBlj2pxk2M00w11T7WvDcHZN3fiIKIPo=
+github.com/RLBot/go-interface v0.0.0-20260602190105-919cd596b426/go.mod h1:h1OFzIrmgkjVcRrRSKlTjRAMWwZzD8APhem7ZzPDkmw=
github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=
github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/akavel/rsrc v0.10.2 h1:Zxm8V5eI1hW4gGaYsJQUhxpjkENuG91ki8B4zCrvEsw=
@@ -50,8 +50,8 @@ github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
-github.com/google/flatbuffers v25.9.23+incompatible h1:rGZKv+wOb6QPzIdkM2KxhBZCDrA0DeN6DNmRDrqIsQU=
-github.com/google/flatbuffers v25.9.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
+github.com/google/flatbuffers v25.12.19+incompatible h1:haMV2JRRJCe1998HeW/p0X9UaMTK6SDo0ffLn2+DbLs=
+github.com/google/flatbuffers v25.12.19+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=