Plugin-Konfiguration: Zustandsanzeige im Marktplatz (config-status) und Rechnerwahl bei „Laden“ #85
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#85
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?
Warum
Ob ein Plugin konfiguriert ist, sieht man heute nur, wenn man jedes Konfigurationsfenster einzeln öffnet. Außerdem fragt der Marktplatz bei „Laden“ nicht, auf welchem Rechner ein Plugin laufen soll, und lehnt Plugins mit Installationsfragen ab (Marker: „braucht Einrichtungsfragen …“). Folge von iris/iris-plugins#115: Plugins kennen weder SSH-Adresse noch Schlüssel, sondern wählen ihren Rechner im Konfigurationsfenster nur noch aus einem Picker (Kennung
host_id).Spezifikation (Grill-me-Runde, 2026-10-19)
Zustandsanzeige
has_settings_panel) meldet seinen Zustand selbst: Befehlconfig-statusin derpanel_api; Plugins ohne Skript bekommen ein minimales.{state, message}: Grünconfigured, Gelbneeds_configuration, Rot Fehler bei der Prüfung (Skript wirft, Zeitüberschreitung, Befehl fehlt) mit dem Fehlertext sichtbar in der Kachel. Nichts passiert still.GET /plugins/:id/config-statusauf beiden Servern (Wire-Protokoll, Eintrag in02-Wire-Protokoll.md). Fehler kommen als{state: "error", message}, nicht als HTTP-Fehler; das Zeitlimit (10 s je Plugin) setzt der Server.irisMarketplacein der App,config-webview-urlim Browser-Client).publish-plugins.shlehnt ein Plugin mit Panel ab, dasconfig-statusnicht führt. Von Hand installiert zeigt es Rot „config-status fehlt“.Rechnerwahl bei „Laden“
host_capabilities(was ein Rechner mitbringen muss) plus neulocal_mode: true(das Plugin läuft auch lokal auf dem Server). Die Installations-Sperre blockiert ein Plugin mitlocal_modenie.local_modewird lokal installiert (Marker), sonst blockiert die Sperre. Mindestens ein passender Host (auch genau einer): Plugin wird installiert, das Konfigurationsfenster öffnet sich mit dem Picker. Bis zur Wahl ist der Knopf gelb.local_modezusätzlich „Dieser Iris-Server (lokal)“.post_installIRIS_HOST_MODE=local(Hook richtet die lokale Umgebung ein) oderpending(Hook richtet nichts ein, das Panel richtet nach der Wahl ein); ohne Host-Bezug fehlt die Variable. Beide Server gleich.MARKER_SERVER_URL,post_install.shbricht auf Intel/Linux nicht mehr ab, und ein neuer Panel-Befehl richtet die lokale Umgebung nach der Wahl ein.Reihenfolge
Erst die Infrastruktur (dieses Issue), dann Plugin für Plugin in eigenen Issues in
iris-plugins(Marker: #135). Marker und iris-server-hosts bekommenconfig-statuszuerst; die übrigen Plugins mit Panel zeigen im Übergang bewusst Rot. Eingereicht wird erst nach Alfs Test; jedes Plugin wird sofort veröffentlicht, damit er es aus dem Marktplatz installieren kann.Stand
GET /plugins/:id/config-statusauf Linux-Server und Mac-Server, Eintrag in02-Wire-Protokoll.md— eingereicht, von Alf getestet (2026-10-19)local_mode;IRIS_HOST_MODEfür den Hook auf beiden Servern — eingereicht, von Alf getestet (2026-10-19)publish-plugins.sh: Plugin mit Panel ohneconfig-statuswird abgelehnt — eingereicht, von Alf getestet (2026-10-19)config-status, keininstall_config, tolerantespost_install, Befehl für die lokale Einrichtung (iris-plugins#135) — eingereicht, von Alf getestet (2026-10-19)config-status; im Marktplatz veröffentlichen, das veraltetegpu-hosts 0.2.3entfernen — eingereicht, von Alf getestet (2026-10-19)MarketplaceView,PluginManagementView) bekommt den Knopf mit Farbe und die Rechnerwahl; erst nach Alfs Test am Mac, bleibt im selben Issue offenconfig-status(heartmula, whisper, qwen-tts-linux, comfyui-bridge in ihren Umstellungs-Issues; die anderen in einem Folge-Issue)Verlauf und PRs stehen in den Kommentaren. Verwandt: iris/iris-plugins#115, iris/iris-plugins#135.
Stand des Baus (2026-10-19): gebaut, noch nicht eingereicht — wartet auf Alfs Test
Nichts davon ist in
main; die Änderungen liegen ungeshippt in den Arbeitsverzeichnissen (Iris, Linux-Server, Plugins, Wurzel). Veröffentlicht sind die zwei Plugins, damit Alf sie aus dem Marktplatz installieren kann (Registry: iris-server-hosts 0.4.0, Marker 1.19.0;gpu-hostsist entfernt).Linux-Server —
config_status.py(reine Auslegung der Antwort),GET /plugins/:id/config-status,GET /marketplace/api/plugins/:id/config-status(Lese-Token der Seite),local_mode_applies/host_mode/gateinhosts_targets.py(Sperre blockiert Plugins mit lokalem Weg nie, Picker führtselfbeilocal_mode),host_modeim Ergebnis voninstall, Katalogfeldconfigurable.panel_api-Ausführung als_run_panel_commandherausgelöst (beide Routen nutzen sie).Mac-App — dieselben Routen und Regeln (
IrisConfigStatus,IrisHostCapabilities.localModeApplies/hostMode,IrisHostProbe.gate,PluginManifest.localMode),IRIS_HOST_MODEfür denpost_install-Hook,host_modeim Install-Ergebnis, Katalogfeldconfigurable, Bridge-Aktionconfigure(öffnet das Konfigurationsfenster; beihost_mode == "pending"nach der Installation automatisch), gefärbter Knopf „Konfigurieren“ in Einstellungen → Plugins (lokal und Remote) mit sichtbarem Text bei Gelb/Rot.Marktplatz-Seite (geteilt,
check-marketplace-page-syncgrün) — Knopf mit Farbe in jeder Kachel installierter Plugins mit Panel, parallele Abfrage beim Öffnen, „Neu prüfen“, Zustand nach dem Schließen des Konfigurationsfensters für das betroffene Plugin neu.Plugins —
publish-plugins.shlehnt Plugins mit Konfigurationsfenster ohneconfig-statusab (registry_index.py); iris-server-hosts 0.4.0 mitconfig-status(Grün, sobald ein Rechner eingetragen ist; kein SSH); Marker 1.19.0 (keininstall_config,host_capabilities+local_mode: ["macos"], tolerantespost_installmitIRIS_HOST_MODE,config-status,local-install, Picker mit „Bitte wählen …“ und lokaler Einrichtung).Geprüft: Linux 7 neue Tests (
config_status) + 7 neue intest_hosts_targets/test_plugin_install_gate(jede Datei einzeln grün); Mac-Prüfprogrammscripts/iris-hosts-harnessgrün (17 neue Checks),scripts/test-marketplace-core.sh202 grün;registry_index41 Tests grün (3 neu); iris-server-hosts 89 Tests, Mutationstest 76 von 76; Marker 13 neue Tests; JavaScript von Marktplatz-Seite und Marker-Panel pernode --check.Abweichungen von der Spezifikation (bitte prüfen):
local_modeisttrueoder eine Plattformliste. Marker hat["macos"], weil die lokale Umgebung nur auf dem Mac läuft; auf dem Linux-Server bleibt die Sperre für Marker.hooks_executed: false),IRIS_HOST_MODEgibt es deshalb nur auf dem Mac. Der Linux-Server meldethost_modeim Install-Ergebnis; der Client öffnet daraufhin das Konfigurationsfenster./marketplace/api/plugins/:id/config-status), weil sie nur das Lese-Token hat, nie das Bearer-Token. Dieselbe Antwort wie/plugins/:id/config-status.Nicht verifiziert: Die Mac-Dateien außerhalb des Prüfprogramms (
IrisRemoteServer,PluginManager, Marktplatz-Fenster, Ansichten) sind nicht gebaut (xcodebuildist in diesem Projekt verboten); der erste Xcode-Build kann Fehler melden. Der Linux-Server ist nicht neu deployt, die Routen dort sind nur per Unit-Test geprüft.Offen: iOS nachholen;
config-statusfür heartmula, whisper, qwen-tts-linux, comfyui-bridge (ihre Umstellungs-Issues) und die übrigen Plugins mit Panel (bis dahin Rot); der Remote-Verwaltungsdialog fragt den Zustand nur beim Laden ab (nicht nach dem Schließen des Fensters); Alfs Test, danach Einreichen.iOS nachgezogen (gebaut, noch nicht auf dem iPhone getestet, nicht eingereicht)
Befund (Alf, am iPhone): In der iOS-App zeigt die Marktplatz-Seite den neuen Knopf „Konfigurieren“, ein Klick tut nichts, und nach „Laden“ öffnet sich kein Konfigurationsfenster. Ursache: Die iOS-App bettet dieselbe geteilte Seite ein und hat eine eigene Brücke (
MarketplaceController), die nurinstall,update,remove,update_allkennt;configurewurde verworfen. (Meine frühere Annahme, iOS habe eine eigene native Ansicht, stimmte für die Marktplatz-Kacheln nicht; nativ ist nur die Plugin-Liste.)Geändert (
IrisRemote):configure(öffnet die Konfigurationsseite des Plugins vollbildig über dem Marktplatz, überconfig-webview-url; Rückmeldungopened/error); beihost_mode == "pending"im Install-Ergebnis öffnet sich die Seite gleich nach der Installation; beim Schließen löst die App in der Marktplatz-Seitefocusaus, damit sie den Zustand des betroffenen Plugins neu abfragt.PluginManagementView): Der Knopf „Configure“ ist grün, gelb oder rot, bei Gelb/Rot steht der Text darunter; Abfrage aller Plugins gleichzeitig beim Öffnen und nach dem Schließen einer Konfigurationsseite (PluginStore.fetchConfigStatus).IrisConfigStatus.swiftist eine Kopie der Mac-Quelle (dieselbe Auslegung der Antwort);tools/check-marketplace-page-syncprüft jetzt auch diese Kopie.Geprüft: iOS-Ziel baut (
xcodebuild, ohne Signatur, BUILD SUCCEEDED). Nicht geprüft: das Verhalten auf dem iPhone.Offen: Alfs Test am iPhone (die App muss neu installiert werden); der iOS-Punkt der Checkliste bleibt offen, bis er getestet ist.
PR #86 gemergt: feat(plugins): Zustand der Plugin-Konfiguration (config-status) im Marktplatz, Rechnerwahl bei „Laden“ (#85)
#86
Commits:
PR #17 gemergt: feat(marketplace): Konfigurieren-Knopf mit Zustand, Konfigurationsseite nach „Laden“ (iris/Iris#85)
iris/2ndbrain-ios#17
Commits:
PR #43 gemergt: feat(plugins): config-status, local_mode, host_mode und Marktplatz-Seite mit Konfigurieren-Knopf (iris/Iris#85)
iris/iris-linux-server#43
Commits:
PR #136 gemergt: feat(marker): Rechnerwahl bei „Laden“, config-status, lokale Einrichtung, vereinfachtes Panel; iris-server-hosts config-status; Prüfung beim Veröffentlichen (#135, iris/Iris#85)
iris/iris-plugins#136
Commits:
PR #79 gemergt: docs(wire): config-status, local_mode, host_mode, Aktion configure (iris/Iris#85)
alf/2ndbrain#79
Commits:
Eingereicht (2026-10-19, nach Alfs Tests am Mac und am iPhone)
config-status,local_mode/IRIS_HOST_MODE/host_mode, Marktplatz-Seite (Knopf, Farben), Bridge-Aktionconfigure, gefärbter Knopf in der Plugin-Verwaltung, Prüfprogrammconfigure, Konfigurationsseite nach „Laden“, gefärbter Knopf in der Plugin-Listeconfig_status.py, beide Routen,local_mode/host_mode/gate, Seiteconfig-statusPflicht)config-status,local_mode,host_mode,configure)Von Alf getestet: Marktplatz-Kacheln (Rot bei fehlendem
config-status, Grün nach dem Update von Hosts), „Laden“ von Marker mit Konfigurationsfenster und Picker, Installation und Aktualisierung des Marker-Servers auf dem GPU-Rechner (nach dem Entfernen der abgelaufenen Registry-Anmeldung aufiris-server), lokale Einrichtung auf dem Mac, iPhone (Konfigurieren-Knopf, Fenster nach „Laden“).Weitere Funde in der Sitzung:
gpu-hostswar nur halb aus der Registry entfernt (Index nicht mitgeführt), jetzt vollständig (Commits8914a26und Nachtrag); die abgelaufenedocker login-Anmeldung aufiris-serverblockierte das anonyme Ziehen öffentlicher Images (Logout, Sicherung~/.docker/config.json.bak-before-logout).Noch offen (Issue bleibt offen):
config-statusfür die übrigen Plugins mit Panel (heartmula, whisper, qwen-tts-linux, comfyui-bridge in ihren Umstellungs-Issues; email, filmcraft, iris-nextcloud-cookbook, iris-web-automation u. a. in einem Folge-Issue): bis dahin Rot „config-status fehlt“.Linux-Server deployt und live geprüft (2026-10-19)
rsyncnachalf@iris-server:~/docker/iris-server/(ohne.env),detect-host-env.sh,docker compose up -d --build(Containeriris-serverneu erzeugt), Sandbox-Container bereinigt.GET /health200.GET /marketplace/api/catalog(Lese-Token)configurablebei den installierten Plugins mit Paneltrue(comfyui-bridge, marker, iris-nextcloud-cookbook, qwen-tts-linux, iris-web-automation, whisper), sonstfalseGET /plugins/{marker,whisper,comfyui-bridge,freecad-bridge}/config-status{"state":"error","message":"config-status fehlt: Das Plugin führt den Befehl nicht in seiner panel_api."}— wie vorgesehen, die installierten Fassungen sind alt (marker 1.17.2 usw.)GET /plugins/iris-gui/config-status(kein Panel), unbekanntes PluginGET /marketplace/api/plugins/marker/config-status(Lese-Token)GET /hosts/targets,?needs=gpu&needs=docker,?needs=rechnerselfzuerst;needs=rechnerleerNicht live geprüft: ein Plugin mit funktionierendem
config-statusauf dem Linux-Server (dort ist keines in der neuen Fassung installiert; Grün/Gelb ist per Unit-Test und auf dem Mac gesehen), und „Laden“ gegen den Linux-Server mitlocal_mode/host_mode(Unit-Tests).Fund, nicht behoben: In
~/docker/iris-server/data/iris-app-support/iris_server_hosts.jsonstehen zwei Test-Einträge vom 2026-10-18 23:02 (gpu1„Kiste“alf@box-gpu.test.local,cloud1„Wolke“alf@box-cloud.test.local), vermutlich Reste eines früheren Live-Tests. Sie erscheinen im Picker und zählen mit ihren gespeicherten Fähigkeiten für die Installations-Sperre mit (der Rechner ist nicht erreichbar, behält aber die gespeicherten Fähigkeiten). Entfernen steht aus (Alfs Entscheidung).PR #142 gemergt: docs(readme): Rechner, Rechnerwahl und Konfigurations-Zustand (host_capabilities, local_mode, config-status, Resolver, host_mode) (iris/Iris#85)
iris/iris-plugins#142
Commits:
PR #89 gemergt: fix(plugins): Zustand der Plugin-Konfiguration nach dem Schließen des Konfigurationsfensters neu abfragen (iris/Iris#85)
#89
Commits:
PR #89 gemergt (main =
8baa196). Nutzertest bestanden: Im Remote-Dialog wechselt der Knopf „Konfigurieren“ nach dem Schließen des Konfigurationsfensters die Farbe, ohne neu zu laden.RemotePluginManagementView) fragteconfig-statusnur inload()ab. Die lokale Verwaltung hörte auf „App wird wieder aktiv“; das Konfigurationsfenster ist aber ein Fenster von Iris selbst, beim Schließen wird die App nicht neu aktiv, nur das Listenfenster wieder Hauptfenster.NSWindow.didBecomeKeyNotification). Remote: alle Plugins gleichzeitig, höchstens alle 2 Sekunden, nicht während des Ladens.config-statusder vier nicht veröffentlichten Plugins).Abgeschlossen
Zustandsanzeige (config-status) und Rechnerwahl im Marktplatz sind umgesetzt (PR #89 u. a.) und vom Nutzer getestet („Nutzertest bestanden“). Die Umstellung der einzelnen Plugins laufen als eigene Issues weiter (iris-plugins #135, #138, #140, #143, #145, #147, Label
status/zu-testen).Geschlossen auf Alfs Wort (2026-10-21).