Plugin-Marktplatz: Katalog mit Kategorien, Grafiken und Ein-Klick-Installation #57
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#57
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Idee
Ein Plugin-Marktplatz nach dem Vorbild des Apple App Store: Plugins nach Kategorien durchsuchen, grafisch ansprechend (Icons, Screenshots, animierte Bilder, Video), und mit einem Klick installieren, aktualisieren und entfernen. Anlass: Die Plugin-Liste (rund 40 Verzeichnisse, 20 in der Registry) wird unübersichtlich.
Entschieden
store/im Paket mit (Icon, Screenshots, Kategorie, Langtext). Das Veröffentlichen übernimmt sie in den Katalog.iris/iris-plugin-registry; Prüfsummen werden verifiziert.Folgen
index.jsonund Prüfsummen, Leseseite/plugin-registryim Linux-Server, Web-Views undpanel_apiim Plugin-System.Weitere Entscheidungen (grill-me, Stand 2026-10-16)
store/-Text); Hook-Skripte undrequirements.txtausklappbar; bei Updates die Änderungen.categoryje Plugin (Pflicht). Erste Liste: Medien und Kreativ, Wissen und Dokumente, Automatisierung und Alltag, Entwicklung und Analyse, Infrastruktur, Sicherheit.store/optional; ohne Material eine Platzhalterkarte ausplugin.json.requires; gemeinsame Installation mit gebündeltem Dialog; Warnung beim Entfernen.store/-Inhalt: Medien und Markdown; optional eigene HTML-Seite im abgeschotteteniframeohne Zugriff auf Token und Marktplatz-Seite.Noch offen
store/und der Katalog-Erweiterung (Felder, Größenlimits für Medien).iris_min_versionwarnt bisher nur).Entwicklung
Plan und Verlauf:
plugins/plugin-marktplatz/PLAN.md. Dieses Issue bleibt offen; der Stand steht in den Kommentaren.PR #77 gemergt: docs(plugin-marktplatz): Entwicklungsverzeichnis mit PLAN.md (iris/Iris#57)
iris/iris-plugins#77
Commits:
PR #78 gemergt: docs(plugin-marktplatz): Entscheidungen aus grill-me in den Plan übernommen (iris/Iris#57)
iris/iris-plugins#78
Commits:
Stand 2026-10-16: Spezifikation geklärt, noch kein Code
Die zehn Fragen aus der Befragung sind beantwortet. Beschreibung des Issues und
plugins/plugin-marktplatz/PLAN.md(PR #78) enthalten die Entscheidungen.Gefunden beim Klären:
cfg_token. Der Marktplatz gehört zu keinem Plugin und braucht ein eigenes, nur lesendes Token-Modell.comfyui-workflowsgegencomfyui-bridge;blender-asset-generatorgegenblender-bridgeundcomfyui-bridge). Ein Ein-Klick-Install würde sonst nicht funktionierende Plugins anlegen. Daher das neue Feldrequires.store/optional und es gibt Platzhalterkarten.Nicht geprüft: Es wurde nichts gebaut oder getestet. Annahmen (Katalog als erweiterte
index.json, zuletzt geladener Katalog bei nicht erreichbarer Registry, im Browser am Linux-Server nur lesbar) stehen im Plan und sind noch nicht bestätigt.Nächster Schritt: Schritt 1 der Reihenfolge, der Katalog (Manifest-Felder,
index.json,publish-plugins.sh, Kategorie-Liste). Das Issue bleibt offen.Schritt 1 (Katalog) gebaut, PR iris/iris-plugins#80, noch nichts veröffentlicht.
category(Pflicht zum Veröffentlichen, ID ausregistry-tools/categories.json, 6 Kategorien) undrequires(optional). Alle 20 freigegebenen Plugins haben eine Kategorie;requiresnur belegt: comfyui-workflows → comfyui-bridge, comfyui-dirigent → beide.schemableibt 1; neucategories(oben) sowiecategory,requires,storeje Plugin. Linux-Server und Mac-App lesen nur benannte Felder, ältere Leser ignorieren die neuen.store/liegt im Quellbaum des Plugins, nicht im Paket. Sonst hätten 20 Build-Skripte es einpacken müssen, und jeder Server würde Medien mitinstallieren.publish-plugins.shlegt es nachstore/<id>/der Registry; geänderte Medien gehen auch ohne neue Version raus. Grenzen: Icon 512 KB, Texte 64 KB, Medien 8 MB, 12 Screenshots, 25 MB je Plugin; Symlinks und Fremddateien werden abgelehnt.checkohne Befund,requireslösen sich auf; ein Wegwerf-store/lief durch das echte Skript (neu, geändert, kaputt abgelehnt). Die echte Registry lehnt die Plugins erwartungsgemäß ab (Manifest geändert, Version gleich).store/-Material vorhanden. SF-Symbol-Namen incategories.jsongelten nur nativ. Nicht in einer App geprüft, dass das Manifest mit den neuen Feldern installiert (Swift-Codable und der Python-Installer lesen tolerant).PR #26 gemergt: feat(marketplace): Katalog, Lese-Token und Medien-Proxy im Linux-Server (iris/Iris#57)
iris/iris-linux-server#26
Commits:
PR #27 gemergt: feat(marketplace): Bestätigungs-Vorschau, Installation mit Abhängigkeiten und Entfernen (iris/Iris#57)
iris/iris-linux-server#27
Commits:
PR #28 gemergt: feat(marketplace): Marktplatz-Seite (Kategorien, Suche, Details, Web-View-Brücke) (iris/Iris#57)
iris/iris-linux-server#28
Commits:
PR #66 gemergt: docs(wire): Plugin-Marktplatz — Lese-Token, Routen, Dialog-Vorschau, Web-View-Brücke (iris/Iris#57)
alf/2ndbrain#66
Commits:
Schritt 2 (Linux-Server, Seite im Browser) gebaut und eingereicht (iris-linux-server PR #26, #27, #28; Wire-Doku in 2ndbrain; Plan in iris-plugins).
GET /marketplace/webview-url(Bearer) erzeugt ein Token (8 h, nur im Speicher), das nur Katalog und Medien lesen darf. Installieren, Aktualisieren, Entfernen laufen nur über Bearer-Routen aus der App.GET /marketplace(die Seite, eine Datei),/marketplace/api/catalog,/marketplace/store/{id}/{pfad}(nur Dateien aus dem Index, Prüfsumme, HTML/SVG mitsandbox-CSP),POST /plugin-registry/preview,/remove, undinstallmitwith_requiresundexpected.previewleitet alles aus dem geprüften Paket ab (Hooks mit Skript, Python-Pakete, Systemprompt, Jobs, Diff bei Updates, Treiber-Gruppe).installmitexpectedinstalliert nichts, wenn die Registry sich seit dem Dialog geändert hat.install_config;preview.this_servermeldet das, die App soll es anzeigen.stale, auch nach Neustart.GET /marketplace/webview-url(404 = Server zu alt). Brücke:irisMarketplace.postMessage({v,action,id,version}), Antwort immeririsMarketplaceDone({...}).store/-Material undpublish-plugins.shgegen eine lokale Test-Registry: Katalog, Medien, Sperrgründe, Header, 401.node --check), Lauf im Container auf iris-server (kein Deploy), Mac-Server, Apps.PR #29 gemergt: fix(marketplace): lange Wörter laufen nicht mehr aus der Karte, Raster auf schmalen Fenstern (iris/Iris#57)
iris/iris-linux-server#29
Commits:
PR #58 gemergt: feat(marketplace): MarketplaceCore — Katalog, Lese-Token, Installationsplan, Paket-Zusammenfassung (Port, mit swiftc-Tests) (#57)
#58
Commits:
PR #60 gemergt: feat(marketplace): Marktplatz im Mac-Server — Katalog, Medien, Vorschau, Installieren mit Abhängigkeiten, Entfernen (#57)
#60
Commits:
PR #61 gemergt: feat(marketplace): Marktplatz-Fenster mit Web-View-Brücke und nativem Bestätigungsdialog im Client (#57)
#61
Commits:
PR #67 gemergt: docs(marketplace): Mac-Server und Client in der Wire-Doku, Abgleich der Seite zwischen den Servern (iris/Iris#57)
alf/2ndbrain#67
Commits:
PR #62 gemergt: docs(claude): Marktplatz in der Code-Landkarte (#57)
#62
Commits:
Schritt 3 (macOS: Mac-Server, Iris.app, IrisClient) gebaut und eingereicht (PRs #58, #60, #61 in iris/Iris; Wire-Doku, Seiten-Abgleich
tools/check-marketplace-page-sync; Plan in iris-plugins). Noch nicht live getestet.MarketplaceCore.swift(reine Logik, Port der Python-Version, Antworten identisch),MarketplaceService.swift, Routen inIrisRemoteServer.swift. Seite öffentlich, Katalog und Medien nur mit Lese-Token, alles andere Bearer. Seite als Ressource, dieselbe Datei wie im Linux-Server.this_server.hooks_executed: true), der Dialog zeigt das.irisMarketplace, nativer Bestätigungsdialog (Skripte und Python-Pakete aufklappbar, Änderungen bei Updates, ersetzte Treiber-Plugins, beim Entfernen Abhängige und Schalter „Daten löschen“), Knopf „Marktplatz“ im Plugin-Manager. Gilt für Iris („Iris — Lokal“) und IrisClient.expected). Die App meldet immeririsMarketplaceDonezurück.scripts/test-marketplace-core.sh, nur swiftc); Xcode-Builds beider Schemes mit frischem Zeitstempel, Scheme danach zurückgesetzt.PR #30 gemergt: fix(marketplace): Plattformname „macOS“ in der Kopfzeile (iris/Iris#57)
iris/iris-linux-server#30
Commits:
PR #63 gemergt: chore(marketplace): Seite aus dem Linux-Server übernehmen (Plattformname) (#57)
#63
Commits:
PR #68 gemergt: chore(tools): Abgleich auch für das Dialog-Modell der iOS-App (iris/Iris#57)
alf/2ndbrain#68
Commits:
PR #13 gemergt: feat(marketplace): Plugin-Marktplatz in IrisRemote — Seite, Web-View-Brücke, nativer Bestätigungsdialog (iris/Iris#57)
iris/2ndbrain-ios#13
Commits:
PR #69 gemergt: docs(wire): iOS-Client des Marktplatzes (iris/Iris#57)
alf/2ndbrain#69
Commits:
PR #31 gemergt: feat(marketplace): Dateiliste, SKILL.md und Einzeldateien des Pakets im Bestätigungsdialog ansehen (iris/Iris#57)
iris/iris-linux-server#31
Commits:
PR #64 gemergt: feat(marketplace): Skills, Skripte und Dateien des Pakets im Bestätigungsdialog ansehen (#57)
#64
Commits:
PR #14 gemergt: feat(marketplace): Skills, Skripte und Dateien des Pakets im Bestätigungsdialog ansehen (iris/Iris#57)
iris/2ndbrain-ios#14
Commits:
PR #70 gemergt: docs(wire): Dateien des Pakets im Bestätigungsdialog ansehen (iris/Iris#57)
alf/2ndbrain#70
Commits:
PR #32 gemergt: feat(marketplace): Seite — Knopf „Alle aktualisieren“ im Tab Updates (iris/Iris#57)
iris/iris-linux-server#32
Commits:
PR #65 gemergt: feat(marketplace): „Alle aktualisieren“ — gesammelter Dialog mit Änderungen und Details, nacheinander aktualisieren (#57)
#65
Commits:
PR #15 gemergt: feat(marketplace): „Alle aktualisieren“ in IrisRemote — gesammelter Dialog, Details ansehen, nacheinander aktualisieren (iris/Iris#57)
iris/2ndbrain-ios#15
Commits:
PR #71 gemergt: docs(wire): Brücken-Nachricht update_all (Alle aktualisieren) (iris/Iris#57)
alf/2ndbrain#71
Commits:
PR #72 gemergt: docs(wire): Markdown der update_all-Beschreibung bereinigt (iris/Iris#57)
alf/2ndbrain#72
Commits:
PR #33 gemergt: feat(marketplace): Detailansicht zeigt die Store-Seite des Plugins in voller Höhe (iris/Iris#57)
iris/iris-linux-server#33
Commits:
PR #66 gemergt: chore(marketplace): Seite aus dem Linux-Server übernehmen (Store-Seite in der Detailansicht) (#57)
#66
Commits:
PR #96 gemergt: feat(store): Bildtexte zu Screenshots (store/text/*.md → HTML) (iris/Iris#57)
iris/iris-plugins#96
Commits:
PR #34 gemergt: feat(marketplace): Bildtexte und Großansicht im Marktplatz (iris/Iris#57)
iris/iris-linux-server#34
Commits:
PR #67 gemergt: feat(marketplace): Bildtexte im Katalog und Seitenkopie (iris/Iris#57)
#67
Commits:
PR #73 gemergt: docs(wire): Bildtexte im Marktplatz-Katalog (iris/Iris#57)
alf/2ndbrain#73
Commits:
PR #97 gemergt: feat(store): eigene Notiz store/custom.md mit _attachments statt Bildtexten (iris/Iris#57)
iris/iris-plugins#97
Commits:
PR #35 gemergt: feat(marketplace): eigene Notiz des Plugins im Marktplatz (iris/Iris#57)
iris/iris-linux-server#35
Commits:
PR #68 gemergt: feat(marketplace): eigene Notiz im Katalog, Seitenkopie (iris/Iris#57)
#68
Commits:
PR #74 gemergt: docs(wire): custom statt Bildtexte im Marktplatz-Katalog (iris/Iris#57)
alf/2ndbrain#74
Commits:
PR #98 gemergt: docs(plugins): Stand Marktplatz in README und Plan (iris/Iris#57)
iris/iris-plugins#98
Commits:
Stand 2026-10-16 (Zusammenfassung)
Der Plugin-Marktplatz ist gebaut und läuft — Katalog, beide Server, alle Clients.
Fertig
requires,platforms,store/je Plugin; Prüfungen und Tests inplugins/registry-tools(66 Tests)./marketplace, Katalog, Medien,/plugin-registry/preview|install|remove|package-file; Lese-Token (8 h); aufiris-serverdeployt und im Browser geprüft.expectedverhindert, dass etwas anderes installiert wird als gezeigt.85346ab,b45377f).store/custom.md: normale Obsidian-Notiz, Bilder/Videos instore/_attachments/(![[Bild.png]]), beim Veröffentlichen zu HTML; nur verwendete Dateien kommen in die öffentliche Registry; Seite filtert zusätzlich per Whitelist, Klick vergrößert Bilder. Lokal im Browser mit Testbildern/Tabelle geprüft.plugins/plugin-marktplatz/PLAN.md, Daily Logs.Grenzen / nicht geprüft
iris-server).marketplace.py(Feldcustomim Katalog) noch nicht deployt; die neue Seite liegt dort.custom.mdsamt Bildern in einem Plugin.changed, Abbrechen im Dialog, Marktplatz von IrisClient gegen den Linux-Server. Beim Entfernen bleiben Keychain-Einträge bestehen.Als Nächstes
custom.mdschreiben, auf private Daten prüfen,--dry-run, erst nach Okay veröffentlichen.Das Issue bleibt offen.
PR #16 gemergt: chore(i18n): neue Strings des Bulk-Update-Dialogs in IrisRemote (iris/Iris#57)
iris/2ndbrain-ios#16
Commits: