From 8256acb0fec3e6dcbf435094756b8fbe2d25f47e Mon Sep 17 00:00:00 2001 From: palmarhealer Date: Sun, 8 Mar 2026 16:22:17 +0100 Subject: [PATCH 1/2] Rebrand app from ControlPad to Slidr Rename all user-facing strings, window titles, toast notifications, registry keys, installer output, and AppData paths to Slidr. C# namespaces and project file names remain as ControlPad. --- .github/workflows/release.yml | 10 +++++----- ControlPad/App.xaml.cs | 4 ++-- ControlPad/Autostart.cs | 2 +- ControlPad/ControlPad.csproj | 2 +- ControlPad/DataHandler.cs | 18 +++++++++--------- ControlPad/Windows/MainWindow.xaml | 6 +++--- ControlPad/Windows/MainWindow.xaml.cs | 2 +- ControlPad/Windows/PresetManagerWindow.xaml.cs | 6 +++--- Installer/ControlPad.iss | 12 ++++++------ README.md | 8 +++++--- 10 files changed, 36 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a4db776..fbb486f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,15 +69,15 @@ jobs: - name: Generate checksum shell: pwsh run: | - $hash = (Get-FileHash "Installer/Output/ControlPad-Setup.exe" -Algorithm SHA256).Hash - "$hash ControlPad-Setup.exe" | Out-File -FilePath "Installer/Output/checksums.sha256" -Encoding utf8 + $hash = (Get-FileHash "Installer/Output/Slidr-Setup.exe" -Algorithm SHA256).Hash + "$hash Slidr-Setup.exe" | Out-File -FilePath "Installer/Output/checksums.sha256" -Encoding utf8 - name: Upload installer artifact uses: actions/upload-artifact@v4 with: - name: ControlPad-Setup + name: Slidr-Setup path: | - Installer/Output/ControlPad-Setup.exe + Installer/Output/Slidr-Setup.exe Installer/Output/checksums.sha256 - name: Create GitHub Release @@ -88,6 +88,6 @@ jobs: prerelease: ${{ contains(github.ref_name, 'rc') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'alpha') }} generate_release_notes: true files: | - Installer/Output/ControlPad-Setup.exe + Installer/Output/Slidr-Setup.exe Installer/Output/checksums.sha256 requirements.json diff --git a/ControlPad/App.xaml.cs b/ControlPad/App.xaml.cs index 59b914c..b19e60f 100644 --- a/ControlPad/App.xaml.cs +++ b/ControlPad/App.xaml.cs @@ -15,14 +15,14 @@ public partial class App : Application private static Mutex _mutex; protected override void OnStartup(StartupEventArgs e) { - const string mutexName = "ControlPad"; + const string mutexName = "Slidr"; bool createdNew; _mutex = new Mutex(true, mutexName, out createdNew); if (!createdNew) { - MessageBox.Show("Control Pad is already open."); + MessageBox.Show("Slidr is already open."); _mutex?.ReleaseMutex(); _mutex?.Dispose(); Current.Shutdown(); diff --git a/ControlPad/Autostart.cs b/ControlPad/Autostart.cs index 9728fad..0a2ccb2 100644 --- a/ControlPad/Autostart.cs +++ b/ControlPad/Autostart.cs @@ -9,7 +9,7 @@ public static class AutoStart { const string RunKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"; const string ApprovedKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run"; - const string AppName = "ControlPad"; + const string AppName = "Slidr"; public static void Set(bool enable, bool startHidden) { diff --git a/ControlPad/ControlPad.csproj b/ControlPad/ControlPad.csproj index 6848df9..a3c9301 100644 --- a/ControlPad/ControlPad.csproj +++ b/ControlPad/ControlPad.csproj @@ -1,7 +1,7 @@  - ControlPad + Slidr ControlPad WinExe net9.0-windows10.0.19041.0 diff --git a/ControlPad/DataHandler.cs b/ControlPad/DataHandler.cs index b9e07f7..0aac685 100644 --- a/ControlPad/DataHandler.cs +++ b/ControlPad/DataHandler.cs @@ -15,10 +15,10 @@ public static class DataHandler { public static string AppDataRoaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); public static Preset CurrentPreset { get; set; } = new Preset(0, "Preset1 (current)"); - public static string GetSliderCategoriesPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"ControlPad\Presets\{CurrentPreset.Name}", "SliderCategories.json"); - public static string GetButtonCategoriesPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"ControlPad\Presets\{CurrentPreset.Name}", "ButtonCategories.json"); - public static string GetCategoryControlsPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"ControlPad\Presets\{CurrentPreset.Name}", "CategoryControls.txt"); - public static string GetSettingsPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? $@"ControlPad\Presets\{CurrentPreset.Name}", "Settings.json"); + public static string GetSliderCategoriesPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"Slidr\Presets\{CurrentPreset.Name}", "SliderCategories.json"); + public static string GetButtonCategoriesPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"Slidr\Presets\{CurrentPreset.Name}", "ButtonCategories.json"); + public static string GetCategoryControlsPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? @$"Slidr\Presets\{CurrentPreset.Name}", "CategoryControls.txt"); + public static string GetSettingsPath() => Path.Combine(AppDataRoaming, GetPresetPath(CurrentPreset.Id) ?? $@"Slidr\Presets\{CurrentPreset.Name}", "Settings.json"); public static ObservableCollection SliderCategories { get; set; } = new ObservableCollection(); public static ObservableCollection ButtonCategories { get; set; } = new ObservableCollection(); public static List<(CustomSlider slider, int value)> SliderValues { get; set; } = new(); @@ -128,7 +128,7 @@ public static void SetButtonTextBlocks() public static List GetPresets() { var presets = new List(); - var presetFolders = Directory.GetDirectories(Path.Combine(DataHandler.AppDataRoaming, "ControlPad", "Presets")); + var presetFolders = Directory.GetDirectories(Path.Combine(DataHandler.AppDataRoaming, "Slidr", "Presets")); foreach (var folder in presetFolders) { if (File.Exists(@$"{folder}\ID.txt") && int.TryParse(File.ReadAllText(@$"{folder}\ID.txt"), out int id)) @@ -145,7 +145,7 @@ public static List GetPresets() public static string? GetPresetPath(int idToSearchFor) { - var presetFolders = Directory.GetDirectories(Path.Combine(DataHandler.AppDataRoaming, "ControlPad", "Presets")); + var presetFolders = Directory.GetDirectories(Path.Combine(DataHandler.AppDataRoaming, "Slidr", "Presets")); foreach (var folder in presetFolders) { if (int.TryParse(File.ReadAllText(@$"{folder}\ID.txt"), out int id)) @@ -156,16 +156,16 @@ public static List GetPresets() public static void CheckAppDataFolder() { - if (!Directory.Exists(Path.Combine(AppDataRoaming, @"ControlPad\Presets"))) + if (!Directory.Exists(Path.Combine(AppDataRoaming, @"Slidr\Presets"))) { - Directory.CreateDirectory(Path.Combine(AppDataRoaming, @"ControlPad\Presets\")); + Directory.CreateDirectory(Path.Combine(AppDataRoaming, @"Slidr\Presets\")); CreatePreset(new Preset(GetPresets().GetFreeId(p => p.Id), "Preset1 (current)")); } } public static bool CreatePreset(Preset preset) { - string path = Path.Combine(AppDataRoaming, @$"ControlPad\Presets\{preset.Name}\"); + string path = Path.Combine(AppDataRoaming, @$"Slidr\Presets\{preset.Name}\"); try { if (!Directory.Exists(path)) diff --git a/ControlPad/Windows/MainWindow.xaml b/ControlPad/Windows/MainWindow.xaml index 0553391..930dc28 100644 --- a/ControlPad/Windows/MainWindow.xaml +++ b/ControlPad/Windows/MainWindow.xaml @@ -8,7 +8,7 @@ xmlns:local="clr-namespace:ControlPad" mc:Ignorable="d" Icon="pack://application:,,,/Resources/logo.ico" - Title="Control Pad" + Title="Slidr" Width="650" Height="600" Closing="mainWindow_Closing" @@ -24,7 +24,7 @@ FocusOnLeftClick="True" MenuOnRightClick="True" Icon="pack://application:,,,/Resources/logo.ico" - TooltipText="Control Pad" + TooltipText="Slidr" > @@ -37,7 +37,7 @@ diff --git a/ControlPad/Windows/MainWindow.xaml.cs b/ControlPad/Windows/MainWindow.xaml.cs index 4aaf15f..77c2f1c 100644 --- a/ControlPad/Windows/MainWindow.xaml.cs +++ b/ControlPad/Windows/MainWindow.xaml.cs @@ -65,7 +65,7 @@ private void mainWindow_Closing(object sender, System.ComponentModel.CancelEvent if (!Settings.TrayIconMessageShown) { - new ToastContentBuilder().AddText("Control Pad minimized to System Tray").Show(); + new ToastContentBuilder().AddText("Slidr minimized to System Tray").Show(); Settings.TrayIconMessageShown = true; } } diff --git a/ControlPad/Windows/PresetManagerWindow.xaml.cs b/ControlPad/Windows/PresetManagerWindow.xaml.cs index e295d15..caf471e 100644 --- a/ControlPad/Windows/PresetManagerWindow.xaml.cs +++ b/ControlPad/Windows/PresetManagerWindow.xaml.cs @@ -102,7 +102,7 @@ private void Btn_Apply_Click(object sender, RoutedEventArgs e) { try { - Directory.Delete(Path.Combine(DataHandler.AppDataRoaming, "ControlPad", "Presets", preset.Name), true); + Directory.Delete(Path.Combine(DataHandler.AppDataRoaming, "Slidr", "Presets", preset.Name), true); } catch (Exception ex) { @@ -115,7 +115,7 @@ private void Btn_Apply_Click(object sender, RoutedEventArgs e) foreach (Preset preset in lv_Presets.Items) { string? currentPath = DataHandler.GetPresetPath(preset.Id); - string newPath = Path.Combine(DataHandler.AppDataRoaming, "ControlPad", "Presets", preset.Name); + string newPath = Path.Combine(DataHandler.AppDataRoaming, "Slidr", "Presets", preset.Name); try { if (currentPath != null && currentPath != newPath) @@ -211,7 +211,7 @@ private void CollectionChanged() private void ShowError(string msg) { - System.Windows.MessageBox.Show(msg, "Control Pad", System.Windows.MessageBoxButton.OK, MessageBoxImage.Error); + System.Windows.MessageBox.Show(msg, "Slidr", System.Windows.MessageBoxButton.OK, MessageBoxImage.Error); } } } diff --git a/Installer/ControlPad.iss b/Installer/ControlPad.iss index d2c1deb..ef68b1b 100644 --- a/Installer/ControlPad.iss +++ b/Installer/ControlPad.iss @@ -1,10 +1,10 @@ -; ControlPad Inno Setup Script +; Slidr Inno Setup Script ; Requires Inno Setup 6.0+ -#define MyAppName "ControlPad" +#define MyAppName "Slidr" #define MyAppVersion "1.0.0" -#define MyAppPublisher "ControlPad" -#define MyAppExeName "ControlPad.exe" +#define MyAppPublisher "Slidr" +#define MyAppExeName "Slidr.exe" #define MyAppURL "https://github.com/your-username/ControlPad" ; .NET 9.0 Desktop Runtime download URL (x64) @@ -21,7 +21,7 @@ AppSupportURL={#MyAppURL} DefaultDirName={autopf}\{#MyAppName} DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes -OutputBaseFilename=ControlPad-Setup +OutputBaseFilename=Slidr-Setup SetupIconFile=..\ControlPad\Resources\logo.ico UninstallDisplayIcon={app}\{#MyAppExeName} Compression=lzma2 @@ -39,7 +39,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked -Name: "autostart"; Description: "Start ControlPad with Windows"; GroupDescription: "Other options:" +Name: "autostart"; Description: "Start Slidr with Windows"; GroupDescription: "Other options:" [Files] ; Application files from publish output diff --git a/README.md b/README.md index 9412b91..5119713 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ -# ControlPad +# Slidr A Windows desktop application that turns an Arduino-based control pad into a fully configurable audio mixer and macro board. Map physical sliders to per-app volume control and buttons to actions like muting, launching apps, opening websites, or simulating key presses. +> **Note for developers and AI assistants:** The C# namespaces, project file names, and internal identifiers still use `ControlPad`. Only the user-facing name has changed to **Slidr**. Do not rename namespaces, `.csproj` files, or the solution file. + ## Features - **Per-app volume control** — Assign audio streams (apps, microphones, system audio) to physical sliders @@ -36,7 +38,7 @@ Flash the `InoSkript/InoSkript.ino` sketch to your Arduino. It sends slider valu ```bash # Clone the repository -git clone https://github.com/your-username/ControlPad.git +git clone https://github.com/ControlPad/ControlPad.git cd ControlPad # Build @@ -62,7 +64,7 @@ The installer is built with [Inno Setup](https://jrsoftware.org/isinfo.php) (v6+ 1. Publish the app (framework-dependent or self-contained) 2. Open `Installer/ControlPad.iss` in Inno Setup Compiler -3. Compile to produce `ControlPad-Setup.exe` +3. Compile to produce `Slidr-Setup.exe` Alternatively, use the GitHub Actions release workflow — push a version tag (`v*`) and the installer is built automatically. From f105bd396863dff99e7db4587867e8779086c5ca Mon Sep 17 00:00:00 2001 From: palmarhealer Date: Sun, 8 Mar 2026 18:51:57 +0100 Subject: [PATCH 2/2] Fix repository URL in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5119713..00ccb12 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Flash the `InoSkript/InoSkript.ino` sketch to your Arduino. It sends slider valu ```bash # Clone the repository -git clone https://github.com/ControlPad/ControlPad.git +git clone https://github.com/ControlPad/App.git cd ControlPad # Build