iris-gamebox: Konsolen-, Arkade- und DOS-Spiele aus den Bibliotheken als macOS-App #235

Closed
opened 2026-10-23 16:31:00 +00:00 by alf · 12 comments
Owner

Ziel

Neues Plugin iris-gamebox (iris-dosgame bleibt erhalten, sein Code dient als Referenz): in den vorhandenen Bibliotheken ein Spiel suchen und es als eigenständige, weitergebare macOS-App bauen.

Bibliotheken (Quellen-Registry, erweiterbar)

  • eXoDOS /Volumes/data/volume/exodos/eXoDOS: Katalog ist Data/Platforms/MS-DOS.xml (7634 Spiele: Titel, Entwickler, Publisher, Jahr, Notizen bei 7618, ManualPath bei 4005, fertige ApplicationPath/ConfigurationPath), Handbücher unter Manuals/MS-DOS/, Bilder unter Images/MS-DOS/ (47 Kategorien, Icon-Vorlage). BigBox.exe ist nur das Frontend — keine RE-Analyse nötig, die Daten stehen offen in XML.
  • RetroDeck /Volumes/data/volume/retrodeck: befüllt laut Zählung arcade 573, psx 505, amiga 364, nes 246, snes 199, c64 157, zxspectrum 135, gba 101, segacd 51, n64 42, gamegear 30, gb/gbc/3do je 25, psp 23, sega32x 16. BIOS unter bios/ (260 Dateien, vollständig: 3do_arcade_saot.bin, SCPH1001.BIN, neogeo.zip, bios_CD_E/J/U.bin, Kickstarts …).
  • Dritte Quelle (Windows-Spiele) soll später ohne Umbau hinzukommen: Quellen-Registry + Engine-Registry getrennt halten.

Engines

ScummVM, DOSBox-X (aus iris-dosgame übernommen) und neu RetroArch + ein Libretro-Core pro System.

Verifiziert (2026-10-23, gemessen, nicht angenommen)

  • RetroArch Universal (x86_64 + arm64), notarisiert (TeamID UK699V5ZS8): stable/1.22.2/apple/osx/universal/RetroArch_Metal.dmg (232 MB). Der Homebrew-Cask ist x86_64-only → Rosetta, für diesen Mac unbrauchbar.
  • Cores: nightly/apple/osx/{arm64,x86_64}/latest/<core>_libretro.dylib.zip; beide Architekturen mit lipo zu Universal zusammenfügen (opera 1,3 MB, snes9x 5,9 MB, mesen 7,0 MB, fbneo 59 MB, mame2003_plus 71 MB).
  • 3DO/Opera mit Flashback.chd + BIOS: Direktstart ohne Menü, nativ arm64 — opera_3do_process_frame in der CPU-Sample, kein Menü. Bewährtes Rezept (Launcher + cfg) liegt im Export-Chat 2026-10-23.
  • Arkade: die 573 Sets sind Alter-MAME-Namensgebung von 1996. mame2003-plus lädt den Core, lädt 1942.zip aber nicht („Inhalt konnte nicht geladen werden“). fbneo startet 1942 und galaga → fbneo ist der Arkade-Kandidat; Rest per Stichprobe prüfen.

Entscheidungen (mit Nutzer geklärt)

  • App-Typ: nur standalone — ROM + BIOS + Engine im Bundle, weitergebbar per Doppelklick.
  • BIOS ins Bundle (Quelle: retrodeck/bios/), Hinweis im Stand, dass BIOS/ROM nicht weiterverteilt werden sollen.
  • Systeme Stufe 1: alle befüllten RetroDeck-Systeme + DOS.
  • Name: iris-gamebox.
  • eXoDOS-„Installation“ ist laut util/install.bat nur das Entpacken des Spiel-ZIPs nach eXoDOS/<SpielDir>/ — kein DOS-Installer. Die .bat in !dos/ ist der BigBox-Umschlag (startet util/launch.bat, interaktiv); für die App zählt der [autoexec]-Startbefehl aus !dos/<Spiel>/dosbox.conf, wie iris-dosgame es bereits übernimmt.
## Ziel Neues Plugin `iris-gamebox` (`iris-dosgame` bleibt erhalten, sein Code dient als Referenz): in den vorhandenen Bibliotheken ein Spiel suchen und es als eigenständige, weitergebare macOS-App bauen. ## Bibliotheken (Quellen-Registry, erweiterbar) - **eXoDOS** `/Volumes/data/volume/exodos/eXoDOS`: Katalog ist `Data/Platforms/MS-DOS.xml` (7634 Spiele: Titel, Entwickler, Publisher, Jahr, Notizen bei 7618, `ManualPath` bei 4005, fertige `ApplicationPath`/`ConfigurationPath`), Handbücher unter `Manuals/MS-DOS/`, Bilder unter `Images/MS-DOS/` (47 Kategorien, Icon-Vorlage). BigBox.exe ist nur das Frontend — keine RE-Analyse nötig, die Daten stehen offen in XML. - **RetroDeck** `/Volumes/data/volume/retrodeck`: befüllt laut Zählung arcade 573, psx 505, amiga 364, nes 246, snes 199, c64 157, zxspectrum 135, gba 101, segacd 51, n64 42, gamegear 30, gb/gbc/3do je 25, psp 23, sega32x 16. BIOS unter `bios/` (260 Dateien, vollständig: `3do_arcade_saot.bin`, `SCPH1001.BIN`, `neogeo.zip`, `bios_CD_E/J/U.bin`, Kickstarts …). - Dritte Quelle (Windows-Spiele) soll später ohne Umbau hinzukommen: Quellen-Registry + Engine-Registry getrennt halten. ## Engines ScummVM, DOSBox-X (aus `iris-dosgame` übernommen) und neu **RetroArch + ein Libretro-Core pro System**. ## Verifiziert (2026-10-23, gemessen, nicht angenommen) - RetroArch **Universal** (x86_64 + arm64), notarisiert (TeamID UK699V5ZS8): `stable/1.22.2/apple/osx/universal/RetroArch_Metal.dmg` (232 MB). Der Homebrew-Cask ist x86_64-only → Rosetta, für diesen Mac unbrauchbar. - Cores: `nightly/apple/osx/{arm64,x86_64}/latest/<core>_libretro.dylib.zip`; beide Architekturen mit `lipo` zu Universal zusammenfügen (opera 1,3 MB, snes9x 5,9 MB, mesen 7,0 MB, fbneo 59 MB, mame2003_plus 71 MB). - **3DO/Opera mit Flashback.chd + BIOS: Direktstart ohne Menü, nativ arm64** — `opera_3do_process_frame` in der CPU-Sample, kein Menü. Bewährtes Rezept (Launcher + cfg) liegt im Export-Chat 2026-10-23. - **Arkade**: die 573 Sets sind Alter-MAME-Namensgebung von 1996. `mame2003-plus` lädt den Core, lädt `1942.zip` aber nicht („Inhalt konnte nicht geladen werden“). **`fbneo` startet `1942` und `galaga`** → fbneo ist der Arkade-Kandidat; Rest per Stichprobe prüfen. ## Entscheidungen (mit Nutzer geklärt) - App-Typ: **nur standalone** — ROM + BIOS + Engine im Bundle, weitergebbar per Doppelklick. - **BIOS ins Bundle** (Quelle: `retrodeck/bios/`), Hinweis im Stand, dass BIOS/ROM nicht weiterverteilt werden sollen. - Systeme Stufe 1: alle befüllten RetroDeck-Systeme + DOS. - Name: `iris-gamebox`. - eXoDOS-„Installation“ ist laut `util/install.bat` **nur das Entpacken des Spiel-ZIPs** nach `eXoDOS/<SpielDir>/` — kein DOS-Installer. Die `.bat` in `!dos/` ist der BigBox-Umschlag (startet `util/launch.bat`, interaktiv); für die App zählt der `[autoexec]`-Startbefehl aus `!dos/<Spiel>/dosbox.conf`, wie `iris-dosgame` es bereits übernimmt.
Author
Owner

