Zum Hauptinhalt springen

Addon-Manifest

Jedes Addon benötigt eine rayforge-addon.yaml-Datei in seinem Stammverzeichnis. Dieses Manifest informiert Rayforge über dein Addon – seinen Namen, was es bereitstellt und wie es geladen wird.

Grundstruktur

Hier ist ein vollständiges Manifest mit allen gängigen Feldern:

name: my_custom_addon
display_name: "My Custom Addon"
description: "Adds support for the XYZ laser cutter."
api_version: 9
url: https://github.com/username/my-custom-addon

author:
name: Jane Doe
email: jane@example.com

depends:
- rayforge>=0.27.0

requires:
- some-other-addon>=1.0.0

provides:
backend: my_addon.backend
frontend: my_addon.frontend
assets:
- path: assets/profiles.json
type: profiles

license:
name: MIT

Pflichtfelder

name

Eine eindeutige Kennung für dein Addon. Diese muss ein gültiger Python-Modulname sein – nur Buchstaben, Zahlen und Unterstriche, und sie darf nicht mit einer Zahl beginnen.

name: my_custom_addon

display_name

Ein lesbarer Name, der in der UI angezeigt wird. Dieser kann Leerzeichen und Sonderzeichen enthalten.

display_name: "My Custom Addon"

description

Eine kurze Beschreibung, was dein Addon tut. Diese erscheint im Addon-Manager.

description: "Adds support for the XYZ laser cutter."

api_version

Die API-Version, auf die dein Addon abzielt. Diese muss mindestens 1 (die minimal unterstützte Version) und höchstens die aktuelle Version (9) sein. Die Verwendung einer höheren als der unterstützten Version führt dazu, dass dein Addon die Validierung nicht besteht.

api_version: 9

Siehe die Hooks-Dokumentation für Änderungen in jeder Version.

author

Informationen über den Addon-Autor. Das Feld name ist erforderlich; email ist optional, aber empfohlen, damit Benutzer dich kontaktieren können.

author:
name: Jane Doe
email: jane@example.com

Optionale Felder

url

Eine URL zur Homepage oder zum Repository deines Addons.

url: https://github.com/username/my-custom-addon

depends

Versionseinschränkungen für Rayforge selbst. Gib die Mindestversion an, die dein Addon benötigt.

depends:
- rayforge>=0.27.0

requires

Abhängigkeiten von anderen Addons. Liste Addon-Namen mit Versionseinschränkungen auf.

requires:
- some-other-addon>=1.0.0

version

Die Versionsnummer deines Addons. Diese wird normalerweise automatisch aus Git-Tags ermittelt, kann aber explizit angegeben werden. Verwende semantische Versionierung (z. B. 1.0.0).

version: 1.0.0

Einstiegspunkte

Der Abschnitt provides definiert, was dein Addon zu Rayforge beisteuert.

Backend

Das Backend-Modul wird sowohl im Hauptprozess als auch in Worker-Prozessen geladen. Verwende dieses für Maschinentreiber, Schritttypen, Ops-Produzenten und jede Kernfunktionalität.

provides:
backend: my_addon.backend

Der Wert ist ein gepunkteter Python-Modulpfad relativ zu deinem Addon-Verzeichnis.

Frontend

Das Frontend-Modul wird nur im Hauptprozess geladen. Verwende dieses für UI-Komponenten, GTK-Widgets und alles, das das Hauptfenster benötigt.

provides:
frontend: my_addon.frontend

Assets

Du kannst Asset-Dateien bündeln, die Rayforge erkennen wird. Jedes Asset hat einen Pfad und einen Typ:

provides:
assets:
- path: assets/profiles.json
type: profiles
- path: assets/templates
type: templates

Der path ist relativ zu deinem Addon-Stamm und muss existieren. Asset-Typen werden von Rayforge definiert und können Dinge wie Maschinenprofile, Materialbibliotheken oder Vorlagen umfassen.

Lizenzinformationen

Das Feld license beschreibt, wie dein Addon lizenziert ist. Für kostenlose Addons gib einfach den Lizenznamen mit einem SPDX-Bezeichner an:

license:
name: MIT

Gängige SPDX-Bezeichner sind MIT, Apache-2.0, GPL-3.0 und BSD-3-Clause.

Kostenpflichtige Addons

Rayforge unterstützt kostenpflichtige Addons durch Gumroad-Lizenzvalidierung. Wenn du dein Addon verkaufen möchtest, kannst du es so konfigurieren, dass es eine gültige Lizenz erfordert, bevor es funktioniert.

Grundlegende kostenpflichtige Konfiguration

license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon

Wenn required auf true gesetzt ist, prüft Rayforge auf eine gültige Lizenz, bevor dein Addon geladen wird. Die purchase_url wird Benutzern angezeigt, die keine Lizenz haben.

Gumroad-Produkt-ID

Füge deine Gumroad-Produkt-ID hinzu, um die Lizenzvalidierung zu aktivieren:

license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon
product_id: "abc123def456"

Für mehrere Produkt-IDs (z. B. verschiedene Preistufen):

license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/my-addon
product_ids:
- "abc123def456"
- "xyz789ghi012"

Vollständiges Beispiel für ein kostenpflichtiges Addon

Hier ist ein vollständiges Manifest für ein kostenpflichtiges Addon:

name: premium_laser_pack
display_name: "Premium Laser Pack"
description: "Advanced features for professional laser cutting."
api_version: 9
url: https://example.com/premium-laser-pack

author:
name: Your Name
email: you@example.com

depends:
- rayforge>=0.27.0

provides:
backend: premium_pack.backend
frontend: premium_pack.frontend

license:
name: BSL-1.1
required: true
purchase_url: https://gum.co/premium-laser-pack
product_ids:
- "standard_tier_id"
- "pro_tier_id"

Lizenzstatus im Code prüfen

In deinem Addon-Code kannst du prüfen, ob eine Lizenz gültig ist:

@hookimpl
def rayforge_init(context):
if context.license_validator:
# Check if user has a valid license for your product
is_valid = context.license_validator.is_product_valid("your_product_id")
if not is_valid:
# Optionally show a message or limit functionality
logger.warning("License not found - some features disabled")

Validierungsregeln

Rayforge validiert dein Manifest beim Laden des Addons. Hier sind die Regeln:

Der name muss ein gültiger Python-Bezeichner sein (Buchstaben, Zahlen, Unterstriche, keine führenden Zahlen). Die api_version muss eine ganze Zahl zwischen 1 und der aktuellen Version sein. Das Feld author.name darf nicht leer sein oder Platzhaltertext wie "your-github-username" enthalten. Einstiegspunkte müssen gültige Modulpfade sein und die Module müssen existieren. Asset-Pfade müssen relativ sein (kein .. oder führendes /) und die Dateien müssen existieren.

Wenn die Validierung fehlschlägt, protokolliert Rayforge einen Fehler und überspringt dein Addon. Prüfe die Konsolenausgabe während der Entwicklung, um diese Probleme zu erkennen.