diff --git a/TGBeta.ps1 b/TGBeta.ps1
index 70149c1..2b5c6f2 100644
--- a/TGBeta.ps1
+++ b/TGBeta.ps1
@@ -738,35 +738,73 @@ function GetHtmlContent {
-
Tweaks
-
+
@@ -923,14 +961,56 @@ function GetHtmlContent {
});
function triggerTweaks() {
- const setedgedefaultsearch = document.querySelector('input[name="setedgedefaultsearch"]');
-
-
- if (setedgedefaultsearch.checked) {
- fetch('/setedgedefaultsearch', { method: 'GET' })
+ // Gather all selected tweaks
+ const selectedTweaks = [];
+ document.querySelectorAll('#tweaksTab input[type="checkbox"]').forEach(checkbox => {
+ if (checkbox.checked) {
+ selectedTweaks.push(checkbox.name); // Use 'name' as the identifier
+ }
+ });
+
+ if (selectedTweaks.length === 0) {
+ appendLog("No tweaks selected. Please select at least one tweak.", "red");
+ return;
}
+
+ // Send selected tweaks to the backend
+ fetch('/runTweaks', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ tweaks: selectedTweaks })
+ })
+ .then(response => {
+ if (!response.ok) {
+ throw new Error(`Failed to apply tweaks: ${response.statusText}`);
+ }
+ return response.json();
+ })
+ .then(data => {
+ // Log successes and errors
+ if (data.Success && data.Success.length > 0) {
+ data.Success.forEach(tweak => appendLog(`Successfully applied: ${tweak}`, "green"));
+ }
+ if (data.Errors && data.Errors.length > 0) {
+ data.Errors.forEach(error => appendLog(`Error: ${error}`, "red"));
+ }
+ })
+ .catch(error => {
+ appendLog(`Unexpected error: ${error.message}`, "red");
+ });
}
+ function appendLog(message, color = "white") {
+ const log = document.createElement('p');
+ log.style.color = color;
+ log.textContent = message;
+ document.getElementById('logArea').appendChild(log);
+ }
+
+
+
function toggleDattoRMMOptions() {
const checkbox = document.getElementById('installDattoRMMCheckbox');
@@ -1626,9 +1706,9 @@ try {
if ($request.HttpMethod -eq "POST") {
try {
# Step 1: Read the Request Body
- $bodyStream = New-Object IO.StreamReader $request.InputStream
- $body = $bodyStream.ReadToEnd()
- $requestData = ConvertFrom-Json $body
+ $bodyStream = New-Object IO.StreamReader $request.InputStream
+ $body = $bodyStream.ReadToEnd()
+ $requestData = ConvertFrom-Json $body
# Step 2: Validate Input
$tweaks = $requestData.tweaks
@@ -1641,46 +1721,63 @@ try {
return
}
- # Step 3: Run Selected Tweaks
+ # Step 3: Define Lookup Table for Tweaks
+ $tweakActions = @{
+ "setWindowsPerformanceCheckbox" = { .\Set-WindowsPerformance.ps1 }
+ "stopUnnecessaryServicesCheckbox" = { .\Stop-UnnecessaryServices.ps1 }
+ "setedgedefaultsearchCheckbox" = { Set-EdgeDefaultSearchEngine }
+ "disableAnimationsCheckbox" = { Disable-Animations }
+ "optimizePerformanceCheckbox" = { Optimize-Performance }
+ "increaseFontSizeCheckbox" = { Increase-FontSize }
+ "enableDarkModeCheckbox" = { Enable-DarkMode }
+ "clearTempFilesCheckbox" = { Clear-TempFiles }
+ }
+
+ # Step 4: Process Each Selected Tweak
+ $tweaksProcessed = @()
+ $errors = @()
foreach ($tweak in $tweaks) {
- switch ($tweak) {
- "enableDarkModeCheckbox" {
- Write-LogHybrid -Message "Running tweak: Set Edge Default Search Engine" -Level "Info"
- Set-EdgeDefaultSearchEngine
- }
- "disableAnimationsCheckbox" {
- Write-LogHybrid -Message "Running tweak: Disable Animations" -Level "Info"
- #Disable-Animations
- }
- "optimizePerformanceCheckbox" {
- Write-LogHybrid -Message "Running tweak: Optimize Performance" -Level "Info"
- #Optimize-Performance
- }
- "increaseFontSizeCheckbox" {
- Write-LogHybrid -Message "Running tweak: Increase Font Size" -Level "Info"
- #Increase-FontSize
- }
- default {
- Write-LogHybrid -Message "Unknown tweak: $tweak" -Level "Warning"
+ if ($tweakActions[$tweak]) {
+ try {
+ # Execute the tweak function or script
+ $tweakActions[$tweak].Invoke()
+ Write-LogHybrid -Message "Tweak '$tweak' applied successfully." -Level "Info"
+ $tweaksProcessed += $tweak
+ } catch {
+ # Log and collect errors for this tweak
+ $errorMessage = "Failed to apply tweak '$tweak': $($_.Exception.Message)"
+ Write-LogHybrid -Message $errorMessage -Level "Error"
+ $errors += $errorMessage
}
+ } else {
+ # Handle unknown tweaks
+ Write-LogHybrid -Message "Unknown tweak: $tweak" -Level "Warning"
+ $errors += "Unknown tweak: $tweak"
}
}
- # Step 4: Return Success Response
- $responseString = "Selected tweaks executed successfully."
+ # Step 5: Return Summary of Results
+ $responseData = @{
+ Success = $tweaksProcessed
+ Errors = $errors
+ }
+ $responseString = $responseData | ConvertTo-Json -Depth 2
$response.StatusCode = 200
} catch {
+ # Handle General Errors
$responseString = "Error processing tweaks: $($_.Exception.Message)"
+ Write-LogHybrid -Message $responseString -Level "Error"
$response.StatusCode = 500
}
- # Send the Response
+ # Step 6: Send Response
$buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
- $response.ContentType = "text/plain"
+ $response.ContentType = "application/json"
$response.ContentLength64 = $buffer.Length
$response.OutputStream.Write($buffer, 0, $buffer.Length)
$response.OutputStream.Close()
} else {
+ # Handle Unsupported HTTP Methods
$responseString = "Method not allowed. Use POST."
$response.StatusCode = 405
$buffer = [System.Text.Encoding]::UTF8.GetBytes($responseString)
@@ -1690,6 +1787,7 @@ try {
}
+
# ----------------------------------------------------------------
# 4) NEW ROUTE: /getLogs
# Returns $Global:LogCache as JSON for the polling function