OxideTerm Plugin-Kompatibilität
Lesen Sie die relevante Implementierung, bevor Sie eine Kompatibilitätsgrenze festlegen:
crates/oxideterm-plugin-manifest/src/registry.rs: Katalog-Release- und Korrekturdaten.crates/oxideterm-plugin-registry/src/registry.rsundcompatibility.rs: Versionsauswahl, zwischengespeicherte Anforderungen und Starterkennung.crates/oxideterm-plugin-registry/src/install.rs: Paketinstallationsprüfungen.crates/oxideterm-gpui-app/src/workspace/plugin_entity.rs: Aktualisierung, Aktivierungssperre und Task-Eigentümerschaft.- Die spezifische Host-API, Laufzeitumgebung oder Grammatik-Ladung, die von der Änderung betroffen ist.
crates/oxideterm-editor-syntax/src/plugin.rsundcrates/oxideterm-gpui-editor/src/languages.rsfür lazy Grammar-Loading und aktuelle Dokumentaktualisierung.
Host-seitiger Vertrag
Wählen Sie die höchste Version aus, die sowohl vom Host als auch von der Plattform unterstützt wird. Bieten Sie ein Update nur an, wenn diese kompatible Version neuer ist als das installierte Plugin; erläutern Sie eine höhere inkompatible Version separat. Führen Sie niemals stillschweigend ein Downgrade durch.
Überprüfen Sie installierte Plugins beim Start sowohl nach App-Upgrades als auch nach App-Downgrades erneut. Wenden Sie die neueste zwischengespeicherte Korrektur für die genaue Plugin-ID und -Version an, ohne Paketdateien neu zu schreiben. Behalten Sie Dateien, Einstellungen und Aktivierungspräferenzen bei, während Sie inkompatible Aktivierung blockieren. Halten Sie die Startaktualisierung begrenzt und dem Plugin-Objekt zugeordnet; der Offline-Start verwendet den letzten gültigen Cache.
Der offizielle Client verwendet den v2-Zusammenfassungskatalog und lädt prüfsummengebundene Verläufe für installierte Plugins und die aktuelle Marktplatzseite. Ein Verlauf muss mit seiner Zusammenfassungsidentität, neuesten Version, effektiven Host-Reichweite, Größe und SHA-256 übereinstimmen. Behalten Sie den eingefrorenen v1-Endpunkt, den exakten historischen Schnappschuss, referenzierte Assets und den v1-Cache-Leser bei. Alle nachfolgenden Plugins, Releases und Korrekturen gehören nur zu v2; bestehende Clients müssen den Host aktualisieren, um sie zu erhalten. Neue Clients rufen nur v2 ab; bei Fehler behalten Sie den letzten gültigen Cache bei, anstatt ihn durch den eingefrorenen v1 zu ersetzen. Veröffentlichen Sie v2, bevor Sie einen Host ausliefern, der es benötigt. Speichern Sie verifizierte Rohdaten-Verläufe, bevor Sie den kompakten Root-Cache ersetzen; Start und manuelle Installation müssen Korrekturen für die genaue installierte Version auflösen. Brechen Sie veraltete Seitenanfragen ab und verwerfen Sie Ergebnisse von einer anderen Seite oder einem anderen Katalogschnappschuss. Katalogwartung und -generierung gehören zu den Quellaufzeichnungen des Marktplatzes pro Plugin und zur Release-Automatisierung.
Für Sprachextraktion überprüfen Sie den Grammatik-Lader, die Tree-Sitter-ABI und das tatsächliche Verhalten des alten Clients. Eine Host-Reichweite kann diese Prüfungen nicht ersetzen. Weisen Sie alten Plugins keine obere Grenze zu, nur weil eine neue Plugin- oder App-Version veröffentlicht wurde.
Ab 2.2.2 können Sprachmanifeste displayName, grammarName, extensions und literale fileNames deklarieren. Neue IDs sind dynamisch; erweitern Sie nicht das veraltete Enum oder die Dateizuordnungstabellen für sie. Veröffentlichte Sprachpakete behalten ihre Fallback-Zuordnungen. Katalogdeklarationen stammen aus verifizierten Archiven und sind an v2-Verläufe gebunden, wobei installierte Manifeste vor kompatiblen Kataloghints stehen. Neue Deklarationen erfordern >=2.2.2; gewöhnliche Abfragekorrekturen an veralteten Paketen behalten ihre bestehende Host-Reichweite. Halten Sie die Wiedererkennung offener Dokumente, fehlende Plugin-Routing und Offline-Kataloghints einheitlich über IDE-, lokale und SFTP-Vorschauen hinweg.
Ab 2.2.2 kann ein Sprachpaket eingebettete Grammatiken in injections bündeln. Überprüfen Sie jeden Parser, Highlight-Query und Eltern-Selektor durch seine deklarierte Prüfsumme; Selektoren erfassen injection.content. Das Dokument besitzt jeden eingebetteten Parser, dessen Abbruch und Freigabe. Behalten Sie ursprüngliche Byte-Koordinaten über Bearbeitungen hinweg bei und beschränken Sie Kind-Highlights auf enthaltene Regionen, wobei Sie Eltern-Captures dort ersetzen, sodass Template-Captures keine Script-Tokens verstecken können. Gebündelte Grammatiken sind privat für ihr Elternpaket und registrieren keine separaten Dateizuordnungen.
Für die ACP-Agent-Extraktion behalten Sie den ACP-Client, Berechtigungsentscheidungen und die Prozess-Eigentümerschaft im Host. Veröffentlichte acp-Manifeste bleiben unterstützt und normalisieren sich in den gemeinsamen Helferplan. Neue Helfermanifeste deklarieren Feature acp, Protokoll acp und Version 1. Agenten kommunizieren direkt über ACP stdio; routen Sie ihren Datenverkehr nicht durch die normale Plugin-Überwachung. Überprüfen Sie registry.acp_agents, workspace/acp_plugins.rs und workspace/acp_workspace.rs für Start-Sperrung, Startauflösung und Bereinigung. Hosts bis 2.2.1 können diese Laufzeitumgebung nicht laden. Behalten Sie vorhandene Agentenidentitäten und Benutzeroptionen bei, wenn Sie gebündelte Adapter zu Plugin-Bindungen migrieren.
Veröffentlichte Mosh-Manifeste verwenden terminal-transport; neue Helfermanifeste deklarieren Feature terminal-transport, Protokoll oxideterm-mosh und Version 1. Behalten Sie SSH-Bootstrap, Terminal-Rendering und lokale Vorhersagen im Host; UDP, SSP und Verschlüsselung gehören zum Engine-Plugin. Hosts bis 2.2.1 können es nicht laden. Überprüfen Sie oxideterm-mosh und seine Workplace-eigenen MoshPluginSessions für Start-Sperrung und Prozessstilllegung vor dem Paketaustausch. Beide Rohrrichtungen müssen unter Ausgabe-Gegendruck unabhängig bleiben. RDP, VNC und Mosh teilen die Katalogkategorie remote-connections.
Koordination der Veröffentlichung
Veröffentlichte Remote-Desktop-Manifeste verwenden remote-desktop; neue Helfermanifeste deklarieren Feature remote-desktop, Protokoll oxideterm-remote-desktop und Version 1. Beide normalisieren sich in den gemeinsamen Helferplan außerhalb der normalen Plugin-Überwachung. Behalten Sie den nativen Viewer, Eingabe, Anmeldeinformationen und SSH-Tunnel-Eigentümerschaft im Host. Erfordern Sie eine unterstützte contributes.remoteDesktop.protocolVersion und lösen Sie nur vertrauenswürdige, aktivierte, kompatible installierte ausführbare Dateien auf. Stoppen und ernten Sie Helferprozesse, bevor Sie ihre Dateien aktualisieren oder entfernen; deaktivieren Sie die automatische Wiederverbindung, bis ein kompatibler Anbieter verfügbar ist. Behalten Sie das bestehende binäre stdio-Format bei der Extraktion von Helfern unverändert bei. Hosts bis 2.2.1 können diese Laufzeitumgebung nicht laden.
Generische helper-Manifeste erfordern Hosts ab 2.2.2. Behalten Sie veröffentlichte Manifestarten, Fähigkeitsgenehmigungsgrenzen und Protokollnutzdaten bei der Normalisierung bei. Die Laufzeitplan-Vereinheitlichung überträgt keine Kind-Eigentümerschaft auf die Plugin-Überwachung. FIDO deklariert Feature ssh-authentication, Protokoll oxideterm-security-key und Version 1; sein Authentifizierungs-Task besitzt Abbruch und Ernte.
Plugin-Erstellung, Release-Aufzeichnungen und Kompatibilitätskorrekturen gehören in das AnalyseDeCircuit/oxideterm-plugins-Repository. Finden Sie seinen tatsächlichen Checkout anhand der Repository-Identität, nicht durch Annahme eines lokalen Verzeichnisnamens. Lesen Sie seine .agents/skills/oxideterm-plugin-release/SKILL.md und verwenden Sie dessen Release-Skripte. Die kanonische Kompetenz ist auch verfügbar unter:
Verwenden Sie einen lokalen Checkout, wenn diese Kompetenz oder ihre Skripte noch nicht veröffentlicht sind. Erfinden Sie keinen alternativen Veröffentlichungsprozess, wenn die erforderlichen Werkzeuge fehlen. Host-Implementierungsänderungen allein autorisieren nicht die Veröffentlichung von Plugins.
Für geändertes Verhalten verwenden Sie die vorhandenen Registry- und Plugin-Entity-Tests an der Grenze, die sie besitzt. Decken Sie die betroffenen Risiken ab: kompatible Versionsauswahl, Upgrade/Downgrade-Ablehnung, Korrektur-Wiederherstellung oder Offline-Start. Führen Sie keine nicht verwandten Test-Suiten erneut aus, nur weil eine Plugin-Kompatibilitätsdatei geändert wurde.