asdasd
All checks were successful
Deploy / deploy (push) Successful in 14s

This commit is contained in:
2026-05-15 22:15:31 +02:00
parent c7d96bec85
commit 98dd388fda
9 changed files with 747 additions and 83 deletions

View File

@@ -0,0 +1,138 @@
# Plugin Specification
## Goal
The plugin system should allow additional rack components to be imported without changing application code.
Plugins should be data packages, not executable extensions.
## Principles
- no arbitrary code execution
- manifest-based validation
- stable schema versioning
- internal conversion of optional CAD-derived assets
## Package structure
Example:
```text
vendor-pack-1/
manifest.json
components/
switch-24p.json
patchpanel-24p.json
assets/
front/
switch-24p.svg
patchpanel-24p.svg
preview3d/
switch-24p.gltf
```
## Manifest example
```json
{
"manifestVersion": 1,
"name": "Example Network Pack",
"vendor": "Example Vendor",
"version": "1.0.0",
"components": [
"components/switch-24p.json",
"components/patchpanel-24p.json"
]
}
```
## Component definition example
```json
{
"name": "24-Port Patch Panel",
"manufacturer": "Example Vendor",
"partNumber": "PP-24-1U",
"category": "patch_panel",
"rackStandard": "19_inch",
"heightU": 1,
"depthMm": 95,
"weightKg": 1.2,
"priceNet": 79.0,
"currency": "EUR",
"assets": {
"frontSvg": "assets/front/patchpanel-24p.svg"
},
"ports": [
{
"name": "Port 1",
"side": "front",
"offsetXmm": 18,
"offsetYmm": 10,
"offsetZmm": 0,
"portType": "rj45"
}
]
}
```
## Supported file formats
### V1 mandatory
- `JSON` for manifest and component metadata
- `SVG` for 2D visuals
### V1 optional
- `glTF` for future 3D preview assets
### Later import formats
These should be handled through an import pipeline, not as runtime-native editor formats:
- `DXF`
- `STEP`
- `OBJ`
## Validation rules
- schema version must be supported
- required metadata fields must exist
- asset references must resolve inside the package
- all dimensions must be plausible and positive
- category values must match allowed enums
- unsupported formats are rejected or ignored
## Security model
Plugins must never contain executable JavaScript for the editor.
Allowed plugin content:
- metadata
- images
- vector graphics
- optional validated model assets
Rejected:
- scripts
- external network callbacks
- embedded active content
## Import workflow
1. upload package
2. unpack in isolated temporary storage
3. validate manifest
4. validate component schema
5. validate assets
6. register catalog entries
7. make components available to selected users or globally
## Versioning strategy
- application schema versioning is independent from plugin pack version
- manifest schema must be explicitly versioned
- deprecated fields should have a migration path where possible