feat(tools): pull-3rd-party lädt Figcraft.app und figcraft-cli in die Forgejo-Paket-Registry (für iris-rustapp-crafter) #196

Open
opened 2026-11-12 14:56:23 +00:00 by alf · 1 comment
Owner

Warum

Das Plugin iris-rustapp-crafter (iris/iris-plugins#388) braucht Figcraft für den GUI-Entwurf und soll es selbst installieren können, ohne dass der Nutzer es beschafft. Auf einem frischen Mac gibt es weder Docker noch ein gebautes Figcraft. pull-3rd-party baut Figcraft schon; es fehlt das Ablegen in der Forgejo-Paket-Registry, aus der das Plugin installiert.

Befund (nachgesehen, 2026-11-12)

  • ~/Desktop/Figcraft.app/Contents/MacOS enthält nur FigCraft. Das figcraft-cli (0.17.1, 46 MB, headless: info, export, convert, render, run, mcp) wird mitgebaut (3rdparty/figcraft/target/aarch64-apple-darwin/release/figcraft-cli), aber nicht ins Bundle gelegt: Upstreams packaging/macos/package.sh schreibt es als eigenes ZIP (figcraft-cli-<version>-macos-<arch>.zip).
  • Forgejo hat die Paket-API (GET /api/v1/packages/iris?type=generic → 200; Version 15.0.9+gitea-1.22.0). Das Plugin würde daraus laden.
  • Die App ist nicht notarisiert (kein Zertifikat in pull-3rd-party).

Wie

Nach erfolgreichem Build, nur ohne -n, mit $FORGEJO_TOKEN:

  1. Figcraft.app per ditto -c -k --keepParent zippen, das figcraft-cli getrennt zippen, je eine .sha256 daneben.
  2. Hochladen mit PUT /api/packages/<owner>/generic/figcraft/<version>/<datei> (Eigentümer: Organisation iris).
  3. Version: die der Cargo.toml plus Kurz-Hash des Commits (0.17.1-<hash>), damit ein erneuter Build derselben Version nicht an „Datei existiert schon“ (409) scheitert; ein bereits vorhandener Stand wird nicht doppelt hochgeladen.
  4. Dateinamen: Figcraft-<version>-macos-arm64.zip, figcraft-cli-<version>-macos-arm64.zip.
  5. Im Probelauf (-n) nur melden, was hochgeladen würde.

Dasselbe Muster gilt später für den Docker-Container (Linux) und weitere Craft-Apps.

Nicht Teil

  • Notarisierung (braucht Entwicklerzertifikat).
  • Linux-Pakete.
  • Das Installieren selbst: das macht das Plugin (iris-plugins#388, Bauabschnitt 6).

Offen

  • Läuft die per curl/Skript geladene, nicht notarisierte App auf einem frischen Mac ohne Gatekeeper-Warnung? (Test in der UTM-VM)
  • Soll auch die Craft-Anything-App und andere Craft-Apps so abgelegt werden?
## Warum Das Plugin `iris-rustapp-crafter` (iris/iris-plugins#388) braucht Figcraft für den GUI-Entwurf und soll es selbst installieren können, ohne dass der Nutzer es beschafft. Auf einem frischen Mac gibt es weder Docker noch ein gebautes Figcraft. `pull-3rd-party` baut Figcraft schon; es fehlt das Ablegen in der Forgejo-Paket-Registry, aus der das Plugin installiert. ## Befund (nachgesehen, 2026-11-12) - `~/Desktop/Figcraft.app/Contents/MacOS` enthält nur `FigCraft`. Das `figcraft-cli` (0.17.1, 46 MB, headless: `info`, `export`, `convert`, `render`, `run`, `mcp`) wird mitgebaut (`3rdparty/figcraft/target/aarch64-apple-darwin/release/figcraft-cli`), aber nicht ins Bundle gelegt: Upstreams `packaging/macos/package.sh` schreibt es als eigenes ZIP (`figcraft-cli-<version>-macos-<arch>.zip`). - Forgejo hat die Paket-API (`GET /api/v1/packages/iris?type=generic` → 200; Version 15.0.9+gitea-1.22.0). Das Plugin würde daraus laden. - Die App ist nicht notarisiert (kein Zertifikat in `pull-3rd-party`). ## Wie Nach erfolgreichem Build, nur ohne `-n`, mit `$FORGEJO_TOKEN`: 1. `Figcraft.app` per `ditto -c -k --keepParent` zippen, das `figcraft-cli` getrennt zippen, je eine `.sha256` daneben. 2. Hochladen mit `PUT /api/packages/<owner>/generic/figcraft/<version>/<datei>` (Eigentümer: Organisation `iris`). 3. Version: die der `Cargo.toml` plus Kurz-Hash des Commits (`0.17.1-<hash>`), damit ein erneuter Build derselben Version nicht an „Datei existiert schon“ (409) scheitert; ein bereits vorhandener Stand wird nicht doppelt hochgeladen. 4. Dateinamen: `Figcraft-<version>-macos-arm64.zip`, `figcraft-cli-<version>-macos-arm64.zip`. 5. Im Probelauf (`-n`) nur melden, was hochgeladen würde. Dasselbe Muster gilt später für den Docker-Container (Linux) und weitere Craft-Apps. ## Nicht Teil - Notarisierung (braucht Entwicklerzertifikat). - Linux-Pakete. - Das Installieren selbst: das macht das Plugin (iris-plugins#388, Bauabschnitt 6). ## Offen - Läuft die per `curl`/Skript geladene, nicht notarisierte App auf einem frischen Mac ohne Gatekeeper-Warnung? (Test in der UTM-VM) - Soll auch die Craft-Anything-App und andere Craft-Apps so abgelegt werden?
Author
Owner

PR #197 gemergt: feat(tools): pull-3rd-party lädt Figcraft.app und figcraft-cli in die Paket-Registry (#196)
http://docker:3000/alf/2ndbrain/pulls/197

Commits:

  • feat(tools): pull-3rd-party lädt Figcraft.app und figcraft-cli in die Paket-Registry (#196)

Stand: Paket-Upload in pull-3rd-party

Befund: Das Plugin iris-rustapp-crafter soll Figcraft selbst installieren; dafür muss pull-3rd-party App und CLI in die Registry des Forgejo legen.

Geändert: Neue Funktion do_publish in tools/pull-3rd-party: Nach erfolgreichem Build (nur ohne -n, nur für $PUBLISH_PACKAGES, Vorgabe figcraft) wird die App per ditto und das figcraft-cli per zip gepackt, je eine .sha256 daneben, und per PUT /api/packages/iris/generic/figcraft/<Cargo-Version>-<Kurz-Hash>/<Datei> hochgeladen (Besitzer $PUBLISH_OWNER, Server $FORGEJO_URL, Vorgabe http://docker:3000). Ein vorhandener Stand wird nicht doppelt hochgeladen. Im Probelauf wird nur gemeldet. Ein Upload-Fehler zählt als „beachten“ (Exit 1).

Geprüft: Probelauf; echter Lauf DESKTOP_DIR=<temp> pull-3rd-party -s figcraft → vier Dateien in iris/figcraft Version 0.17.1-3b9bf8c9 (anonym über die öffentliche Domain gelistet, .sha256 abrufbar); zweiter Lauf: „liegt schon in der Registry“.

Nicht geprüft: Ob die nicht notarisierte App auf einem frischen Mac ohne Gatekeeper-Warnung startet (UTM-VM); Konkurrenz zweier gleichzeitiger Läufe; Linux-Pakete (nicht Teil).

Offen: Die Installation durch das Plugin (iris-plugins#388, 6b) folgt separat. Weitere Craft-Apps: PUBLISH_PACKAGES erweitern.

PR #197 gemergt: feat(tools): pull-3rd-party lädt Figcraft.app und figcraft-cli in die Paket-Registry (#196) http://docker:3000/alf/2ndbrain/pulls/197 Commits: - feat(tools): pull-3rd-party lädt Figcraft.app und figcraft-cli in die Paket-Registry (#196) --- ## Stand: Paket-Upload in `pull-3rd-party` **Befund:** Das Plugin `iris-rustapp-crafter` soll Figcraft selbst installieren; dafür muss `pull-3rd-party` App und CLI in die Registry des Forgejo legen. **Geändert:** Neue Funktion `do_publish` in `tools/pull-3rd-party`: Nach erfolgreichem Build (nur ohne `-n`, nur für `$PUBLISH_PACKAGES`, Vorgabe `figcraft`) wird die App per `ditto` und das `figcraft-cli` per `zip` gepackt, je eine `.sha256` daneben, und per `PUT /api/packages/iris/generic/figcraft/<Cargo-Version>-<Kurz-Hash>/<Datei>` hochgeladen (Besitzer `$PUBLISH_OWNER`, Server `$FORGEJO_URL`, Vorgabe `http://docker:3000`). Ein vorhandener Stand wird nicht doppelt hochgeladen. Im Probelauf wird nur gemeldet. Ein Upload-Fehler zählt als „beachten“ (Exit 1). **Geprüft:** Probelauf; echter Lauf `DESKTOP_DIR=<temp> pull-3rd-party -s figcraft` → vier Dateien in `iris/figcraft` Version `0.17.1-3b9bf8c9` (anonym über die öffentliche Domain gelistet, `.sha256` abrufbar); zweiter Lauf: „liegt schon in der Registry“. **Nicht geprüft:** Ob die nicht notarisierte App auf einem frischen Mac ohne Gatekeeper-Warnung startet (UTM-VM); Konkurrenz zweier gleichzeitiger Läufe; Linux-Pakete (nicht Teil). **Offen:** Die Installation durch das Plugin (iris-plugins#388, 6b) folgt separat. Weitere Craft-Apps: `PUBLISH_PACKAGES` erweitern.
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
alf/2ndbrain#196
No description provided.