PR #236 gemergt: feat(iris-gamebox): Bibliotheken durchsuchen und DOS-, Konsolen- und Arkadespiele als macOS-Apps bauen (#235)
#236

Commits:

  • feat(iris-gamebox): Bibliotheken durchsuchen und DOS-, Konsolen- und Arkadespiele als macOS-Apps bauen (#235)

Stand iris-gamebox 0.1.0 (Issue #235)

Befund

Neues Plugin iris-gamebox (iris-dosgame bleibt Referenz, unverändert): sucht Spiele über beide
Bibliotheken und baut eigenständige macOS-Apps. BigBox.exe brauchte keine RE — die Metadaten stehen
offen in Data/Platforms/MS-DOS.xml (Titel, Entwickler, Jahr, Notizen, ManualPath, ApplicationPath),
Handbücher in Manuals/, Box-Art in Images/ (5129), RetroDeck-Covers in ES-DE/downloaded_media/.

Geändert

  • gamebox_cli.py: sources (Quellen-Registry) / index (XML+ROM-Catalog, 9370 Spiele in 18 s) /
    search (fuzzy, normalisierte Titel) / info / bundle / cores / install / verify / doctor.
    Systeme-Tabelle (16 Systeme: Core, Endungen, BIOS-Muster) und Quellen-Registry sind getrennt —
    dritte Quelle (Windows) später ohne Umbau.
  • RetroArch-Weg: Universal-DMG 1.22.2 gepinnt (SHA-256), Cores vom Buildbot nightly (arm64+x86_64 →
    lipo universal), Launcher mit absoluten Paden, arch -arm64, Direktstart ohne Menü,
    load_dummy_on_core_shutdown=false. BIOS aus retrodeck/bios ins Bundle (Cap pro Datei).
  • DOS-Pfad aus iris-dosgame übernommen (ScummVM-Erkennung + Engine-Check, DOSBox-X, eXoDOS-autoexec,
    CD-Abbilder, --keys). Icons: Box-Art/Cover → icns.
  • SKILL.md, system_prompt.md, post_install.sh (Engines), docs/ (4 Seiten), build-irisplugin.sh, PLAN.md.

Geprüft (gemessen)

  • Index + Suche über beide Quellen („flashback“: 3DO/SegaCD/DOS korrekt; „contra“: Arkade/DOS).
  • 13 Cores gegen echte ROMs per Direktstart + CPU-Sample: mesen, snes9x, gambatte, mgba, mupen,
    swanstation, opera, puae, vice_x64, fuse, picodrive (SegaCD+32X), ppsspp, fbneo.
    Arkade-Stichprobe: 10 verteilte fbneo-Sets, alle gestartet.
  • 5 Bundles gebaut und verify grün: contra (Arkade 401 M), Flashback (3DO 449 M, BIOS),
    40 Winks (PSX 672 M, 5 BIOS), Mad TV (DOSBox-X+CD 174 M), 3 Skulls (ScummVM 634 M).
  • Build 24 KB; Skill-Name kollisionsfrei; installierte Mac-Kopie identisch zum Repo.

Nicht geprüft

  • GUI-Installation/Bedienung im Alltag, Linux-Server (Plugin ist mac-only), Ton und Spielverlauf pro
    Titel, Savestates, Amiga-Kickstart-Auswahl, Arkade-Titel jenseits der Stichprobe, Weitergabe auf
    fremden Mac (Gatekeeper-Rechtsklick nur dokumentiert).

Grenzen

  • Beim Bauen müssen Quellen gemountet sein (ROM/BIOS-Kopie). Arkade-BIOS gekappt auf 20 MB/Datei.
  • Windows-Quelle noch nicht angebunden. Store-Material/Veröffentlichung fehlen bewusst (braucht Wort).
PR #236 gemergt: feat(iris-gamebox): Bibliotheken durchsuchen und DOS-, Konsolen- und Arkadespiele als macOS-Apps bauen (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/236 Commits: - feat(iris-gamebox): Bibliotheken durchsuchen und DOS-, Konsolen- und Arkadespiele als macOS-Apps bauen (#235) --- # Stand iris-gamebox 0.1.0 (Issue #235) ## Befund Neues Plugin `iris-gamebox` (iris-dosgame bleibt Referenz, unverändert): sucht Spiele über beide Bibliotheken und baut eigenständige macOS-Apps. BigBox.exe brauchte keine RE — die Metadaten stehen offen in `Data/Platforms/MS-DOS.xml` (Titel, Entwickler, Jahr, Notizen, ManualPath, ApplicationPath), Handbücher in `Manuals/`, Box-Art in `Images/` (5129), RetroDeck-Covers in `ES-DE/downloaded_media/`. ## Geändert - `gamebox_cli.py`: sources (Quellen-Registry) / index (XML+ROM-Catalog, 9370 Spiele in 18 s) / search (fuzzy, normalisierte Titel) / info / bundle / cores / install / verify / doctor. Systeme-Tabelle (16 Systeme: Core, Endungen, BIOS-Muster) und Quellen-Registry sind getrennt — dritte Quelle (Windows) später ohne Umbau. - RetroArch-Weg: Universal-DMG 1.22.2 gepinnt (SHA-256), Cores vom Buildbot nightly (arm64+x86_64 → lipo universal), Launcher mit absoluten Paden, `arch -arm64`, Direktstart ohne Menü, `load_dummy_on_core_shutdown=false`. BIOS aus retrodeck/bios ins Bundle (Cap pro Datei). - DOS-Pfad aus iris-dosgame übernommen (ScummVM-Erkennung + Engine-Check, DOSBox-X, eXoDOS-autoexec, CD-Abbilder, --keys). Icons: Box-Art/Cover → icns. - SKILL.md, system_prompt.md, post_install.sh (Engines), docs/ (4 Seiten), build-irisplugin.sh, PLAN.md. ## Geprüft (gemessen) - Index + Suche über beide Quellen („flashback“: 3DO/SegaCD/DOS korrekt; „contra“: Arkade/DOS). - 13 Cores gegen echte ROMs per Direktstart + CPU-Sample: mesen, snes9x, gambatte, mgba, mupen, swanstation, opera, puae, vice_x64, fuse, picodrive (SegaCD+32X), ppsspp, fbneo. Arkade-Stichprobe: 10 verteilte fbneo-Sets, alle gestartet. - 5 Bundles gebaut und `verify` grün: contra (Arkade 401 M), Flashback (3DO 449 M, BIOS), 40 Winks (PSX 672 M, 5 BIOS), Mad TV (DOSBox-X+CD 174 M), 3 Skulls (ScummVM 634 M). - Build 24 KB; Skill-Name kollisionsfrei; installierte Mac-Kopie identisch zum Repo. ## Nicht geprüft - GUI-Installation/Bedienung im Alltag, Linux-Server (Plugin ist mac-only), Ton und Spielverlauf pro Titel, Savestates, Amiga-Kickstart-Auswahl, Arkade-Titel jenseits der Stichprobe, Weitergabe auf fremden Mac (Gatekeeper-Rechtsklick nur dokumentiert). ## Grenzen - Beim Bauen müssen Quellen gemountet sein (ROM/BIOS-Kopie). Arkade-BIOS gekappt auf 20 MB/Datei. - Windows-Quelle noch nicht angebunden. Store-Material/Veröffentlichung fehlen bewusst (braucht Wort).
Author
Owner

Veröffentlicht: 0.1.1

Auf Alfs Wort veröffentlicht (publish-plugins.sh, Registry-Commit 8cf4fbc):

  • Paket iris-gamebox-0.1.1.irisplugin (24 KB), Index-Eintrag mit changelog
  • Store-Material: store-page.json → Hero-Seite + Gamepad-Icon, description.md, changelog.md
  • Anleitung (vier user_docs-Seiten) als HTML unter store/iris-gamebox/anleitung/
  • Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund

Geändert gegenüber 0.1.0

Nur Manifest/Store: Version 0.1.1, changelog-Feld, store/-Material, .include-Freigabe. Der Code ist identisch zum Stand des PR #236.

Geprüft

Dry-Run und Veröffentlichung grün; Indexeintrag, Paket und Store-Dateien im Registry-Repo bestätigt (8cf4fbc). Die auf dem Mac installierte Drop-Zone-Kopie 0.1.0 bezieht ihr Update jetzt regulär aus der Registry.

Nicht geprüft

Darstellung der Store-Seite in der App; Update-Pfad bei Geräten, die 0.1.0 nie hatten (erstveröffentlichung).

## Veröffentlicht: 0.1.1 Auf Alfs Wort veröffentlicht (`publish-plugins.sh`, Registry-Commit `8cf4fbc`): - Paket `iris-gamebox-0.1.1.irisplugin` (24 KB), Index-Eintrag mit changelog - Store-Material: `store-page.json` → Hero-Seite + Gamepad-Icon, `description.md`, `changelog.md` - Anleitung (vier `user_docs`-Seiten) als HTML unter `store/iris-gamebox/anleitung/` - Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund ### Geändert gegenüber 0.1.0 Nur Manifest/Store: Version 0.1.1, `changelog`-Feld, `store/`-Material, `.include`-Freigabe. Der Code ist identisch zum Stand des PR #236. ### Geprüft Dry-Run und Veröffentlichung grün; Indexeintrag, Paket und Store-Dateien im Registry-Repo bestätigt (`8cf4fbc`). Die auf dem Mac installierte Drop-Zone-Kopie 0.1.0 bezieht ihr Update jetzt regulär aus der Registry. ### Nicht geprüft Darstellung der Store-Seite in der App; Update-Pfad bei Geräten, die 0.1.0 nie hatten (erstveröffentlichung).
Author
Owner

PR #237 gemergt: chore(iris-gamebox): Store-Material, changelog und .include — Veröffentlichung 0.1.1 (#235)
#237

Commits:

  • chore(iris-gamebox): Store-Material, changelog und .include — Veröffentlichung 0.1.1 (#235)
PR #237 gemergt: chore(iris-gamebox): Store-Material, changelog und .include — Veröffentlichung 0.1.1 (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/237 Commits: - chore(iris-gamebox): Store-Material, changelog und .include — Veröffentlichung 0.1.1 (#235)
Author
Owner

PR #238 gemergt: feat(iris-gamebox): Spiele-Suche als Anwenden-Seite mit Systemwahl, Sortierung und App-Erzeugung (#235)
#238

Commits:

  • feat(iris-gamebox): Spiele-Suche als Anwenden-Seite mit Systemwahl, Sortierung und App-Erzeugung (#235)

Stand iris-gamebox 0.2.0 (Issue #235)

Befund

Alf wollte das Plugin interaktiver: Suche in eigener Oberfläche, Auswahl der Plattform (DOS, Arkade, Amiga,
PSX, PSP …), Sortierung (alphabetisch, nach Größe) und ein Knopf „App erzeugen“. Recherche (iris/Iris#149,
README Kap. 15): Ein Canvas mit eigenen Buttons wäre heute nur über autonome Blöcke sauber möglich
(Mac-only, nur lokaler Chat, kein Referenz-Plugin) — mit Nutzer entschieden: jetzt der Anwenden-View
(Chevron), Canvas als Stufe 2
.

Geändert

  • web/search.html (usage_web_view_path + quick_access_label „Spiele-Suche“): Suchfeld, System-Dropdown
    mit Trefferzahlen, Sortierung Alphabet/Größe/Jahr, Liste mit „mehr laden“, Detailspalte mit App-Name,
    DOS-Menü-Tasten und „App erzeugen“ inkl. Fortschritt; hell/dunkel.
  • panel_api.py (panel_api-Vertrag, Befehle config-status systems browse build job recent sources):
    build startet gamebox_cli.py bundle als Hintergrundprozess (stdout in Logdatei, keine eigene Session —
    TCC), job liest Fortschritt/Endzustand aus dem Log und persistiert ihn.
  • gamebox_cli.py: Index-Feld size (Größen-Sortierung), browse/systems/--json, Filter für
    Browser-Suche verschärft (near-Treffer + klare Tippfehler, Chat-Rangfolge unverändert breit),
    Signatur ohne --deep (eingebettete Engines behalten ihre Signatur), source/checked im Index-Cache.
  • Manifest 0.2.0 + changelog, Build-Skript (web/ + panel_api ins Paket, View-Pfade geprüft), Doku
    (erste-schritte, befehle), SKILL.md-Hinweis auf die Seite, store-page.json/Hero neu erzeugt.

Geprüft (gemessen)

  • browse: 9370 Spiele, 0,14 s aus dem Cache; Sortierung Titel/Größe/Jahr, Systemfilter, Paginierung.
  • Filter: „contra“ 7 Treffer (Contra-Familie), „mad tv“ 2, „zaxxon“ 3, „flashb“ 6 — vorher 210 für „zaxxon“.
  • build → job gegen echte Bibliothek: contra gebaut (460 MB, „fertig“ + App-Pfad), zweiter Bau
    „fehler: existiert schon“; die so gebaute App verify-grün (fbneo, CPU 12 %) — trägt ohne --deep.
  • Kaltpfad: Index weg → browse antwortet sofort mit „wird aufgebaut“, Neubaulauf im Hintergrund, danach Treffer.
  • Build 36 KB, panel_api.py und search.html im Paket, Store-Check grün, JS-Syntax geprüft.

Nicht geprüft

  • Die Seite in der echten Iris-App: Chevron-Eintrag, cfg_token, fetch gegen /plugins/iris-gamebox/api/…
    durch die Iris-Web-View — Backend und HTML nur gegeneinander getestet.
  • Layout in schmalem Fenster; sources-Befehl (in Manifest gelistet, Oberfläche nutzt ihn noch nicht).

Grenzen / offen

  • Veröffentlichung von 0.2.0 braucht erneut dein Wort.
  • Chat-Canvas (autonome Blöcke) als Stufe 2, wie entschieden.
PR #238 gemergt: feat(iris-gamebox): Spiele-Suche als Anwenden-Seite mit Systemwahl, Sortierung und App-Erzeugung (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/238 Commits: - feat(iris-gamebox): Spiele-Suche als Anwenden-Seite mit Systemwahl, Sortierung und App-Erzeugung (#235) --- # Stand iris-gamebox 0.2.0 (Issue #235) ## Befund Alf wollte das Plugin interaktiver: Suche in eigener Oberfläche, Auswahl der Plattform (DOS, Arkade, Amiga, PSX, PSP …), Sortierung (alphabetisch, nach Größe) und ein Knopf „App erzeugen“. Recherche (iris/Iris#149, README Kap. 15): Ein Canvas mit eigenen Buttons wäre heute nur über autonome Blöcke sauber möglich (Mac-only, nur lokaler Chat, kein Referenz-Plugin) — mit Nutzer entschieden: **jetzt der Anwenden-View (Chevron), Canvas als Stufe 2**. ## Geändert - `web/search.html` (`usage_web_view_path` + `quick_access_label` „Spiele-Suche“): Suchfeld, System-Dropdown mit Trefferzahlen, Sortierung Alphabet/Größe/Jahr, Liste mit „mehr laden“, Detailspalte mit App-Name, DOS-Menü-Tasten und „App erzeugen“ inkl. Fortschritt; hell/dunkel. - `panel_api.py` (panel_api-Vertrag, Befehle `config-status systems browse build job recent sources`): `build` startet `gamebox_cli.py bundle` als Hintergrundprozess (stdout in Logdatei, keine eigene Session — TCC), `job` liest Fortschritt/Endzustand aus dem Log und persistiert ihn. - `gamebox_cli.py`: Index-Feld `size` (Größen-Sortierung), `browse`/`systems`/`--json`, Filter für Browser-Suche verschärft (near-Treffer + klare Tippfehler, Chat-Rangfolge unverändert breit), Signatur **ohne `--deep`** (eingebettete Engines behalten ihre Signatur), `source`/`checked` im Index-Cache. - Manifest 0.2.0 + changelog, Build-Skript (web/ + panel_api ins Paket, View-Pfade geprüft), Doku (erste-schritte, befehle), SKILL.md-Hinweis auf die Seite, `store-page.json`/Hero neu erzeugt. ## Geprüft (gemessen) - `browse`: 9370 Spiele, 0,14 s aus dem Cache; Sortierung Titel/Größe/Jahr, Systemfilter, Paginierung. - Filter: „contra“ 7 Treffer (Contra-Familie), „mad tv“ 2, „zaxxon“ 3, „flashb“ 6 — vorher 210 für „zaxxon“. - `build → job` gegen echte Bibliothek: contra gebaut (460 MB, „fertig“ + App-Pfad), zweiter Bau „fehler: existiert schon“; die so gebaute App `verify`-grün (fbneo, CPU 12 %) — trägt ohne `--deep`. - Kaltpfad: Index weg → `browse` antwortet sofort mit „wird aufgebaut“, Neubaulauf im Hintergrund, danach Treffer. - Build 36 KB, `panel_api.py` und `search.html` im Paket, Store-Check grün, JS-Syntax geprüft. ## Nicht geprüft - **Die Seite in der echten Iris-App**: Chevron-Eintrag, cfg_token, fetch gegen `/plugins/iris-gamebox/api/…` durch die Iris-Web-View — Backend und HTML nur gegeneinander getestet. - Layout in schmalem Fenster; `sources`-Befehl (in Manifest gelistet, Oberfläche nutzt ihn noch nicht). ## Grenzen / offen - Veröffentlichung von 0.2.0 braucht erneut dein Wort. - Chat-Canvas (autonome Blöcke) als Stufe 2, wie entschieden.
Author
Owner

PR #239 gemergt: chore(iris-gamebox): Store-Seite auf 0.2.0 ziehen — Spiele-Suche im Text (#235)
#239

Commits:

  • chore(iris-gamebox): Store-Seite auf 0.2.0 ziehen — Spiele-Suche im Text (#235)
PR #239 gemergt: chore(iris-gamebox): Store-Seite auf 0.2.0 ziehen — Spiele-Suche im Text (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/239 Commits: - chore(iris-gamebox): Store-Seite auf 0.2.0 ziehen — Spiele-Suche im Text (#235)
Author
Owner

PR #241 gemergt: feat(iris-gamebox): Konfiguration-Panel — Bibliotheken und App-Ablage per Ordner-Auswahl (#235)
#241

Commits:

  • feat(iris-gamebox): Konfiguration-Panel — Bibliotheken und App-Ablage per Ordner-Auswahl (#235)

Stand iris-gamebox 0.3.0 (Issue #235)

Befund

Alf wollte das Plugin konfigurierbar wie die anderen: eXoDOS- und RetroDeck-Pfad per Picker und das
Ausgabeverzeichnis der Apps frei wählbar. Bisher: Quellen nur über den Chat (sources add), Ausgabe hart
~/Applications (panel_api) bzw. aktuelles Verzeichnis (CLI), kein Konfigurieren-Panel.

Geändert

  • web/settings.html (neu): Konfiguration-Panel (settings_web_view_path + has_settings_panel),
    getrennt vom Anwenden-Chevron (Muster filmcraft/solidcraft, README Kap. 15). Zwei Bibliothekskarten
    (eXoDOS, RetroDeck) mit Status Abzeichen bereit/nicht verbunden/nicht gesetzt, je einem Ordner-Picker
    und „Entfernen“; darunter die Ablage der Apps mit Picker und „Auf Standard zurücksetzen“; darunter
    „Weitere Quellen“ (frei benannte sources add-Einträge, Leseanzeige).
  • Bibliotheken als Slots exodos/retrodeck in sources.json (CLI sources set SLOT PFAD,
    Art-Prüfung: falscher Ordner → klare Meldung; sources add bleibt für dritte Quellen).
  • Ablage der Apps: config.json → out_dir, Standard ~/Documents/Gamebox (mit Nutzer entschieden;
    vorher ~/Applications). bundle ohne --out und der Bau aus der Seite lesen gb.out_dir(),
    ein explizites --out/out gewinnt; Bestand bleibt liegen, wo er liegt.
  • panel_api neu: browse-dir (Ordner-Picker, nur Unterordner, Shortcuts inkl. /Volumes,
    verzeihender Startpfad), settings, save-source, clear-source, set-out, clear-out; Manifest
    0.3.0 + changelog. Spiele-Suche zeigt die aktuelle Ablage beim „App erzeugen“.
  • CLI neu: config [get|set-out|clear-out], sources set; doctor zeigt die Ablage. Doku (4 Seiten),
    SKILL.md, store-page/hero, changelog.md auf den neuen Weg gezogen.

Geprüft (gemessen)

  • Gegen Fake-HOME/Fake-Bibliotheken: sources set nimmt eXoDOS/lehnt RetroDeck-Ordner im falschen Slot
    („Der gewählte Ordner ist RetroDeck — erwartet wird eXoDOS …“); config/set-out/clear-out;
    alle sechs neuen panel_api-Befehle inkl. Fehlerpfade; build übergibt die eingestellte Ablage als
    --out, explizites out gewinnt; browse-dir fällt bei fehlendem Pfad auf den nächsten Eltern.
  • Manifest↔panel_api-Befehlsdeckung; node --check beider Views; store_page.py --check grün;
    Privacy-Scan ohne Fund; Build 44 KB, settings.html im Paket.

Nicht geprüft

  • Panel in der echten Iris-Web-View (cfg_token, „Konfigurieren“-Knopf, Darstellung) — Backend und HTML
    nur gegeneinander getestet.
  • Update-Pfad bei Installationen mit frei benannten Quellen: Slots müssen einmalig neu gewählt werden;
    die alte Quelle bleibt sichtbar unter „Weitere Quellen“.
  • Ton/Savestates wie bisher (unabhängig von dieser Änderung).

Grenzen

  • Dritte Quellen (Windows-Spiele) bleiben Chat-only (sources add); das Panel führt die beiden Slots.
  • Veröffentlichung (Registry) wie immer erst auf ausdrückliches Wort.
PR #241 gemergt: feat(iris-gamebox): Konfiguration-Panel — Bibliotheken und App-Ablage per Ordner-Auswahl (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/241 Commits: - feat(iris-gamebox): Konfiguration-Panel — Bibliotheken und App-Ablage per Ordner-Auswahl (#235) --- # Stand iris-gamebox 0.3.0 (Issue #235) ## Befund Alf wollte das Plugin konfigurierbar wie die anderen: eXoDOS- und RetroDeck-Pfad per Picker und das Ausgabeverzeichnis der Apps frei wählbar. Bisher: Quellen nur über den Chat (`sources add`), Ausgabe hart `~/Applications` (panel_api) bzw. aktuelles Verzeichnis (CLI), kein Konfigurieren-Panel. ## Geändert - **`web/settings.html`** (neu): Konfiguration-Panel (`settings_web_view_path` + `has_settings_panel`), getrennt vom Anwenden-Chevron (Muster filmcraft/solidcraft, README Kap. 15). Zwei Bibliothekskarten (eXoDOS, RetroDeck) mit Status Abzeichen bereit/nicht verbunden/nicht gesetzt, je einem Ordner-Picker und „Entfernen“; darunter die Ablage der Apps mit Picker und „Auf Standard zurücksetzen“; darunter „Weitere Quellen“ (frei benannte `sources add`-Einträge, Leseanzeige). - **Bibliotheken als Slots** `exodos`/`retrodeck` in `sources.json` (CLI `sources set SLOT PFAD`, Art-Prüfung: falscher Ordner → klare Meldung; `sources add` bleibt für dritte Quellen). - **Ablage der Apps**: `config.json → out_dir`, Standard **`~/Documents/Gamebox`** (mit Nutzer entschieden; vorher `~/Applications`). `bundle` ohne `--out` und der Bau aus der Seite lesen `gb.out_dir()`, ein explizites `--out`/`out` gewinnt; Bestand bleibt liegen, wo er liegt. - **panel_api** neu: `browse-dir` (Ordner-Picker, nur Unterordner, Shortcuts inkl. /Volumes, verzeihender Startpfad), `settings`, `save-source`, `clear-source`, `set-out`, `clear-out`; Manifest 0.3.0 + changelog. Spiele-Suche zeigt die aktuelle Ablage beim „App erzeugen“. - CLI neu: `config [get|set-out|clear-out]`, `sources set`; `doctor` zeigt die Ablage. Doku (4 Seiten), SKILL.md, store-page/hero, changelog.md auf den neuen Weg gezogen. ## Geprüft (gemessen) - Gegen Fake-HOME/Fake-Bibliotheken: `sources set` nimmt eXoDOS/lehnt RetroDeck-Ordner im falschen Slot („Der gewählte Ordner ist RetroDeck — erwartet wird eXoDOS …“); `config`/`set-out`/`clear-out`; alle sechs neuen panel_api-Befehle inkl. Fehlerpfade; `build` übergibt die eingestellte Ablage als `--out`, explizites `out` gewinnt; `browse-dir` fällt bei fehlendem Pfad auf den nächsten Eltern. - Manifest↔panel_api-Befehlsdeckung; `node --check` beider Views; `store_page.py --check` grün; Privacy-Scan ohne Fund; Build 44 KB, `settings.html` im Paket. ## Nicht geprüft - Panel in der echten Iris-Web-View (cfg_token, „Konfigurieren“-Knopf, Darstellung) — Backend und HTML nur gegeneinander getestet. - Update-Pfad bei Installationen mit frei benannten Quellen: Slots müssen einmalig neu gewählt werden; die alte Quelle bleibt sichtbar unter „Weitere Quellen“. - Ton/Savestates wie bisher (unabhängig von dieser Änderung). ## Grenzen - Dritte Quellen (Windows-Spiele) bleiben Chat-only (`sources add`); das Panel führt die beiden Slots. - Veröffentlichung (Registry) wie immer erst auf ausdrückliches Wort.
Author
Owner

PR #242 gemergt: docs(iris-gamebox): PLAN.md — 0.3.0 veröffentlicht (Registry 642bf42) (#235)
#242

Commits:

  • docs(iris-gamebox): PLAN.md — 0.3.0 veröffentlicht (Registry 642bf42) (#235)

Stand

PLAN.md auf „0.3.0 veröffentlicht" gezogen (Registry-Commit 642bf42). Nur Doku, kein Code.

PR #242 gemergt: docs(iris-gamebox): PLAN.md — 0.3.0 veröffentlicht (Registry 642bf42) (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/242 Commits: - docs(iris-gamebox): PLAN.md — 0.3.0 veröffentlicht (Registry 642bf42) (#235) --- # Stand PLAN.md auf „0.3.0 veröffentlicht" gezogen (Registry-Commit 642bf42). Nur Doku, kein Code.
Author
Owner

Veröffentlicht: 0.3.0

Auf Alfs Wort veröffentlicht (publish-plugins.sh, Registry-Commit 642bf42):

  • Paket iris-gamebox-0.3.0.irisplugin (44 KB), Index-Eintrag mit changelog; Paket-Hash gegen den Index geprüft (2687ef22…)
  • Store-Material mitgezogen: Hero-Seite (Schritt „Bibliotheken einmalig wählen“), description.md, changelog.md, Anleitung (4 Seiten, jetzt mit Konfiguration-Panel)
  • Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund

Geändert gegenüber 0.2.0

Konfiguration-Panel (settings_web_view_path): eXoDOS und RetroDeck per Ordner-Auswahl (Slots exodos/retrodeck, CLI sources set), Ablage der Apps frei wählbar — neuer Standard ~/Documents/Gamebox statt ~/Applications; Spiele-Suche zeigt die Ablage. PR #241.

Geprüft

Registry-Pfad gemessen (Index, Paket, Store-Dateien in 642bf42 bestätigt). Panel-Backend und Views gegeneinander getestet (siehe Stand-Kommentar zu #241).

Nicht geprüft

Panel in der echten Iris-Web-View (öffnen, cfg_token); Update-Pfad bei frei benannten Alt-Quellen (Slots einmalig neu wählen).

## Veröffentlicht: 0.3.0 Auf Alfs Wort veröffentlicht (`publish-plugins.sh`, Registry-Commit `642bf42`): - Paket `iris-gamebox-0.3.0.irisplugin` (44 KB), Index-Eintrag mit changelog; Paket-Hash gegen den Index geprüft (`2687ef22…`) - Store-Material mitgezogen: Hero-Seite (Schritt „Bibliotheken einmalig wählen“), `description.md`, `changelog.md`, Anleitung (4 Seiten, jetzt mit Konfiguration-Panel) - Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund ### Geändert gegenüber 0.2.0 Konfiguration-Panel (`settings_web_view_path`): eXoDOS und RetroDeck per Ordner-Auswahl (Slots `exodos`/`retrodeck`, CLI `sources set`), Ablage der Apps frei wählbar — neuer Standard `~/Documents/Gamebox` statt `~/Applications`; Spiele-Suche zeigt die Ablage. PR #241. ### Geprüft Registry-Pfad gemessen (Index, Paket, Store-Dateien in `642bf42` bestätigt). Panel-Backend und Views gegeneinander getestet (siehe Stand-Kommentar zu #241). ### Nicht geprüft Panel in der echten Iris-Web-View (öffnen, cfg_token); Update-Pfad bei frei benannten Alt-Quellen (Slots einmalig neu wählen).
Author
Owner

PR #243 gemergt: feat(iris-gamebox): Standard-Ablage wird angelegt, neuer Ordner im Ablage-Picker (0.4.0) (#235)
#243

Commits:

  • feat(iris-gamebox): Standard-Ablage wird angelegt, neuer Ordner im Ablage-Picker (0.4.0) (#235)

Stand iris-gamebox 0.4.0 (Issue #235)

Befund

Alf testete das Konfiguration-Panel in der echten Iris-Web-View (Screenshot: Slots bereit, Picker mit Shortcuts und /Volumes-Laufwerken) und wünschte: die Standard-Ablage ~/Documents/Gamebox soll existieren, wenn sie Standard ist, und im Ablage-Picker neue Ordner anlegen können.

Geändert

  • out_dir() legt die Ablage beim Anzeigen best effort an (schreibgeschütztes Ziel bricht die Anzeige nicht) — gilt für Panel, Spiele-Suche, config und doctor.
  • panel_api mkdir {path, name}: neuer Ordner im Picker; Name gegen /, .., versteckte Punkte; klare Meldungen bei Duplikat und nicht lesbarem Eltern. Manifest 0.4.0.
  • settings.html: „Neuer Ordner …“ im Picker der Ablage (Bibliotheken bleiben reine Auswahl vorhandener Ordner), Eingabefeld mit Enter (IME-guarded), der neue Ordner wird nach dem Neulisten vorausgewählt.
  • changelog (Plugin + store), Voraussetzungen-Doku, PLAN.md, Daily Log.

Geprüft (gemessen)

Fake-HOME: ~/Documents/Gamebox entsteht beim ersten settings; mkdir legt an und lehnt Duplikat/../.versteckt/fehlenden Eltern; Manifest↔panel_api-Deckung; IDs und node --check grün; Build 44 KB.

Nicht geprüft

Der neue Knopf in der echten Iris-Web-View (gleicher Contract wie die übrigen Picker-Aufrufe, die dort seit 0.3.0 laufen).

Grenzen

Veröffentlichung erst auf ausdrückliches Wort.

PR #243 gemergt: feat(iris-gamebox): Standard-Ablage wird angelegt, neuer Ordner im Ablage-Picker (0.4.0) (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/243 Commits: - feat(iris-gamebox): Standard-Ablage wird angelegt, neuer Ordner im Ablage-Picker (0.4.0) (#235) --- # Stand iris-gamebox 0.4.0 (Issue #235) ## Befund Alf testete das Konfiguration-Panel in der echten Iris-Web-View (Screenshot: Slots bereit, Picker mit Shortcuts und /Volumes-Laufwerken) und wünschte: die Standard-Ablage ~/Documents/Gamebox soll existieren, wenn sie Standard ist, und im Ablage-Picker neue Ordner anlegen können. ## Geändert - `out_dir()` legt die Ablage beim Anzeigen best effort an (schreibgeschütztes Ziel bricht die Anzeige nicht) — gilt für Panel, Spiele-Suche, `config` und `doctor`. - panel_api `mkdir` {path, name}: neuer Ordner im Picker; Name gegen `/`, `..`, versteckte Punkte; klare Meldungen bei Duplikat und nicht lesbarem Eltern. Manifest 0.4.0. - settings.html: „Neuer Ordner …“ im Picker der **Ablage** (Bibliotheken bleiben reine Auswahl vorhandener Ordner), Eingabefeld mit Enter (IME-guarded), der neue Ordner wird nach dem Neulisten vorausgewählt. - changelog (Plugin + store), Voraussetzungen-Doku, PLAN.md, Daily Log. ## Geprüft (gemessen) Fake-HOME: ~/Documents/Gamebox entsteht beim ersten `settings`; mkdir legt an und lehnt Duplikat/`..`/`.versteckt`/fehlenden Eltern; Manifest↔panel_api-Deckung; IDs und `node --check` grün; Build 44 KB. ## Nicht geprüft Der neue Knopf in der echten Iris-Web-View (gleicher Contract wie die übrigen Picker-Aufrufe, die dort seit 0.3.0 laufen). ## Grenzen Veröffentlichung erst auf ausdrückliches Wort.
Author
Owner

PR #244 gemergt: docs(iris-gamebox): PLAN.md — 0.4.0 veröffentlicht, Lesson Learned Plugin-Import (#235)
#244

Commits:

  • docs(iris-gamebox): PLAN.md — 0.4.0 veröffentlicht, Lesson Learned Plugin-Import (#235)

Stand

PLAN.md auf „0.4.0 veröffentlicht" gezogen (Registry-Commit 45fa674, Paket-Hash gegen den Index geprüft) und die Lesson Learned zur installierten Kopie (nie rsync — panel_api-Whitelist kommt aus plugins-index.json) ergänzt. Nur Doku, kein Code.

PR #244 gemergt: docs(iris-gamebox): PLAN.md — 0.4.0 veröffentlicht, Lesson Learned Plugin-Import (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/244 Commits: - docs(iris-gamebox): PLAN.md — 0.4.0 veröffentlicht, Lesson Learned Plugin-Import (#235) --- # Stand PLAN.md auf „0.4.0 veröffentlicht" gezogen (Registry-Commit 45fa674, Paket-Hash gegen den Index geprüft) und die Lesson Learned zur installierten Kopie (nie rsync — panel_api-Whitelist kommt aus plugins-index.json) ergänzt. Nur Doku, kein Code.
Author
Owner

Veröffentlicht: 0.4.0

Auf Alfs Wort veröffentlicht (publish-plugins.sh, Registry-Commit 45fa674), damit der Update-Weg über den Marktplatz getestet wird:

  • Paket iris-gamebox-0.4.0.irisplugin (44 KB), Index-Eintrag mit changelog; Paket-Hash gegen den Index geprüft (9bb3939a…, 44.689 B)
  • Inhalt: Standard-Ablage ~/Documents/Gamebox wird beim Anzeigen angelegt; „Neuer Ordner …“ im Ablage-Picker (Enter, neue Ordner vorausgewählt); panel_api-Befehl mkdir (PR #243)
  • Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund

Veranlassung

Alfs Test in der echten Web-View (Screenshot) meldete „Unknown command“ für mkdir: keine ist ein Plugin-Fehler, sondern rsync auf die installierte Kopie — die Befehls-Whitelist kommt aus plugins-index.json (beim Import geschrieben), HTML/JS liest Iris live von Platte. Import/Update ist der einzige saubere Weg (PLAN.md Lesson Learned).

Nicht geprüft

Der Update-Pfad über den Marktplatz (nutzerseitiger Test jetzt) und der „Neuer Ordner“-Knopf nach frischem Import.

## Veröffentlicht: 0.4.0 Auf Alfs Wort veröffentlicht (`publish-plugins.sh`, Registry-Commit `45fa674`), damit der Update-Weg über den Marktplatz getestet wird: - Paket `iris-gamebox-0.4.0.irisplugin` (44 KB), Index-Eintrag mit changelog; Paket-Hash gegen den Index geprüft (`9bb3939a…`, 44.689 B) - Inhalt: Standard-Ablage `~/Documents/Gamebox` wird beim Anzeigen angelegt; „Neuer Ordner …“ im Ablage-Picker (Enter, neue Ordner vorausgewählt); panel_api-Befehl `mkdir` (PR #243) - Privacy-Scan (Dry-Run und Veröffentlichung) ohne Fund ### Veranlassung Alfs Test in der echten Web-View (Screenshot) meldete „Unknown command“ für `mkdir`: keine ist ein Plugin-Fehler, sondern rsync auf die installierte Kopie — die Befehls-Whitelist kommt aus `plugins-index.json` (beim Import geschrieben), HTML/JS liest Iris live von Platte. Import/Update ist der einzige saubere Weg (PLAN.md Lesson Learned). ### Nicht geprüft Der Update-Pfad über den Marktplatz (nutzerseitiger Test jetzt) und der „Neuer Ordner“-Knopf nach frischem Import.
Author
Owner

PR #245 gemergt: fix(iris-gamebox): config-status meldet den Marktplatz-Vertrag state/message (0.4.1) (#235)
#245

Commits:

  • fix(iris-gamebox): config-status meldet den Marktplatz-Vertrag state/message (0.4.1) (#235)

Stand iris-gamebox 0.4.1 (Issue #235)

Befund

Alfs Screenshot nach dem Update auf 0.4.0: Die Marktplatz-Kachel meldet „Ungültige Antwort des Plugins: Zustand nil ist weder 'configured' noch 'needs_configuration'“. Kein 0.4.0-Fehler: Iris fragt bei Plugins mit Konfigurationsfenster den Zustand über config-status ab (Vertrag README Kap. 21.5: {state, message}); gamebox meldete seit 0.1.0 das hauseigene {status: gruen|gelb|rot, meldung}. Erst dass 0.3.0 das Plugin durch das Panel configurable machte, ließ die Kachel es abfragen.

Geändert

  • cmd_config_status gibt jetzt state/message aus (configured / needs_configuration). Fehlende Engines zählen als configured — sie werden beim ersten Bauen geholt; Gelb nur, wenn das Plugin so nicht funktioniert.
  • Beide Views (Spiele-Suche, Konfiguration) lesen state/message (needs_configuration = gelb).
  • Manifest 0.4.1, changelog (Plugin + store), PLAN.md (Entscheidung + Stand), Daily Log.

Geprüft (gemessen)

Fake-HOME: needs_configuration ohne Quellen, needs_configuration ohne Katalog, configured mit Quellen+Katalog; node --check beider Views; Build 44 KB, Fix im Paket verifiziert.

Nicht geprüft

Die Kachel nach dem Einspielen in der echten App (derselbe Abgleich, gegen den Iris-Parser geprüft).

Grenzen

Veröffentlichung erst auf ausdrückliches Wort.

PR #245 gemergt: fix(iris-gamebox): config-status meldet den Marktplatz-Vertrag state/message (0.4.1) (#235) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/245 Commits: - fix(iris-gamebox): config-status meldet den Marktplatz-Vertrag state/message (0.4.1) (#235) --- # Stand iris-gamebox 0.4.1 (Issue #235) ## Befund Alfs Screenshot nach dem Update auf 0.4.0: Die Marktplatz-Kachel meldet „Ungültige Antwort des Plugins: Zustand nil ist weder 'configured' noch 'needs_configuration'“. Kein 0.4.0-Fehler: Iris fragt bei Plugins mit Konfigurationsfenster den Zustand über config-status ab (Vertrag README Kap. 21.5: {state, message}); gamebox meldete seit 0.1.0 das hauseigene {status: gruen|gelb|rot, meldung}. Erst dass 0.3.0 das Plugin durch das Panel configurable machte, ließ die Kachel es abfragen. ## Geändert - cmd_config_status gibt jetzt state/message aus (configured / needs_configuration). Fehlende Engines zählen als configured — sie werden beim ersten Bauen geholt; Gelb nur, wenn das Plugin so nicht funktioniert. - Beide Views (Spiele-Suche, Konfiguration) lesen state/message (needs_configuration = gelb). - Manifest 0.4.1, changelog (Plugin + store), PLAN.md (Entscheidung + Stand), Daily Log. ## Geprüft (gemessen) Fake-HOME: needs_configuration ohne Quellen, needs_configuration ohne Katalog, configured mit Quellen+Katalog; node --check beider Views; Build 44 KB, Fix im Paket verifiziert. ## Nicht geprüft Die Kachel nach dem Einspielen in der echten App (derselbe Abgleich, gegen den Iris-Parser geprüft). ## Grenzen Veröffentlichung erst auf ausdrückliches Wort.
alf closed this issue 2026-10-24 21:16:41 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/iris-plugins#235
No description provided.