kiapanahi / kiapanahi/KuriousLabs.WindowsTilingWindowManager

Implement ILayoutEngine plugin loading

Open
#28 0 comments 0 reactions 0 assignees View on GitHub
area:layout type:feature
Dominant language
C#
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

## Problem / goal

Implement `ILayoutEngine` plugin loading so third parties can add layout algorithms without modifying Bastion's own source, while structurally preventing a plugin from touching Win32.

## References

- `DESIGN.md` §3.9 (Extensibility paragraph) — two-tier extensibility: in-process `ILayoutEngine` plugins are pure code consuming `(tree, workArea, constraints, gaps)` and returning rects, structurally unable to touch Win32; everything else is out-of-process over the IPC schema.
- `DESIGN.md` §12 (v0.5 roadmap line).

## Acceptance criteria

- [ ] Third-party `ILayoutEngine` implementations can be loaded from a configured directory/assembly path without modifying Bastion's own source.
- [ ] A loaded plugin is structurally prevented from touching Win32 types (the same `Bastion.Layout` purity boundary applies — loading happens in a way that cannot hand the plugin an HWND or any `Bastion.Win32` type).
- [ ] A malformed/throwing plugin degrades to "layout unavailable, falls back to a built-in engine" rather than crashing `bastiond`.
- [ ] This satisfies AOT/trim constraints — state explicitly in the PR how plugin loading coexists with `PublishAot=true` on `Bastion.Daemon` (e.g. via a documented, trim-safe plugin-loading pattern) rather than silently reintroducing reflection-heavy dynamic loading.

Contributor guide

Open the contributing guide

Research direction

Start with DESIGN.md §3.9 and §12, then trace ILayoutEngine and the Bastion.Layout purity boundary in Bastion.Daemon. Determine how configured plugin assemblies can coexist with PublishAot=true without unsafe reflection, and verify that malformed plugins fall back to a built-in engine without exposing Win32 types or crashing bastiond.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.