XamlVisualEditor is layered around a passive Avalonia UI, ReactiveUI ViewModels,
domain/services projects, and infrastructure adapters. The app composition root
is src/XamlVisualEditor.App/App.axaml.cs.
| Layer | Responsibilities |
|---|---|
| UI | Avalonia views, control themes, resource dictionaries, and bindings. |
| Presentation | ReactiveUI ViewModels, commands, state composition, interactions, and Dock model orchestration. |
| Domain/Services | XAML parsing, AST, serialization, sync, workspace, language, terminal, debugger, and collaboration rules. |
| Infrastructure | File system, processes, PTY providers, protocol transports, package loading, persistence, and external tools. |
The shell owns application lifetime, main window creation, service registration, Dock layout factories, top-level command orchestration, and built-in extension activation. Feature panels are contributed through extension contracts whenever possible.
Built-in extensions are registered in the app DI container and activated by
BuiltInExtensionHost. They register command handlers, metadata, views, menus,
toolbars, property editors, language/debugger services, and panel providers.
Dock state is modeled in ViewModels and factories. Views render the Dock model without owning layout rules. Persisted layout support should remain in the presentation/service layer rather than in view code.