Plugins mit Seitenpanel: gemeinsames Panel-Kit (panel_kit.py/.js) statt Eigenbau — comfyui-workflows, iris-solidcraft, iris-gamebox umstellen #278
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-plugins#278
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?
Ziel
Plugins mit Seitenpanel-Reiter (
side_panel, iris/Iris#169) sprechen über einen genormten Baukasten mit dem Chat, statt jedes für sich dieselbe Technik nachzubauen. Die drei Bestandsplugins comfyui-workflows, iris-solidcraft und iris-gamebox werden darauf umgestellt; neue Plugins nehmen das Kit als Vorlage.Befund (2026-10-26)
Der Wire-Vertrag steht (
Entwicklerdokumentation/02-Wire-Protokoll.md, Abschnitt „Plugin-Reiter im Seitenpanel“):side_panel,chat_idin URL und Body, Pflichtbefehlstatus→{ok, chat_id, summary, detail}, Marker[PLUGIN-PANEL: …]. Es fehlt die Plugin-Seite darunter. Jedes der drei Plugins baut sie selbst:panel_api.pymit eigenem Dispatch, JSON-Ausgabe, Fehlerbehandlung,chat_id-Prüfung (solidcraft mit eigener_SAFE_CHAT_ID),summary-Kürzung (solidcraft mit eigenem Soft-Limit 240).selection.json,select/selection): in comfyui-workflows erfunden, in gamebox kopiert, in solidcraft nicht vorhanden.cfg_token/chat_idaus der URL, hängtchat_idan jeden Aufruf und polltstatusselbst.die()im Skript erreicht das Panel nur als Exit-Zahl ("2"); in gamebox war das ein echter Bug (find_row).Umfang
panel_kit.py(Skript-Seite): Befehls-Dispatch, Fehler immer als{ok:false, error}(nie nur Exit-Code),chat_idlesen und validieren,status-Helfer (chat_idzurückgeben,summaryauf eine Zeile und ≤ 300 Zeichen kappen), Auswahl lesen/schreiben (selection.json,select/selection,selectantwortet wiestatus). Ein Plugin liefert nur seine eigenen Befehle und einesummary-Funktion.panel_kit.js(Seiten-Seite):cfg_token/chat_idaus der URL,panel_api-Aufruf mit angehängtemchat_id,status-Polling (~5 s) mit Abbruch bei geschlossenem Reiter, einheitliche Fehleranzeige,chat_id-Abweichung als Fehler.plugins/_shared/iris-panel-kit/, jedesbuild-irisplugin.shkopiertpanel_kit.pynebenpanel_api.pyundpanel_kit.jsneben die Seite ins Paket (Muster_shared/iris-nextcloud-client) — kein Drift, kein Abgleich-Tool.publish-plugins.sh(registry_index.py) lehnt ein Plugin mitside_panelohnestatusinpanel_api.commandsab.plugins/CLAUDE.md: ein kurzer Absatz — werside_panelbaut, nimmt das Kit;statusundselect/selectionsind Pflicht; Einzelheiten stehen im Wire-Protokoll (nicht wiederholen, sonst steht es an zwei Stellen). Gleichzeitigplugins/README.mdund07-Plugin-System.mdauf das Kit verweisen lassen.plugins/README.mderweitern: neues Kapitel „Seitenpanel und Chat“ aus Sicht des Plugin-Autors — wie Reiter, Seite,panel_api, Agent und Chat zusammenspielen, mit Mermaid-Diagrammen (mindestens: Sequenzdiagramm eines Lebenszyklus — Reiter öffnen,status-Polling, Nutzer wählt, Nachricht mit[PLUGIN-PANEL: …], Agent holt Detail per Skill; Komponentenbild Client ↔ Server ↔panel_api↔ Seite ↔ Agent; Zustände des Reiters bei Fehler/chat_id-Abweichung/Zeitlimit) und ein Mini-Beispiel mit dem Kit. Die Protokolldetails (Routen, Felder, Zeitlimits) bleiben allein im Wire-Protokoll; die README erklärt das Zusammenspiel und verlinkt dorthin, wiederholt die Tabellen nicht. Diagramme mit dem Skillmermaid-validateprüfen. Inhaltsverzeichnis und Verweise aus07-Plugin-System.mdnachziehen.Offen
select-Semantik für alle Pflicht oder nur Muster? Bei solidcraft ist „was hat der Nutzer angeschaut“ ein anderes Ding (Körper/Baugruppe im 3D-Viewer) als bei Workflows und Spielen — vor der Entscheidungviewer.htmlund denstatus-Stand lesen.panel_apiläuft auf beiden; Kit nur Standardbibliothek halten.)Vorgehen
Umgesetzt in PR #280 (gamebox 0.9.1, solidcraft 0.3.3, comfyui-workflows 3.4.1, nicht veröffentlicht,
status/zu-testen). Offen: Test in der echten App,iris-plugin-dev(Thema + Gerüst-Option), Verweise im Wurzel-Repo. Ursprünglicher Plan: Kit zuerst mit Tests (tests/test_panel_api.pyin solidcraft undtest_selection_and_panel.pyin comfyui-workflows sind die Vorlagen), dann die drei Umstellungen. Stand-Kommentar am PR mit Geprüft/Nicht geprüft (Panel in der echten App).PR #280 gemergt: feat(plugins): geteiltes Panel-Kit für Seitenpanel-Reiter, comfyui-workflows/solidcraft/gamebox umgestellt, README Kapitel 22 (#278)
#280
Commits:
Stand (PR zu #278)
Befund. Der Wire-Vertrag des Seitenpanel-Reiters (iris/Iris#169) stand, die Plugin-Seite darunter bauten comfyui-workflows, iris-solidcraft und iris-gamebox je selbst (Dispatch, Fehlerbehandlung,
chat_id-Prüfung,summary-Kürzung,selection.json,fetchmitchat_id).Geändert.
_shared/iris-panel-kit/—panel_kit.py(run,status_reply,Selection,safe_chat_id,one_line,out,fail; Fehler als{ok:false, error}) undpanel_kit.js(PanelKit.create→api,call,poll). Abweichung vom Issue: keine Kopie im Repo samt Abgleich-Tool, sondern Verteilung beim Bauen (build-irisplugin.shkopiert beide Dateien ins Paket, Muster_shared/iris-nextcloud-client) — kein Drift möglich. Der Python-Teil hat im Repo einensys.path-Fallback.panel_api.py, Seiten, Build-Skripte): gamebox 0.9.1, solidcraft 0.3.3, comfyui-workflows 3.4.1 — Umbau ohne Funktionsänderung, nur Fehlertexte erreichen den Reiter jetzt als Text. gamebox' und comfyui' Auswahl liegen aufpk.Selection(atomares Schreiben, Dateiformat unverändert). solidcraft: die Seiten nutzenpanel.call(kein Wurf bei{ok:false}, wie bisher).registry_index.py:side_panelohnestatusinpanel_api.commandswird beim Veröffentlichen abgelehnt (+2 Tests).README.mdKapitel 22 „Seitenpanel und Chat“ mit drei Mermaid-Diagrammen (Komponenten, Sequenz, Zustände derstatus-Auslegung nachPluginSidePanelCore.swift), Baukasten-Beispiel, Checkliste;CLAUDE.mdein Absatz; Kit-README.Geprüft. Kit: 28 Python-Tests + 10 Node-Tests grün. comfyui-workflows 12 Tests (einer an das neue Fehlerformat angepasst, einer neu), solidcraft 44 Tests, registry-tools 62 Tests grün.
node --checkauf allen vier Seitenskripten. Alle drei Pakete gebaut, entpackt undpanel_api.py statusaus dem Paket (ohne Repo-Fallback) gegen eine Fake-Heimat ausgeführt.publish-plugins.sh … --dry-runfür alle drei grün (inkl. Privacy-Scan). Mermaid-Diagramme mitmermaid-validategeprüft (3 gültig).Nicht geprüft. Die Seiten in der echten Iris-App (Reiter öffnen, Auswahl treffen, Marker beim Senden) — insbesondere dass
<script src="panel_kit.js">neben der HTML-Seite vom Mac- und Linux-Server ausgeliefert wird (Vorbild:iris-claude-sessionslädtmemory-logik.jsso, aber nicht gegen beide Server geprüft).settings.htmlundviewer.htmlvon solidcraft nur per Syntaxcheck. Kein Linux-Server-Lauf.Grenzen / offen.
iris-plugin-dev: Thema „seitenpanel“ inDOKU_THEMENund eine Gerüst-Option für neue Plugins mit Reiter fehlen noch — eigener Schritt.selectbleibt Muster, keine Pflicht: solidcraft hat keinen (Stand = Designs des Chats, geöffnet wird in der App).Entwicklerdokumentation/07-Plugin-System.mdund Wire-Protokoll auf Kapitel 22 gehen als separaterdocs:-PR ins Wurzel-Repo.PR #113 gemergt: docs(plugins): Seitenpanel-Reiter verweist auf geteiltes Panel-Kit und README-Kapitel 22 (iris/iris-plugins#278)
alf/2ndbrain#113
Commits:
Geschlossen auf ausdrücklichen Wunsch von Alf; das Label status/zu-testen wurde dabei entfernt. Getestet hat Alf nach eigener Aussage die Gamebox auf beiden Maschinen; die übrigen betroffenen Plugins sind darin nicht eigens genannt.