From 4153d51c4f4ba6a4a54f8658a193e59c39b05e25 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 1 Jul 2026 00:37:35 +0000 Subject: [PATCH 1/4] Fix external window resolution, taskbar minimize; all 13 Playwright tests pass --- .../Components/WindowRenderComponent.razor | 50 +++++- .../Services/WindowManagerService.cs | 18 +++ .../Abstractions/AppAttribute.cs | 79 +++++++++ .../Abstractions/AppKind.cs | 21 +++ .../Components/AppLauncher.razor | 56 +++++++ .../Components/AppLauncher.razor.cs | 117 ++++++++++++++ .../Components/AppLauncher.razor.css | 143 +++++++++++++++++ .../Components/AppLauncher.razor.js | 35 ++++ .../Components/Desktop.razor | 23 +++ .../Components/Desktop.razor.cs | 18 +++ .../Components/Desktop.razor.css | 51 ++++++ .../Components/TerminalAppBase.cs | 126 +++++++++++++++ .../Components/TerminalHost.razor | 12 ++ .../Components/TerminalHost.razor.cs | 150 ++++++++++++++++++ .../Components/TerminalHost.razor.css | 16 ++ .../Components/TerminalHost.razor.js | 21 +++ .../Components/WindowAppBase.cs | 65 ++++++++ .../Extensions/ServiceCollectionExtensions.cs | 46 ++++++ .../HackerOs.AppFramework.csproj | 23 +++ .../Registry/AppDescriptor.cs | 96 +++++++++++ .../Registry/AppRegistry.cs | 148 +++++++++++++++++ .../HackerOs.AppFramework/_Imports.razor | 12 ++ .../Ecosystem/HackerOs.Ecosystem/App.razor | 5 + .../HackerOs.Ecosystem.csproj | 18 +++ .../Modules/HackerShellApp.cs | 109 +++++++++++++ .../Modules/SystemMonitorApp.razor | 55 +++++++ .../Modules/SystemMonitorApp.razor.cs | 106 +++++++++++++ .../Modules/SystemMonitorApp.razor.css | 91 +++++++++++ .../Modules/SystemMonitorApp.razor.js | 19 +++ .../Modules/WelcomeApp.razor | 45 ++++++ .../Modules/WelcomeApp.razor.cs | 35 ++++ .../Modules/WelcomeApp.razor.css | 111 +++++++++++++ .../Modules/WelcomeApp.razor.js | 14 ++ .../Ecosystem/HackerOs.Ecosystem/Program.cs | 17 ++ .../HackerOs.Ecosystem/_Imports.razor | 16 ++ .../HackerOs.Ecosystem/wwwroot/css/app.css | 115 ++++++++++++++ .../HackerOs.Ecosystem/wwwroot/favicon.png | Bin 0 -> 1148 bytes .../HackerOs.Ecosystem/wwwroot/icon-192.png | Bin 0 -> 2626 bytes .../HackerOs.Ecosystem/wwwroot/index.html | 32 ++++ .../wwwroot/sample-data/weather.json | 27 ++++ .../Ecosystem/tests/e2e/desktop.spec.ts | 35 ++++ .../Ecosystem/tests/e2e/hacker-shell.spec.ts | 52 ++++++ wasm2/HackerOs/Ecosystem/tests/e2e/helpers.ts | 37 +++++ .../tests/e2e/system-monitor.spec.ts | 32 ++++ .../Ecosystem/tests/e2e/taskbar.spec.ts | 31 ++++ .../Ecosystem/tests/e2e/welcome.spec.ts | 33 ++++ .../Ecosystem/tests/package-lock.json | 78 +++++++++ wasm2/HackerOs/Ecosystem/tests/package.json | 12 ++ .../Ecosystem/tests/playwright.config.ts | 38 +++++ .../tests/test-results/.last-run.json | 4 + 50 files changed, 2487 insertions(+), 6 deletions(-) create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Abstractions/AppAttribute.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Abstractions/AppKind.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/AppLauncher.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/AppLauncher.razor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/AppLauncher.razor.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/AppLauncher.razor.js create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/Desktop.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/Desktop.razor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/Desktop.razor.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/TerminalAppBase.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/TerminalHost.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/TerminalHost.razor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/TerminalHost.razor.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/TerminalHost.razor.js create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Components/WindowAppBase.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Extensions/ServiceCollectionExtensions.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/HackerOs.AppFramework.csproj create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Registry/AppDescriptor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/Registry/AppRegistry.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.AppFramework/_Imports.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/App.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/HackerOs.Ecosystem.csproj create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/HackerShellApp.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/SystemMonitorApp.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/SystemMonitorApp.razor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/SystemMonitorApp.razor.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/SystemMonitorApp.razor.js create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/WelcomeApp.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/WelcomeApp.razor.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/WelcomeApp.razor.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Modules/WelcomeApp.razor.js create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/Program.cs create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/_Imports.razor create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/wwwroot/css/app.css create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/wwwroot/favicon.png create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/wwwroot/icon-192.png create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/wwwroot/index.html create mode 100644 wasm2/HackerOs/Ecosystem/HackerOs.Ecosystem/wwwroot/sample-data/weather.json create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/desktop.spec.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/hacker-shell.spec.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/helpers.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/system-monitor.spec.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/taskbar.spec.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/e2e/welcome.spec.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/package-lock.json create mode 100644 wasm2/HackerOs/Ecosystem/tests/package.json create mode 100644 wasm2/HackerOs/Ecosystem/tests/playwright.config.ts create mode 100644 wasm2/HackerOs/Ecosystem/tests/test-results/.last-run.json diff --git a/wasm2/HackerOs/BlazorWindowManager/BlazorWindowManager/Components/WindowRenderComponent.razor b/wasm2/HackerOs/BlazorWindowManager/BlazorWindowManager/Components/WindowRenderComponent.razor index 76afe7b..16942e2 100644 --- a/wasm2/HackerOs/BlazorWindowManager/BlazorWindowManager/Components/WindowRenderComponent.razor +++ b/wasm2/HackerOs/BlazorWindowManager/BlazorWindowManager/Components/WindowRenderComponent.razor @@ -1,16 +1,12 @@ @using BlazorWindowManager.Models @using BlazorWindowManager.Services +@using System.Reflection @using Microsoft.AspNetCore.Components @using Microsoft.AspNetCore.Components.Web @using Microsoft.Extensions.DependencyInjection @implements IDisposable
+/// [App("Echo", Kind = AppKind.Terminal)]
+/// public sealed class EchoApp : TerminalAppBase
+/// {
+/// protected override string Prompt => "echo> ";
+/// protected override Task OnCommandAsync(string command)
+/// {
+/// WriteLine(command);
+/// return Task.CompletedTask;
+/// }
+/// }
+///
+///
+/// @inherits WindowAppBase
+/// <WindowContent Window="this">
+/// <!-- your UI -->
+/// </WindowContent>
+///
+/// | PID | NAME | CPU | MEM |
|---|---|---|---|
| @proc.Pid | +@proc.Name | +@proc.Cpu% | +@proc.Mem MB | +
A modular Blazor WebAssembly desktop framework.
+
+ Every component that derives from WindowAppBase or
+ TerminalAppBase and is decorated with [App]
+ is discovered automatically, added to the START menu,
+ and shown on the taskbar — no manual registration required.
+
+ @Registry.LauncherApps.Count applications currently registered. +
+G|8G0-9s3VLm`bsa6e
ze*TlRxAjXtm^F8V`M1%s5d@tYS>&+_ga#xKGb|!oUBx3uc@mj1%=MaH4GR0tPBG_&
z9OZE;->dO@`Q)nr<%