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

-
- - - - - +
+ +
+

System Optimizations

+
+ + + + +
+
+ + +
+

Additional Tweaks

+
+ + + +
+
+ + +
+

Miscellaneous

+
+ + +
+
+ +
- +
+
@@ -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