Repository navigation
Editor Plugin
English · Türkçe · Languages / Diller
Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe
Native plugin; palette bileşeni, graph node tipi, action ve dock ekleyebilir. Plugin API sürümü 2, interface IID'si dev.jsonapiforge.EditorPlugin/2.0 olur. Bunlar proje JSON hook'undan ve Python SDK adaptöründen ayrı sistemlerdir.
Manifest NAME.forgeplugin.json, native library ile aynı dizinde bulunur. ZIP kökünde veya bütün dosyaları kapsayan tek taşınabilir üst klasörde tutulabilir. Aşağıdaki hash yalnız yer tutucudur; gerçek final binary SHA-256 ile değiştirilmelidir:
{
"id": "vendor.plugin-name", "name": "Plugin Name", "version": "1.0.0",
"apiVersion": 2, "library": "PluginName.so",
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"permissions": ["workspace.read", "graph.nodes.register"]
}Windows .dll, macOS .dylib kullanır. Hash lowercase olmalıdır. Library manifest dizini içinde kalmalı; symlink olmamalıdır. ID/permission adları lowercase dotted tanımlayıcılardır ve permission listesi en fazla 32 öğedir.
- Publisher, kaynak ve paketin platform/ABI uyumunu inceleyin.
-
Plugins → Import plugin from ZIP…seçin. - Import sonunda plugin etkinleşmez.
-
Plugins → Manage plugins…ile ID, version, hash ve permissions'ı inceleyip ayrı etkinleştirin. - Gerekirse
Reload approved pluginskullanın.
ZIP importer en fazla 256 entry, 64 MiB arşiv, 64 MiB tek dosya, 128 MiB açılmış veri kabul eder; compression ratio, CRC, path, duplicate/case collision, manifest ve library digest/API kontrolleri uygular. Traversal, absolute path ve symlink reddedilir.
ForgeEditor::IEditorPlugin şu metotları ister: pluginId, displayName, apiVersion, initialize(EditorHost*, QString*), shutdown. QObject plugin'inizde Qt metadata/interface bildirimi gerçek IID ile eşleşmelidir. Host sunumu:
host->addPaletteComponent("Queue", "Resources", queueFragment);
host->addGraphNodeType("Queue Publish", "vendor.queue.publish", defaultProperties);
host->addToolAction(action);
host->addDockWidget(Qt::RightDockWidgetArea, dock);
host->showStatusMessage("Queue tools ready");Bu API kullanım kesitidir; tam plugin projesi değildir. Aynı Qt sürümü, compiler ABI, platform, CPU ve API ile derleyin. API numarası aynı diye Windows MinGW/MSVC veya Linux/macOS binary'leri birbirine uyumlu olmaz.
Native plugin, desktop kullanıcısının yetkileriyle çalışır. Manifest permissions bir OS sandbox oluşturmaz. SHA-256 içerik bütünlüğünü gösterir; publisher kimliğini kanıtlamaz. Güvenilir imzalı kanal ve insan incelemesi gerekir.
Katalog normal GET /api/<project>/v1/<resource>?limit=100&offset=0 kaynağıdır. Kayıt alanları plugin_id, name, version, publisher, HTTPS download_url, sha256, permissions, enabled olur. UI en fazla 100 kayıt/2 MiB okur, URL/digest/identity alanlarını doğrular.
Katalog seçimi URL'yi kopyalar; native kodu otomatik download/install/enable etmez. Paket ayrıca açık ZIP import akışından geçer. EditorPluginRegistry örnek uygulaması bu metadata backend'ini gösterir; binary hosting ve publisher imzası ayrı konudur.
Custom graph node'ları tuvalde korunabilir, fakat otomatik compiler yetkisi kazanmaz. Mevcut compiler bunları design-only olarak reddeder. Reviewed export action normal Forge fragment üretip standart doğrulama akışına sokabilir.
Kendi plugin lisansınızın yanında korunan Editor kodunu/markayı dağıtma hakkınız olup olmadığını ayrıca kontrol edin. Projenin üçüncü taraf lisansları kendi koşullarını korur.
Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.
Editor/editor/plugins/README.mdEditor/editor/include/forgeeditor/IEditorPlugin.hppEditor/editor/src/PluginManager.cppEditor/editor/src/SafeZipReader.cppEditor/editor/src/PluginCatalogClient.cpp