@@ -56,16 +56,17 @@ Modulus is a modern, cross-platform, plugin-based application framework designed
5656- PR descriptions: Brief, clear structure, English only
5757
5858## Domain Context
59- - ** Module ** : A vertical slice feature unit with Core + UI assemblies, identified by GUID
60- - ** Host** : The shell application providing environment (window, navigation, menu) - currently Avalonia or Blazor
61- - ** PluginPackage ** : Deployable artifact containing manifest.json + assemblies (conceptually ` .modpkg ` )
62- - ** Manifest** : JSON descriptor with id, version, supportedHosts, coreAssemblies, uiAssemblies
59+ - ** Extension ** : A vertical slice feature unit with Core + UI assemblies, identified by GUID (deployable as ` .modpkg ` )
60+ - ** Host** : The shell application providing environment (window, navigation, menu) - ` Modulus.Host. Avalonia` or ` Modulus.Host. Blazor`
61+ - ** Package ** : Entry point class inheriting ` ModulusPackage ` , similar to VS VsPackage
62+ - ** Manifest** : ` extension.vsixmanifest ` (XML) with Identity, InstallationTarget, Dependencies, Assets
6363
6464## Important Constraints
6565- Core/Application assemblies MUST be UI-agnostic (no direct Avalonia/Blazor references)
66- - System modules cannot be unloaded at runtime
67- - Module manifests must be versioned (` manifestVersion: "1.0" ` )
68- - Host must only load UI assemblies matching its type
66+ - System extensions cannot be unloaded at runtime
67+ - Extensions require explicit installation (no directory scanning)
68+ - Host loads only UI assemblies matching its type (` TargetHost ` attribute in manifest)
69+ - Menu declarations in manifest Assets, not assembly attributes
6970- ** Blazor UI** : Prefer MudBlazor components over custom implementations; avoid reinventing the wheel
7071- ** Avalonia UI** : Follow Avalonia component best practices (proper DataContext binding, TemplatedControl for reusable controls, StyledProperty for bindable properties)
7172
0 commit comments