(Encoding.UTF8.GetString(Convert.FromBase64String(watcherDataArg)));
-
- if (_watcherData is null)
- throw new Exception("Watcher data is invalid");
-
- if (App.Settings.Prop.EnableActivityTracking)
- {
- ActivityWatcher = new(_watcherData.LogFile);
-
- if (App.Settings.Prop.UseDisableAppPatch)
- {
- ActivityWatcher.OnAppClose += delegate
- {
- App.Logger.WriteLine(LOG_IDENT, "Received desktop app exit, closing Roblox");
- using var process = Process.GetProcessById(_watcherData.ProcessId);
- process.CloseMainWindow();
- };
- }
-
- if (App.Settings.Prop.UseDiscordRichPresence)
- RichPresence = new(ActivityWatcher);
- }
-
- _notifyIcon = new(this);
- }
-
- public void KillRobloxProcess() => CloseProcess(_watcherData!.ProcessId, true);
-
- public void CloseProcess(int pid, bool force = false)
- {
- const string LOG_IDENT = "Watcher::CloseProcess";
-
- try
- {
- using var process = Process.GetProcessById(pid);
-
- App.Logger.WriteLine(LOG_IDENT, $"Killing process '{process.ProcessName}' (pid={pid}, force={force})");
-
- if (process.HasExited)
- {
- App.Logger.WriteLine(LOG_IDENT, $"PID {pid} has already exited");
- return;
- }
-
- if (force)
- process.Kill();
- else
- process.CloseMainWindow();
- }
- catch (Exception ex)
- {
- App.Logger.WriteLine(LOG_IDENT, $"PID {pid} could not be closed");
- App.Logger.WriteException(LOG_IDENT, ex);
- }
- }
-
- public async Task Run()
- {
- if (!_lock.IsAcquired || _watcherData is null)
- return;
-
- ActivityWatcher?.Start();
-
- while (Utilities.GetProcessesSafe().Any(x => x.Id == _watcherData.ProcessId))
- await Task.Delay(1000);
-
- if (_watcherData.AutoclosePids is not null)
- {
- foreach (int pid in _watcherData.AutoclosePids)
- CloseProcess(pid);
- }
-
- if (App.LaunchSettings.TestModeFlag.Active)
- Process.Start(Paths.Process, "-settings -testmode");
- }
-
- public void Dispose()
- {
- App.Logger.WriteLine("Watcher::Dispose", "Disposing Watcher");
-
- _notifyIcon?.Dispose();
- RichPresence?.Dispose();
-
- GC.SuppressFinalize(this);
- }
- }
-}
diff --git a/Bloxstrap/app.manifest b/Bloxstrap/app.manifest
deleted file mode 100644
index 0597366..0000000
--- a/Bloxstrap/app.manifest
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Images/Bloxstrap-full-dark.png b/Images/Bloxstrap-full-dark.png
deleted file mode 100644
index 7180496..0000000
Binary files a/Images/Bloxstrap-full-dark.png and /dev/null differ
diff --git a/Images/Bloxstrap-full-light.png b/Images/Bloxstrap-full-light.png
deleted file mode 100644
index c2f7a30..0000000
Binary files a/Images/Bloxstrap-full-light.png and /dev/null differ
diff --git a/Images/Bloxstrap.png b/Images/Bloxstrap.png
deleted file mode 100644
index b77c144..0000000
Binary files a/Images/Bloxstrap.png and /dev/null differ
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 53ff9c6..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2022 pizzaboxer
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README.md b/README.md
deleted file mode 100644
index 4f31fc6..0000000
--- a/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-> [!CAUTION]
-> The only official places to download Bloxstrap are this GitHub repository and [bloxstraplabs.com](https://bloxstraplabs.com). Any other websites offering downloads or claiming to be us are not controlled by us.
-
-
-
-
-
-
-
-
-[![License][shield-repo-license]][repo-license]
-[![GitHub Workflow Status][shield-repo-workflow]][repo-actions]
-[![Crowdin][shield-crowdin-status]][crowdin-project]
-[![Downloads][shield-repo-releases]][repo-releases]
-[![Version][shield-repo-latest]][repo-latest]
-[![Discord][shield-discord-server]][discord-invite]
-[![lol][shield-tenor-meme]][tenor-gif]
-
-
-
-----
-
-Bloxstrap is a third-party replacement for the standard Roblox bootstrapper, providing additional useful features and improvements.
-
-Running into a problem or need help with something? [Check out the Wiki](https://github.com/bloxstraplabs/bloxstrap/wiki). If you can't find anything, or would like to suggest something, please [submit an issue](https://github.com/bloxstraplabs/bloxstrap/issues).
-
-Bloxstrap is only supported for PCs running Windows.
-
-## Frequently Asked Questions
-
-**Q: Is this malware?**
-
-**A:** No. The source code here is viewable to all, and it'd be impossible for us to slip anything malicious into the downloads without anyone noticing. Just be sure you're downloading it from an official source. The only two official sources are this GitHub repository and [bloxstraplabs.com](https://bloxstraplabs.com).
-
-**Q: Can using this get me banned?**
-
-**A:** No, it shouldn't. Bloxstrap doesn't interact with the Roblox client in the same way that exploits do. [Read more about that here.](https://github.com/bloxstraplabs/bloxstrap/wiki/Why-it's-not-reasonably-possible-for-you-to-be-banned-by-Bloxstrap)
-
-**Q: Why was multi-instance launching removed?**
-
-**A:** It was removed starting with v2.6.0 for the [reasons stated here](https://github.com/bloxstraplabs/bloxstrap/wiki/Plans-to-remove-multi%E2%80%90instance-launching-from-Bloxstrap). It may be added back in the future when there are less issues with doing so.
-
-## Features
-
-- Hassle-free Discord Rich Presence to let your friends know what you're playing at a glance
-- Simple support for modding of content files for customizability (death sound, mouse cursor, etc)
-- See where your server is geographically located (courtesy of [ipinfo.io](https://ipinfo.io))
-- Ability to configure graphics fidelity and UI experience
-
-## Installing
-Download the [latest release of Bloxstrap](https://github.com/bloxstraplabs/bloxstrap/releases/latest), and run it. Configure your preferences if needed, and install. That's about it!
-
-Alternatively, you can install Bloxstrap via [Winget](https://winstall.app/apps/pizzaboxer.Bloxstrap) by running this in a Command Prompt window:
-```
-> winget install bloxstrap
-```
-
-You will also need the [.NET 6 Desktop Runtime](https://aka.ms/dotnet-core-applaunch?missing_runtime=true&arch=x64&rid=win11-x64&apphost_version=6.0.16&gui=true). If you don't already have it installed, you'll be prompted to install it anyway. Be sure to install Bloxstrap after you've installed this.
-
-It's not unlikely that Windows Smartscreen will show a popup when you run Bloxstrap for the first time. This happens because it's an unknown program, not because it's actually detected as being malicious. To dismiss it, just click on "More info" and then "Run anyway".
-
-Once installed, Bloxstrap is added to your Start Menu, where you can access the menu and reconfigure your preferences if needed.
-
-## Code
-
-Bloxstrap uses the [WPF UI](https://github.com/lepoco/wpfui) library for the user interface design. We currently use and maintain our own fork of WPF UI at [bloxstraplabs/wpfui](https://github.com/bloxstraplabs/wpfui).
-
-
-[shield-repo-license]: https://img.shields.io/github/license/bloxstraplabs/bloxstrap
-[shield-repo-workflow]: https://img.shields.io/github/actions/workflow/status/bloxstraplabs/bloxstrap/ci-release.yml?branch=main&label=builds
-[shield-repo-releases]: https://img.shields.io/github/downloads/bloxstraplabs/bloxstrap/latest/total?color=981bfe
-[shield-repo-latest]: https://img.shields.io/github/v/release/bloxstraplabs/bloxstrap?color=7a39fb
-
-[shield-crowdin-status]: https://badges.crowdin.net/bloxstrap/localized.svg
-[shield-discord-server]: https://img.shields.io/discord/1099468797410283540?logo=discord&logoColor=white&label=discord&color=4d3dff
-[shield-tenor-meme]: https://img.shields.io/badge/mom_made-pizza_rolls-orange
-
-[repo-license]: https://github.com/bloxstraplabs/bloxstrap/blob/main/LICENSE
-[repo-actions]: https://github.com/bloxstraplabs/bloxstrap/actions
-[repo-releases]: https://github.com/bloxstraplabs/bloxstrap/releases
-[repo-latest]: https://github.com/bloxstraplabs/bloxstrap/releases/latest
-
-[crowdin-project]: https://crowdin.com/project/bloxstrap
-[discord-invite]: https://discord.gg/nKjV3mGq6R
-[tenor-gif]: https://media.tenor.com/FIkSGbGycmAAAAAd/manly-roblox.gif
diff --git a/Scripts/Translations/find-unused.py b/Scripts/Translations/find-unused.py
deleted file mode 100644
index 818296c..0000000
--- a/Scripts/Translations/find-unused.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import re, glob
-
-directory = input("Enter project path (the one containing Bloxstrap.csproj): ")
-
-existing = []
-found = []
-
-with open(f"{directory}\\Resources\\Strings.resx", "r") as file:
- existing = re.findall("name=\"([a-zA-Z0-9.]+)\" xml:space=\"preserve\"", file.read())
-
-for filename in glob.glob(f"{directory}\\**\\*.*", recursive=True):
- if "\\bin\\" in filename or "\\obj\\" in filename or "\\Resources\\" in filename:
- continue
-
- try:
- with open(filename, "r") as file:
- contents = file.read()
-
- matches = re.findall("Strings.([a-zA-Z0-9_]+)", contents)
- for match in matches:
- if not '_' in match:
- continue
-
- ref = match.replace('_', '.')
- if not ref in found:
- found.append(ref)
-
- matches = re.findall("FromTranslation = \"([a-zA-Z0-9.]+)\"", contents)
- for match in matches:
- if not match in found:
- found.append(match)
-
- except Exception:
- print(f"Could not open {filename}")
- continue
-
-for entry in existing:
- if not entry in found and not "Enums." in entry:
- print(entry)
\ No newline at end of file
diff --git a/Scripts/Translations/prep.py b/Scripts/Translations/prep.py
deleted file mode 100644
index b5f0855..0000000
--- a/Scripts/Translations/prep.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import glob, shutil, re
-
-exports = input("Path of folder of exported Crowdin files: ")
-dest = input("Destination resources folder: ")
-
-for filename in glob.glob(f"{exports}\\**\\*.*", recursive=True):
- print(f"Copying {filename}")
-
- localeCode = re.search("\\\\([a-zA-Z\\-]+)\\\\Strings.", filename).group(1)
-
- shutil.copy(filename, dest + f"\\Strings.{localeCode}.resx")
\ No newline at end of file
diff --git a/wpfui b/wpfui
deleted file mode 160000
index 9080158..0000000
--- a/wpfui
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9080158ba8d496501146d1167aae910898eff9af