Signiertes Referenz-Plugin für MindGraph Notes. Belegt die Plugin-Pipeline
end-to-end: Ed25519-Signierung → GitHub-Installation (owner/repo) → Dashboard-Widget → Update-Badge.
Main-only (kein Renderer-JS). Die widgetProvider-Action liefert eine deklarative WidgetView
({ kind: 'badge', text: 'MindGraph Demo vX.Y.Z' }) — der Host rendert sie als native Text-Nodes. Der
Versions-String im Badge macht ein Update auf dem Dashboard sichtbar.
npm install
# Dev-Key AUSSERHALB des Projekts erzeugen (nie committen):
node scripts/keygen-dev.mjs /pfad/ausserhalb/dev-key.json
npm run build # → dist/main.js + dist/manifest.json
node scripts/pack.mjs /pfad/ausserhalb/dev-key.json releases/mindgraph-demo-$(node -p "require('./manifest.json').version").mgxpluginLokal installierbar nur in ungepackten App-Builds mit gesetztem MINDGRAPH_PLUGIN_DEV_KEYRING_PATH
(JSON { keyId: spkiPem }). Gepackte Apps ignorieren Dev-Keys.
Dieses Repo signiert nicht selbst — und bekommt den Prod-Schlüssel nie zu sehen. Offizielle Releases werden zentral im Repo mindgraph-notes über den Workflow „Sign Plugin Release" signiert:
- Hier nur bauen + taggen:
npm run builderzeugtdist/(=manifest.json+main.js); Commit taggen alsvX.Y.Zund pushen. Keine Secrets, kein Signier-Workflow in diesem Repo. - Ein Maintainer startet in mindgraph-notes den Workflow „Sign Plugin Release" (manuell, auf
master) mitrepo(owner/repo),tagund exaktemcommit_sha. - Ein untrusted Build-Job (ohne Schlüssel) baut dieses Repo am Commit; ein geschützter
Signier-Job im Environment
release-signing(Required Reviewers, nurmaster) signiert das gebautedist/mit dem Prod-Key (keyIdmindgraph-release-2026-01) und re-verifiziert das Archiv. - Das signierte
.mgxpluginwird als Workflow-Artefakt erzeugt; der Maintainer hängt es manuell ans GitHub-Release dieses Repos.
So bleibt der private Prod-Schlüssel ausschließlich im geschützten Environment von mindgraph-notes.
- Dev-Key ≠ Produktionsschlüssel. Der private Prod-Key liegt ausschließlich im geschützten
GitHub-Environment + im sicheren Secret-Speicher des Maintainers — nie im Repo, nie in einer Datei
hier. Nur sein Public Key ist in der App gepinnt (
OFFICIAL_KEYS, keyIdmindgraph-release-2026-01). - Privates Schlüsselmaterial wird nie committet (
.gitignoresperrt zusätzlich*key*/*.pem/*secret*).
@mindgraph/plugin-api ist noch nicht auf npm; src/main.ts nutzt darum einen kleinen, zur
Paket-Implementierung identischen definePluginMain-Shim. scripts/pack.mjs ist ein eigenständiger
Packer (repliziert das Format des App-Packers) — kein App-Monorepo nötig.