Add self-registering Blazor app framework (HackerOS Ecosystem)#77
Draft
werddomain with Copilot wants to merge 4 commits into
Draft
Add self-registering Blazor app framework (HackerOS Ecosystem)#77werddomain with Copilot wants to merge 4 commits into
werddomain with Copilot wants to merge 4 commits into
Conversation
…reflection catches; add docs
Copilot created this pull request from a session on behalf of
werddomain
July 1, 2026 03:02
View session
…prove window drag performance - Added CSS styles for grouped-window popups in the taskbar to allow users to select between multiple instances of the same application. - Optimized window dragging by caching container bounds during drag operations to reduce unnecessary JS interop calls. - Implemented throttling for drag and resize events to improve performance and reduce UI flickering. - Updated window control buttons to prevent event propagation for better interaction handling. - Enhanced keyboard navigation to recognize custom typing contexts, such as terminal emulators. - Improved terminal focus handling to ensure it remains active during animations. - Refactored OnAfterRenderAsync in SystemMonitorApp and WelcomeApp to ensure proper JS module loading and avoid breaking window functionality. - Updated solution file to reflect changes in Visual Studio version and added new projects for Ecosystem components. - Cleaned up unnecessary code in WindowStateTest.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Turns the project into a framework for building a developer ecosystem: a developer writes a Blazor component that inherits a window or terminal base class, drops it into the project, and it self-registers into the app list, START menu, and taskbar — no manual wiring. All apps are covered by Playwright tests, and assets are strictly module-scoped (no inline JS/CSS).
Built on the two clean libraries (
BlazorWindowManager,BlazorTerminal) rather than the legacyHackerOsmonolith, underwasm2/HackerOs/Ecosystem/.Framework —
HackerOs.AppFramework(RCL)[App]attribute +AppRegistrydiscover decorated components by reflection and launch them throughWindowManagerService. The attribute is the only extension point.WindowAppBaseandTerminalAppBase— new apps are created by inheritance;TerminalHostprovides an interactive console (echo, line editing, command submit).Desktopcomposes desktop area + taskbar +AppLauncher(START menu grouped by category).AddHackerOsAppFramework(params Assembly[])wires services and the populated registry.Host —
HackerOs.Ecosystem(WASM)<Desktop>and ships three sample modules: Welcome (window), System Monitor (window; polls a collocated.razor.jssampler), Hacker Shell (pure-C# terminal that lists/launches other apps). Each keeps markup/CSS/JS in collocated scoped files.BlazorWindowManagerfixes (required for external apps)WindowRenderComponentnow resolves window component types across all loaded assemblies; previously only types inside the window-manager assembly rendered, so consumer-defined windows fell back to an emptyWindowBase.CurrentStateupdates and the window actually hides/shows (previously onlyWindowInfo.Statechanged).Tests
tests/, 13 specs) covering self-registration, per-app rendering/behavior, terminal command execution, and taskbar minimize/restore/multi-window.Adding an app is just:
Docs:
wasm2/HackerOs/Ecosystem/docs/app-framework.md.Note
CodeQL validation timed out in the environment and did not return results; worth a re-run during review.