iris-gamebox 0.8.0: Gamebox-Seite als dritter Reiter im Seitenpanel — gemeinsame Spielauswahl, status, select (iris/Iris#169) #265
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#265
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
iris-gamebox 0.8.0: Die Gamebox-Seite wird dritter Reiter im rechten Seitenpanel (iris/Iris#169) —
dieselbe Spiele-Suche wie das „Gamebox"-Fenster, aber chat-gebunden: Hermes sieht dasselbe Spiel,
das der Nutzer gerade anschaut, und baut genau das. Nach dem Muster von comfyui-workflows 3.4.0 (#257).
Warum
Die Gamebox öffnet heute ein eigenes Fenster (
usage_web_view_path). Wer im Chat „bau mir das"sagt, muss das Spiel erst wieder heraussuchen — der Agent weiß nicht, was der Nutzer sieht. Der
dritte Reiter macht aus Fenster und Chat einen gemeinsamen Stand: Auswahl setzen, Build anstoßen,
Fortschritt sehen — beide Seiten, dieselben Befehle.
Befund (gemessen 2026-10-25)
side_panel,Route
side-panel-webview-url(münztcfg_token, hängtchat_idan die URL), Pflichtbefehlstatus→{ok, chat_id, summary, detail},summary(eine Zeile, Iris kappt 300) als[PLUGIN-PANEL: …]-Prefix beim Senden. Plan:iris/plans/SEITENPANEL-PLUGIN.md, PRs iris#170/#172.web/search.htmlredet ausschließlich übercfg_token+POST /plugins/iris-gamebox/api/<cmd>—kein
irisCall, keinpostMessage. Der Reiter-Vertrag ist fast erfüllt, bevor es ihn gibt(dasselbe Bild wie bei comfyuis
canvas-block.html)..cols(340 px + Detail) stapelt schon beimax-width:820px; das Panel ist 320–900 ptbreit → der Stapel-Branch greift meist, braucht Feinschliff wie comfyuis 560-pt-Branch
(Trefferliste max-Höhe, Detail-Polster, Header-Umbruch).
state.selin search.html) — ohne Server-Auswahl bleibt Hermesder Stand verborgen. comfyuis Antwort:
selection.jsonneben der Registry +select/selection(Issue plugins#248), Seite schreibt,
statusliest, Skill erklärt es.statusfehlt in panel_api (21 Befehle, keiner davon). Achtung:fresh_index()lädt denganzen Index —
exodos.jsonist 12 MB.statusläuft im 5-Sekunden-Polling des Reiters unddarf das nicht pro Aufruf parsen; die
summaryaus billigen Quellen bauen: Quellen(
load_sources), Apps in der Ablage (apps-Logik), laufender Baufortschritt (Jobs-Verzeichnis),Auswahl-Datei — Zahl der Spiele nur aus dem bereits geladenen Pfad (
browselädt ohnehin), sonstweglassen.
iris_min_versionist 2.0.0; der Reiter existiert erst ab 2.0.1 (comfyui-workflows trägt 2.0.1).platforms: ["macos"]→ der iOS-Ast betrifft dieses Plugin nicht.Umsetzung
side_panel: "web/search.html"(dieselbe Datei wieusage_web_view_path, keinzweites HTML — comfyui-Muster),
iris_min_version→ 2.0.1.statusinpanel_api.commands.selection.jsonimApplication-Support-Ordner des Plugins (Bedienzustand, nie im Index), Befehle
select{handle}(leer hebt auf; antwortet wiestatus, damit der Reiter ohne zweite Runde umzeichnet)und Aufnahme der Auswahl in
status.detail; CLIgamebox select --handle <h>/gamebox selectionals Gegenstück für Hermes und Chat (Determinismus-Regel: Skript-Werkzeug, nichtAnleitung). Ungültige/unbekannte Handles ablehnen mit Meldung.
statusnach Vertrag: antwortet immer mit dem gesendetenchat_id;summaryeine Zeile,Auswahl vorn — etwa „Ausgewählt: Return to Zork · 4 Apps in der Ablage · Katalog bereit";
detail: Auswahl + Apps der Ablage + ggf. laufender Build-Job (staatjob), nie der Vollindex.web/search.html:chat_idaus der URL lesen und bei jedempanel_api-Aufruf mitschicken;im Reiter-Modus (Kennung vorhanden) Auswahl nach
select/selectionsetzen und beim Klickzurückschreiben — Fenster-Modus bleibt wie er ist; Reiter-CSS unter 560 px verfeinern;
Build-Knopf behält
build/job(Polling existiert bereits).(
[PLUGIN-PANEL: Retro-Spiele als macOS-App] …-Marker, Stand überstatusmitchat_id,Bauen über
buildoder die CLI, Auswahl überselect/selection); system_prompt.md nur falls nötig.docs/erste-schritte.md; Version 0.8.0,changelogimManifest,
store/changelog.md-Abschnitt; Store-Seite ausstore-page.jsonneu erzeugen(
store_page.py --check). Veröffentlichung erst nach ausdrücklichem Wort.Taktung
Ein Issue, ein PR, Version 0.8.0: Reiter ohne gemeinsame Auswahl wäre ein zweites Suchfenster im
Chat — Auswahl,
statusund Seite gehören zusammen. Der Reiter-Bau-Flow (Build aus dem Reiter)nutzt nur vorhandene Befehle und ist kein eigener Schritt.
PR #266 gemergt: feat(iris-gamebox): Gamebox-Seite als dritter Reiter im Seitenpanel — gemeinsame Auswahl, status/select/selection (0.8.0, #265)
#266
Commits:
Stand — Gamebox als dritter Reiter im Seitenpanel (0.8.0, #265)
Befund
web/search.htmlredete schon nur übercfg_token+ panel_api — der Reiter-Vertrag (iris/Iris#169)war fast erfüllt, bevor er angemeldet wurde. Lücken: keine
status-Befehl, die Auswahl (state.sel)lebte nur im JS,
iris_min_version2.0.0. Beim Testen des neuenselectfiel ein alter Bug:find_rowmeldete viadie(), panel_api las davon nur die Exit-Zahl —detail/buildantwortetenmit unbekanntem Handle seit 0.5.0
"error": "2".Geändert
side_panel: "web/search.html"(dieselbe Datei wieusage_web_view_path,comfyui-Muster),
iris_min_version2.0.1,select/selection/statusin panel_api, Version 0.8.0.selection.jsonim Application Support (Bedienzustand neben config.json,überlebt Index-Neubau). CLI
select HANDLE/--clear/selection; panel_apiselect(antwortetwie
status→ Reiter zeichnet ohne zweite Runde um) undselection; Segment-Wechsel löscht dieAuswahl auch serverseitig.
statusohne Vollindex (Polling alle 5 s, load_index ≈ 18 MB):summary(Auswahl vorn) ausindex-counts.json(neu, beim Index-Lauf mitgeschrieben;browsezieht sie bei Bestand vor 0.8.0nach), Apps über
installed_apps(markers_only=True), Baufortschritt aus recent.json + Job-Datei;detail: Auswahl, Build, Apps, Quellen, Ablage.web/search.html:chat_idaus der URL in jedem panel_api-Body;select()meldet die Auswahlans Server-Gegenstück;
restoreSelection()übernimmt beim Start Hermes' Auswahl; Reiter-CSS <560 px(Liste max 38 vh, Sidebar löst Sticky).
find_rowwirftValueErrormit Text stattdie(); CLI fängt zentral inmain()(
✗, Exit 2); panel_api-Fangstellen umgestellt — Fehlermeldung ist wieder lesbar.changelog,store/changelog.md0.8.0, Store-Seite neu erzeugt; PLAN.md + Daily Log.Geprüft
status= „Ausgewählt: Beyond Zork … · 10896 Spiele imKatalog · 0 Apps in der Ablage", Auswahl-/Build-Felder gefüllt; 5× status 0,3 s vs. 5× browse
(Vollindex) 1,2 s — Polling ist billig.
Regression
systems/detail/appsunverändert;node --check,py_compile,store_page.py --check,privacy_scangrün.Nicht geprüft
chat_id-Abweichungs-Fehler,restoreSelectiongegen einen echten Hermes-Lauf, Layout am echten Panel →status/zu-testen.Grenzen
summarynennt ohneindex-counts.json(Bestand vor 0.8.0, noch kein browse/Index-Lauf) keineZeilenzahl — die Datei entsteht beim ersten Index- oder browse-Lauf.
Veröffentlicht — 0.8.0 in der Registry (2026-10-25)
publish-plugins.sh iris-gamebox(Dry-Run vorher, Registry-Klon vorher frisch gezogen):Registry-Commit
78f4768, Paketiris-gamebox-0.8.0.irisplugin(65 KB), Anleitung (erste Schrittemit Reiter-Abschnitt, Befehle mit
select/selection), Store-Changelog-Sektion 0.8.0 — 0.7.0behält seine Sektion. Im veröffentlichten Paket verifiziert:
version 0.8.0,iris_min_version 2.0.1,side_panel: web/search.html.Was Nutzer sehen: Iris ab 2.0.1 bekommt 0.8.0 als Update; ältere Iris-Versionen nicht
(
iris_min_version). Der Reiter erreicht damit die Betatester.Offen (deshalb
status/zu-testen): Reiter in der echten Iris-App (Erscheinen, Polling, Layout amechten Panel), „davon eine App" gegen einen echten Hermes-Lauf,
restoreSelectionüber einenChatwechsel hinweg.
Geschlossen auf ausdrücklichen Wunsch von Alf; das Label status/zu-testen wurde dabei entfernt. Stand: siehe die Kommentare oben (veröffentlicht bis iris-gamebox 0.10.5).