Salta ai contenuti

Manifest e metadata plugin

XIQUIL separa il manifest sorgente del developer dal manifest runtime distribuito agli utenti.

Il pacchetto caricato sull’Hub contiene il codice del plugin e, preferibilmente, un plugin.source.json tecnico. Il plugin.json finale viene generato dall’Hub al momento dell’approvazione, inserito nel pacchetto e firmato.

CampoFonte autorevoleNote
nameHubLo slug del plugin non cambia dopo la creazione. Il manifest tecnico può dichiararlo solo come controllo di coerenza.
versionHubDeve usare formato strict x.x.x, senza prefisso v. Il canale (beta/stable) è separato dalla versione.
display_nameHubModificabile nel flusso metadata dell’Hub.
descriptionHubUsata nel catalogo e nel manifest firmato.
required_tierHubDetermina installabilità in base alla licenza.
min_core_versionHubObbligatoria per invio in review; formato x.x.x.
max_core_versionHubOpzionale; formato x.x.x.
depends_onplugin.source.jsonDipendenze tecniche da altri plugin.
provides_routes / provides_models / provides_frontendplugin.source.jsonCapacità runtime del plugin.
icon, nav_category, nav_pathplugin.source.jsonDati tecnici per integrazione UI.
permissions, settings_schema, system_packagesplugin.source.jsonContratti tecnici richiesti dal Core.
{
"name": "xq_demo_widget",
"author": "Acme",
"depends_on": [],
"provides_routes": true,
"provides_models": false,
"provides_frontend": true,
"icon": "ExtensionIcon",
"nav_category": "sistema",
"nav_path": "/plugins/xq_demo_widget",
"permissions": ["impostazioni"],
"settings_schema": [],
"system_packages": []
}

Non mettere in plugin.source.json campi di marketplace come display_name, description, required_tier, version, min_core_version o max_core_version: se presenti in un vecchio plugin.json, l’Hub li tratta come legacy e non come fonte autorevole.

Quando l’amministratore approva una versione:

  1. l’Hub valida che la release version sia x.x.x e maggiore delle versioni approvate precedenti;
  2. legge i campi tecnici dal pacchetto caricato;
  3. genera il plugin.json effettivo unendo form Hub e manifest tecnico;
  4. sostituisce eventuali manifest legacy nel tarball;
  5. calcola MANIFEST.sha256;
  6. firma il pacchetto e aggiunge MANIFEST.sha256.keyid.

Nel backoffice la review mostra anche il confronto con la versione approvata precedente, quando disponibile: campi cambiati, valore precedente e valore nuovo.

Durante la review, metadata e campi versione della release sottomessa restano bloccati per il developer. L’amministratore può correggere i campi consentiti prima dell’approvazione; il plugin.json firmato viene sempre generato dai valori effettivi approvati sull’Hub.

Le versioni non più attive possono essere archiviate. Una versione archived non entra in review e non viene distribuita; può essere ripristinata come bozza se deve essere ripresa.

I pacchetti Marketplace approvati contengono sempre:

FileA cosa serve
plugin.jsonManifest runtime generato dall’Hub.
MANIFEST.sha256Hash dei file distribuiti.
MANIFEST.sha256.sigFirma RSA-PSS del manifest hash.
MANIFEST.sha256.keyidIdentificatore della chiave Marketplace usata per firmare.

Il Core verifica il pacchetto prima dell’installazione. La licenza attiva contiene le chiavi pubbliche Marketplace fidate: questo permette all’Hub di ruotare chiave di firma senza invalidare subito i pacchetti già pubblicati.

Se l’installazione arriva dal tab Sviluppatore in developer mode, XIQUIL può accettare pacchetti locali non firmati. I pacchetti scaricati dal Marketplace ufficiale devono invece superare sempre la verifica firma.

Il Core installato dagli utenti legge sempre il plugin.json firmato. Durante sviluppo locale puoi ancora usare un plugin.json completo per testare installazioni manuali, ma il pacchetto destinato all’Hub dovrebbe contenere plugin.source.json e lasciare all’Hub la generazione del manifest runtime.

Nel repository ufficiale xiquil-plugins, package.sh esclude il plugin.json legacy dal tarball quando trova plugin.source.json.