Skip to content

Commit 9d81bb9

Browse files
committed
docs: update project.md domain context and constraints for vsixmanifest
1 parent 92b9af0 commit 9d81bb9

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

openspec/project.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)