mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
0.7.1
This commit is contained in:
34
docs/ECOSYSTEM_BOUNDARIES.md
Normal file
34
docs/ECOSYSTEM_BOUNDARIES.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Ecosystem Boundaries
|
||||
|
||||
This document defines ownership boundaries for the LanMountainDesktop plugin ecosystem.
|
||||
|
||||
## Source of Truth
|
||||
|
||||
- Host runtime and plugin loading: `LanMountainDesktop`
|
||||
- Plugin SDK API baseline: `LanMountainDesktop`
|
||||
- Shared contracts used by host and plugins: `LanMountainDesktop`
|
||||
- Plugin market index and ecosystem metadata: `LanAirApp`
|
||||
- Official sample plugin implementation and release artifacts: `LanMountainDesktop.SamplePlugin`
|
||||
|
||||
## What Stays in This Repository
|
||||
|
||||
- Host runtime code and desktop shell behavior
|
||||
- Plugin runtime, loader, install coordination, and host integration
|
||||
- Plugin SDK public interfaces, contracts, and registration helpers
|
||||
- Host appearance and settings infrastructure
|
||||
- Tests that validate host + SDK behavior
|
||||
|
||||
## What Should Not Be Maintained Here as Authoritative
|
||||
|
||||
- Market documentation as a canonical developer portal
|
||||
- Market publishing metadata as canonical source
|
||||
- Official sample plugin source and release pipeline
|
||||
- External reference projects (for example ClassIsland) as dependencies
|
||||
|
||||
## Local Debugging Rule
|
||||
|
||||
When running a workspace build, plugin market index and related market assets must be resolved from the sibling repository path:
|
||||
|
||||
- `..\\LanAirApp\\airappmarket\\index.json`
|
||||
|
||||
The host should not depend on an embedded `LanAirApp` mirror inside this repository for workspace market resolution.
|
||||
62
docs/PLUGIN_SDK_V4_MIGRATION.md
Normal file
62
docs/PLUGIN_SDK_V4_MIGRATION.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Plugin SDK v4 Migration Guide
|
||||
|
||||
This guide describes the breaking changes introduced by Plugin SDK `4.0.0`.
|
||||
|
||||
## Version Baseline
|
||||
|
||||
- Host plugin SDK baseline: `4.0.0`
|
||||
- Plugins targeting `3.x` are rejected by default
|
||||
- Manifest file remains `plugin.json`
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
1. `AddPluginDesktopComponent` now uses options-first registration.
|
||||
2. `PluginDesktopComponentOptions` is now the canonical component registration shape and must include `ComponentId`.
|
||||
3. Appearance and radius access are provided through strongly typed APIs:
|
||||
- `IPluginAppearanceContext`
|
||||
- `PluginAppearanceSnapshot`
|
||||
- `PluginCornerRadiusTokens`
|
||||
- `PluginCornerRadiusPreset`
|
||||
4. `PluginDesktopComponentContext` now exposes `Appearance` as the primary appearance access point.
|
||||
|
||||
## New Component Registration Pattern
|
||||
|
||||
```csharp
|
||||
services.AddPluginDesktopComponent<MyWidget>(new PluginDesktopComponentOptions
|
||||
{
|
||||
ComponentId = "YourPlugin.Widget",
|
||||
DisplayName = "My Widget",
|
||||
IconKey = "PuzzlePiece",
|
||||
Category = "Plugins",
|
||||
MinWidthCells = 4,
|
||||
MinHeightCells = 3,
|
||||
CornerRadiusPreset = PluginCornerRadiusPreset.Default
|
||||
});
|
||||
```
|
||||
|
||||
## Appearance Usage Pattern
|
||||
|
||||
```csharp
|
||||
public MyWidget(PluginDesktopComponentContext context)
|
||||
{
|
||||
var mdRadius = context.Appearance.ResolveCornerRadius(PluginCornerRadiusPreset.Md);
|
||||
var adaptiveRadius = context.Appearance.ResolveScaledCornerRadius(12, 8, 20);
|
||||
}
|
||||
```
|
||||
|
||||
## Manifest Update
|
||||
|
||||
Update plugin manifests to API `4.x`:
|
||||
|
||||
```json
|
||||
{
|
||||
"apiVersion": "4.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
## Validation Checklist
|
||||
|
||||
- `plugin.json` declares `apiVersion` `4.0.0` (or compatible `4.x`)
|
||||
- component registration migrated to options model
|
||||
- runtime appearance access uses `IPluginAppearanceContext`
|
||||
- plugin package rebuilt and republished as `.laapp`
|
||||
Reference in New Issue
Block a user