From e4998e91d30581ad52cf068dc3abb736c38759b2 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 14 Jun 2026 23:18:55 -0700 Subject: [PATCH 1/3] auth localization + new wizauth --- SS14.Launcher/Assets/Locale/en-US/text.ftl | 7 ++++++- SS14.Launcher/ConfigConstants.cs | 6 +++++- SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs | 3 ++- SS14.Launcher/ViewModels/Login/LoginViewModel.cs | 5 +++-- SS14.Launcher/ViewModels/Login/RegisterViewModel.cs | 4 +++- .../ViewModels/Login/ResendConfirmationViewModel.cs | 2 -- SS14.Launcher/Views/Login/ForgotPasswordView.xaml | 2 +- SS14.Launcher/Views/Login/LoginView.xaml | 2 +- SS14.Launcher/Views/Login/RegisterView.xaml | 2 +- 9 files changed, 22 insertions(+), 11 deletions(-) diff --git a/SS14.Launcher/Assets/Locale/en-US/text.ftl b/SS14.Launcher/Assets/Locale/en-US/text.ftl index 62d1136c..c6b6a071 100644 --- a/SS14.Launcher/Assets/Locale/en-US/text.ftl +++ b/SS14.Launcher/Assets/Locale/en-US/text.ftl @@ -149,6 +149,11 @@ login-login-username-watermark = Username or email login-login-password-watermark = Password login-login-show-password = Show Password login-login-auth-server = Account Provider +login-login-auth-Space-Wizards-Federation = Space Wizards +login-login-auth-Space-Wizards = Space Wizards (Legacy) +login-login-auth-SimpleStation = SimpleStation +login-login-auth-guest = Guest +login-login-auth-Custom = Custom login-login-button-log-in = Log in login-login-button-forgot = Forgot your password? login-login-button-resend = Resend email confirmation @@ -258,7 +263,7 @@ tab-servers-byond-error-msg = BYOND not installed or found tab-servers-byond-error-desc = To connect to BYOND servers, please install BYOND from https://www.byond.com/download/ and ensure it is set as the default program for handling byond:// links. tab-servers-byond-error-link-text = Download BYOND tab-servers-byond-exception-msg = Failed to connect to BYOND server -tab-servers-byond-exception-desc = An error occurred while trying to launch BYOND: +tab-servers-byond-exception-desc = An error occurred while trying to launch BYOND: tab-servers-refresh = Refresh filters = Filters ({ $filteredServers } / { $totalServers }) diff --git a/SS14.Launcher/ConfigConstants.cs b/SS14.Launcher/ConfigConstants.cs index f758f103..23b557f6 100644 --- a/SS14.Launcher/ConfigConstants.cs +++ b/SS14.Launcher/ConfigConstants.cs @@ -32,7 +32,7 @@ public static class ConfigConstants // Amount of time to wait to let a redialling client properly die public const int LauncherCommandsRedialWaitTimeout = 1000; - public const string FallbackAuthServer = "Space-Wizards"; + public const string FallbackAuthServer = "Space-Wizards-Federation"; public const string GuestAuthServer = "guest"; public const string CustomAuthServer = "Custom"; public static readonly AuthServer TemplateAuthServer = new(new("https://example.com/"), new("https://example.com/")); @@ -40,6 +40,10 @@ public static class ConfigConstants { { FallbackAuthServer, + new(new("https://auth.playss14.com/"), new("https://account.playss14.com/"), false) + }, + { + "Space-Wizards", new(new("https://auth.spacestation14.com/"), new("https://account.spacestation14.com/"), false) }, { diff --git a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs index e9538004..4a953ad6 100644 --- a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs @@ -15,7 +15,8 @@ public sealed class ForgotPasswordViewModel : BaseLoginViewModel private readonly LocalizationManager _loc = LocalizationManager.Instance; [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.ToList(); + [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); + public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } diff --git a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs index 6ca16273..91e746b1 100644 --- a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs @@ -20,7 +20,8 @@ public class LoginViewModel : BaseLoginViewModel private readonly LocalizationManager _loc = LocalizationManager.Instance; [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.ToList(); + [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); + public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } @@ -50,7 +51,7 @@ public LoginViewModel(MainWindowLoginViewModel parentVm, AuthApi authApi, IsCustom = Server == ConfigConstants.CustomAuthServer; ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(Server).AuthUrl.ToString(); IsServerPotentiallyValid = !IsCustom || !Busy && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); - RegisterButtonContent = _loc.GetString("login-login-button-register", ("server", Server)); + RegisterButtonContent = _loc.GetString("login-login-button-register", ("server", _loc.GetString($"login-login-auth-{Server}"))); }); } diff --git a/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs b/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs index 64cce979..33ae426c 100644 --- a/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs @@ -7,6 +7,7 @@ using ReactiveUI.Fody.Helpers; using Robust.Shared.AuthLib; using SS14.Launcher.Api; +using SS14.Launcher.Localization; using SS14.Launcher.Models.Data; using SS14.Launcher.Models.Logins; @@ -19,7 +20,8 @@ public class RegisterViewModel : BaseLoginViewModel private readonly LoginManager _loginMgr; [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.ToList(); + [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); + public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } diff --git a/SS14.Launcher/ViewModels/Login/ResendConfirmationViewModel.cs b/SS14.Launcher/ViewModels/Login/ResendConfirmationViewModel.cs index bcf24992..f0e401b1 100644 --- a/SS14.Launcher/ViewModels/Login/ResendConfirmationViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/ResendConfirmationViewModel.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using ReactiveUI; using ReactiveUI.Fody.Helpers; @@ -13,7 +12,6 @@ public class ResendConfirmationViewModel : BaseLoginViewModel private readonly AuthApi _authApi; [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.ToList(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } diff --git a/SS14.Launcher/Views/Login/ForgotPasswordView.xaml b/SS14.Launcher/Views/Login/ForgotPasswordView.xaml index d1c0238e..d69cf747 100644 --- a/SS14.Launcher/Views/Login/ForgotPasswordView.xaml +++ b/SS14.Launcher/Views/Login/ForgotPasswordView.xaml @@ -24,7 +24,7 @@ diff --git a/SS14.Launcher/Views/Login/LoginView.xaml b/SS14.Launcher/Views/Login/LoginView.xaml index 4b88f42e..3adf29c0 100644 --- a/SS14.Launcher/Views/Login/LoginView.xaml +++ b/SS14.Launcher/Views/Login/LoginView.xaml @@ -35,7 +35,7 @@ diff --git a/SS14.Launcher/Views/Login/RegisterView.xaml b/SS14.Launcher/Views/Login/RegisterView.xaml index e11c8c4a..de6af224 100644 --- a/SS14.Launcher/Views/Login/RegisterView.xaml +++ b/SS14.Launcher/Views/Login/RegisterView.xaml @@ -29,7 +29,7 @@ From af4fa1d830c4bcf93c404c222d0576d2de9b4f94 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Sun, 14 Jun 2026 23:53:06 -0700 Subject: [PATCH 2/3] fix crash --- SS14.Launcher/Models/Logins/LoginManager.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/SS14.Launcher/Models/Logins/LoginManager.cs b/SS14.Launcher/Models/Logins/LoginManager.cs index b2319ca3..efb7cb5b 100644 --- a/SS14.Launcher/Models/Logins/LoginManager.cs +++ b/SS14.Launcher/Models/Logins/LoginManager.cs @@ -203,7 +203,15 @@ public static ConfigConstants.AuthServer GetAuthServerById(string serverId, stri customAccountSite ??= TryGetAccountUrl(serverId, customAuthUrl); if (customAccountSite == null) + { +#if DEBUG + // You fool throw new ArgumentException("Failed to get account URL for custom server."); +#else + Log.Warning("Failed to get account URL for custom server, using template info."); + customAccountSite = ConfigConstants.TemplateAuthServer.AccountSite.ToString(); +#endif + } return new ConfigConstants.AuthServer(new(customAuthUrl), new(customAccountSite)); } @@ -218,8 +226,18 @@ public static ConfigConstants.AuthServer GetAuthServerById(string serverId, stri // Make an http request to the custom URL to get the account URL var http = HappyEyeballsHttp.CreateHttpClient(); - var response = http.GetAsync(new Uri(customAuthUrl) + ConfigConstants.TemplateAuthServer.AuthAccountSitePath).Result; + HttpResponseMessage response; + try + { + response = http.GetAsync(new Uri(customAuthUrl) + ConfigConstants.TemplateAuthServer.AuthAccountSitePath).Result; + } + catch (Exception e) + { + Log.Error($"Failed to contact custom auth server at {customAuthUrl} to get account URL: {e}"); + return null; + } http.Dispose(); + if (!response.IsSuccessStatusCode) { Log.Error("Failed to get account URL from custom auth server with status {status}", response.StatusCode); From 07d79ddd36e14a95a315122b742596d8ba9928f5 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT Date: Mon, 15 Jun 2026 02:46:02 -0700 Subject: [PATCH 3/3] localize auths real --- .../ViewModels/Login/BaseLoginViewModel.cs | 8 +++++++ .../Login/ForgotPasswordViewModel.cs | 15 ++++++------- .../ViewModels/Login/LoginViewModel.cs | 21 ++++++++----------- .../ViewModels/Login/RegisterViewModel.cs | 12 +++++------ .../Views/Login/ForgotPasswordView.xaml | 2 +- SS14.Launcher/Views/Login/LoginView.xaml | 4 ++-- SS14.Launcher/Views/Login/RegisterView.xaml | 2 +- 7 files changed, 35 insertions(+), 29 deletions(-) diff --git a/SS14.Launcher/ViewModels/Login/BaseLoginViewModel.cs b/SS14.Launcher/ViewModels/Login/BaseLoginViewModel.cs index 1d4c817d..4f0b85ee 100644 --- a/SS14.Launcher/ViewModels/Login/BaseLoginViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/BaseLoginViewModel.cs @@ -1,4 +1,7 @@ +using System.Collections.Generic; +using System.Linq; using ReactiveUI.Fody.Helpers; +using SS14.Launcher.Localization; namespace SS14.Launcher.ViewModels.Login; @@ -9,6 +12,11 @@ public abstract class BaseLoginViewModel : ViewModelBase, IErrorOverlayOwner [Reactive] public ViewModelBase? OverlayControl { get; set; } public MainWindowLoginViewModel ParentVM { get; } + [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.Keys.Select(k => LocalizationManager.Instance.GetString($"login-login-auth-{k}")).First(); + public string? ServerID => Delocalizer.TryGetValue(Server, out var id) ? id : null; + [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(k => LocalizationManager.Instance.GetString($"login-login-auth-{k}")).ToList(); + public Dictionary Delocalizer = ConfigConstants.AuthUrls.ToDictionary(kv => LocalizationManager.Instance.GetString($"login-login-auth-{kv.Key}"), kv => kv.Key); + protected BaseLoginViewModel(MainWindowLoginViewModel parentVM) { ParentVM = parentVM; diff --git a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs index 4a953ad6..4703d68e 100644 --- a/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/ForgotPasswordViewModel.cs @@ -14,15 +14,13 @@ public sealed class ForgotPasswordViewModel : BaseLoginViewModel private readonly AuthApi _authApi; private readonly LocalizationManager _loc = LocalizationManager.Instance; - [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); - public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } [Reactive] public bool IsServerPotentiallyValid { get; private set; } [Reactive] public string EditingEmail { get; set; } = ""; + [Reactive] public bool IsInputValid { get; private set; } private bool _errored; @@ -33,12 +31,15 @@ public ForgotPasswordViewModel( { _authApi = authApi; - this.WhenAnyValue(x => x.Server, x => x.ServerUrl) + this.WhenAnyValue(x => x.Server, x => x.ServerUrl, x => x.EditingEmail) .Subscribe(s => { - IsCustom = Server == ConfigConstants.CustomAuthServer; - ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(Server).AuthUrl.ToString(); - IsServerPotentiallyValid = !IsCustom || !Busy && !string.IsNullOrEmpty(EditingEmail) && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); + IsCustom = ServerID == ConfigConstants.CustomAuthServer; + IsInputValid = IsCustom + ? !string.IsNullOrEmpty(s.Item2) && !string.IsNullOrEmpty(s.Item3) + : !string.IsNullOrEmpty(ServerID) && !string.IsNullOrEmpty(s.Item3); + ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(ServerID).AuthUrl.ToString(); + IsServerPotentiallyValid = !IsCustom || !Busy && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); }); } diff --git a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs index 91e746b1..7ce2c5e1 100644 --- a/SS14.Launcher/ViewModels/Login/LoginViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/LoginViewModel.cs @@ -19,9 +19,6 @@ public class LoginViewModel : BaseLoginViewModel private readonly DataManager _dataManager; private readonly LocalizationManager _loc = LocalizationManager.Instance; - [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); - public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } @@ -45,13 +42,13 @@ public LoginViewModel(MainWindowLoginViewModel parentVm, AuthApi authApi, this.WhenAnyValue(x => x.Server, x => x.ServerUrl, x => x.EditingUsername, x => x.EditingPassword) .Subscribe(s => { - IsInputValid = s.Item1 == ConfigConstants.CustomAuthServer - ? !string.IsNullOrEmpty(s.Item2) && !string.IsNullOrEmpty(s.Item2) && !string.IsNullOrEmpty(s.Item3) - : !string.IsNullOrEmpty(s.Item1) && !string.IsNullOrEmpty(s.Item3); - IsCustom = Server == ConfigConstants.CustomAuthServer; - ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(Server).AuthUrl.ToString(); + IsCustom = ServerID == ConfigConstants.CustomAuthServer; + IsInputValid = IsCustom + ? !string.IsNullOrEmpty(s.Item2) && !string.IsNullOrEmpty(s.Item3) + : !string.IsNullOrEmpty(ServerID) && !string.IsNullOrEmpty(s.Item3); + ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(ServerID).AuthUrl.ToString(); IsServerPotentiallyValid = !IsCustom || !Busy && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); - RegisterButtonContent = _loc.GetString("login-login-button-register", ("server", _loc.GetString($"login-login-auth-{Server}"))); + RegisterButtonContent = _loc.GetString("login-login-button-register", ("server", Server)); }); } @@ -65,7 +62,7 @@ public async void OnLogInButtonPressed() Busy = true; try { - var request = new AuthApi.AuthenticateRequest(Server, ServerUrl, EditingUsername, null, EditingPassword); + var request = new AuthApi.AuthenticateRequest(ServerID, ServerUrl, EditingUsername, null, EditingPassword); var resp = await _authApi.AuthenticateAsync(request); await DoLogin(this, request, resp, _loginMgr, _authApi); @@ -128,7 +125,7 @@ public static async Task DoLogin( // Registration is purely via website for now public void RegisterPressed() => - Helpers.OpenUri(LoginManager.GetAuthServerById(Server, ServerUrl).AccountRegUrl); + Helpers.OpenUri(LoginManager.GetAuthServerById(ServerID, ServerUrl).AccountRegUrl); public void ResendConfirmationPressed() => - Helpers.OpenUri(LoginManager.GetAuthServerById(Server, ServerUrl).AccountResendUrl); + Helpers.OpenUri(LoginManager.GetAuthServerById(ServerID, ServerUrl).AccountResendUrl); } diff --git a/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs b/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs index 33ae426c..d1e2c48f 100644 --- a/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs +++ b/SS14.Launcher/ViewModels/Login/RegisterViewModel.cs @@ -19,9 +19,6 @@ public class RegisterViewModel : BaseLoginViewModel private readonly AuthApi _authApi; private readonly LoginManager _loginMgr; - [Reactive] public string Server { get; set; } = ConfigConstants.AuthUrls.First().Key; - [Reactive] public List Servers { get; set; } = ConfigConstants.AuthUrls.Keys.Select(a => LocalizationManager.Instance.GetString($"login-login-auth-{a}")).ToList(); - public string FirstServer => Servers.First(); [Reactive] public string? ServerUrl { get; set; } [Reactive] public string ServerUrlPlaceholder { get; set; } = ConfigConstants.AuthUrls.First().Value.AuthUrl.ToString(); [Reactive] public bool IsCustom { get; private set; } @@ -52,9 +49,12 @@ public RegisterViewModel(MainWindowLoginViewModel parentVm, DataManager cfg, Aut this.WhenAnyValue(x => x.Server, x => x.ServerUrl, x => x.EditingUsername, x => x.EditingPassword) .Subscribe(s => { - IsCustom = Server == ConfigConstants.CustomAuthServer; - ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(Server).AuthUrl.ToString(); - IsServerPotentiallyValid = !IsCustom || !Busy && !string.IsNullOrEmpty(EditingEmail) && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); + IsCustom = ServerID == ConfigConstants.CustomAuthServer; + IsInputValid = IsCustom + ? !string.IsNullOrEmpty(s.Item2) && !string.IsNullOrEmpty(s.Item3) && !string.IsNullOrEmpty(s.Item4) + : !string.IsNullOrEmpty(ServerID) && !string.IsNullOrEmpty(s.Item3) && !string.IsNullOrEmpty(s.Item4); + ServerUrlPlaceholder = IsCustom ? ServerUrl : LoginManager.GetAuthServerById(ServerID).AuthUrl.ToString(); + IsServerPotentiallyValid = !IsCustom || !Busy && Uri.TryCreate(ServerUrl, UriKind.Absolute, out _); }); } diff --git a/SS14.Launcher/Views/Login/ForgotPasswordView.xaml b/SS14.Launcher/Views/Login/ForgotPasswordView.xaml index d69cf747..d1c0238e 100644 --- a/SS14.Launcher/Views/Login/ForgotPasswordView.xaml +++ b/SS14.Launcher/Views/Login/ForgotPasswordView.xaml @@ -24,7 +24,7 @@ diff --git a/SS14.Launcher/Views/Login/LoginView.xaml b/SS14.Launcher/Views/Login/LoginView.xaml index 3adf29c0..6f431ca9 100644 --- a/SS14.Launcher/Views/Login/LoginView.xaml +++ b/SS14.Launcher/Views/Login/LoginView.xaml @@ -32,10 +32,10 @@ Text="{loc:Loc login-login-auth-server}" /> - + diff --git a/SS14.Launcher/Views/Login/RegisterView.xaml b/SS14.Launcher/Views/Login/RegisterView.xaml index de6af224..e11c8c4a 100644 --- a/SS14.Launcher/Views/Login/RegisterView.xaml +++ b/SS14.Launcher/Views/Login/RegisterView.xaml @@ -29,7 +29,7 @@