Filmcraft Plugin #11

Closed
opened 2026-10-12 21:46:42 +00:00 by alf · 4 comments
Owner

Typ: Feature · Status: in Arbeit (Sammel-Issue, bleibt offen)

Worum es geht

Im Chat „Öffne FilmCraft“ sagen und mit Iris an einem Filmprojekt arbeiten. FilmCraft ist ein Open-Source-Videoeditor in Rust (gepinnt auf v0.5.0). Alle Knöpfe und Regler sind über seine Control-Schnittstelle erreichbar. Iris schneidet über Engine-Befehle, bedient die Oberfläche bei Bedarf und prüft das Ergebnis an Screenshots. Das Plugin filmcraft ist die Brücke dafür (plugins/filmcraft/).

Stand (Plugin-Version 0.4.0)

Brücke (filmcraft_bridge.py, nur Standardbibliothek): Engine-Befehle (run, run --script, inspect, describe, commands, export, render, jobs) über das gepinnte filmcraft-cli (SHA256-geprüft), UI-Methoden über den Control-Port. Zwei Transporte, bewusst getrennt: Engine headless oder gegen die offene App, UI nur mit offener App.

App öffnen und bedienen: open, quit sowie je ein Unterbefehl pro UI-Methode (click, drag, scroll, key, type, set, menu, panel, playback, focus, locate, ui_inspect, ui_elements, screenshot). Der Skill beschreibt die Beobachten-Handeln-Schleife; ein Engine-Befehl hat Vorrang vor Klicken.

Konfigurieren-Panel mit App-Picker: web/settings.html + panel_api.py. Der Picker blättert auf dem Rechner des Servers, prüft die gewählte Datei per --version und speichert sie nur, wenn sie FilmCraft ist.

Ein Projekt pro Chat: FilmCraft-Projekt.fcproj im Workspace des Chats, eine App-Instanz, open wechselt das Projekt (und speichert das bisherige zuerst, weil file.open Ungespeichertes ohne Rückfrage verwirft). Vor jedem Befehl prüft die Brücke, ob das offene Projekt zu diesem Chat gehört; sonst Ablehnung. „Zurück auf “ = restore.

Sicherung pro Auftrag: Ändernde Befehle brauchen --prompt "<Wortlaut>". Ein neuer Prompt sichert das Projekt vorher nach Filmcraft-Autobackups/ im Workspace (bei offener App der Live-Zustand per file.saveCopy). backups listet sie.

Katalog im Vault (catalog): 675 Befehle in 28 Notizen und 303 Effekte mit 1.426 Parametern (Typ, Bereich, Standard, Auswahlwerte) in 32 Notizen unter 04 Ressourcen/FilmCraft/. Nur, was FilmCraft meldet, nichts erfunden; fremde Dateien werden nie überschrieben.

Look über die ganze Timeline (look apply|remove|probes): Der Look liegt auf einer Einstellungsebene (an Wegwerf-Projekten geprüft: trägt). Werte werden vor der ersten Änderung gegen die Effekt-Registry geprüft; Vorher/Nachher-Bilder an Stichproben. Bei offener App rendert das CLI nicht, deshalb Foto des Program-Panels.

Geprüft

  • 84 Unit-Tests, zusätzlich Läufe gegen eine echte App-Instanz und headless; absichtlich eingebaute Fehler werden von den Tests erkannt.
  • Im Chat bestätigt: „Öffne FilmCraft“, Import der Video-Anhänge aus einer Vault-Notiz, Sequenz anlegen, Wechsel zwischen Chat-Projekten, Farbtemperatur eines Clips an ein Referenzbild angleichen.

Offen

  • Look-Notizen im Vault (04 Ressourcen/FilmCraft/Looks/, Werte im Frontmatter, Anwenden per Skript).
  • Look für einen einzelnen Clip und Referenzbild („aktiver Clip“ = ausgewählt, sonst unter dem Playhead): applyMatch oder Messweg, noch zu entscheiden.
  • new: Projekt und Sequenz mit Name, Auflösung und FPS in einem Befehl.
  • Vektor-Einbettung der Katalog-Notizen (Embedding-Server war nicht erreichbar; Volltextsuche geht).
  • Nicht geprüft: fehlende Medien beim Projektwechsel, Test auf dem Linux-Server, Veröffentlichung in der Plugin-Registry.
  • Gesamtlänge der Sequenz in der App (00:21:42 im Monitor gegen 275 s von Iris gemeldet): ungeklärt.

Bekannte Grenzen

FilmCraft ist Alpha. Nur lokal (127.0.0.1), kein Linux-GUI. effects.setParam begrenzt Werte nicht (die Brücke prüft selbst). Die Look-Ebene wächst nicht mit, wenn die Sequenz länger wird. Zweimal derselbe Prompt löst keine zweite Sicherung aus.

Dokumentation im Repo

filmcraft/README.md (Referenz), filmcraft/PLAN.md (Plugin insgesamt), filmcraft/PLAN-FARBLOOK.md (Entscheidungen, Messungen, Lessons Learned), filmcraft/CLAUDE.md.

Teilarbeit zu diesem Issue läuft mit ship -r; das Issue wird nicht automatisch geschlossen.

**Typ:** Feature · **Status:** in Arbeit (Sammel-Issue, bleibt offen) ## Worum es geht Im Chat „Öffne FilmCraft“ sagen und mit Iris an einem Filmprojekt arbeiten. FilmCraft ist ein Open-Source-Videoeditor in Rust (gepinnt auf v0.5.0). Alle Knöpfe und Regler sind über seine Control-Schnittstelle erreichbar. Iris schneidet über Engine-Befehle, bedient die Oberfläche bei Bedarf und prüft das Ergebnis an Screenshots. Das Plugin `filmcraft` ist die Brücke dafür (`plugins/filmcraft/`). ## Stand (Plugin-Version 0.4.0) **Brücke** (`filmcraft_bridge.py`, nur Standardbibliothek): Engine-Befehle (`run`, `run --script`, `inspect`, `describe`, `commands`, `export`, `render`, `jobs`) über das gepinnte `filmcraft-cli` (SHA256-geprüft), UI-Methoden über den Control-Port. Zwei Transporte, bewusst getrennt: Engine headless oder gegen die offene App, UI nur mit offener App. **App öffnen und bedienen:** `open`, `quit` sowie je ein Unterbefehl pro UI-Methode (`click`, `drag`, `scroll`, `key`, `type`, `set`, `menu`, `panel`, `playback`, `focus`, `locate`, `ui_inspect`, `ui_elements`, `screenshot`). Der Skill beschreibt die Beobachten-Handeln-Schleife; ein Engine-Befehl hat Vorrang vor Klicken. **Konfigurieren-Panel mit App-Picker:** `web/settings.html` + `panel_api.py`. Der Picker blättert auf dem Rechner des Servers, prüft die gewählte Datei per `--version` und speichert sie nur, wenn sie FilmCraft ist. **Ein Projekt pro Chat:** `FilmCraft-Projekt.fcproj` im Workspace des Chats, eine App-Instanz, `open` wechselt das Projekt (und speichert das bisherige zuerst, weil `file.open` Ungespeichertes ohne Rückfrage verwirft). Vor jedem Befehl prüft die Brücke, ob das offene Projekt zu diesem Chat gehört; sonst Ablehnung. „Zurück auf <Pfad>“ = `restore`. **Sicherung pro Auftrag:** Ändernde Befehle brauchen `--prompt "<Wortlaut>"`. Ein neuer Prompt sichert das Projekt vorher nach `Filmcraft-Autobackups/` im Workspace (bei offener App der Live-Zustand per `file.saveCopy`). `backups` listet sie. **Katalog im Vault** (`catalog`): 675 Befehle in 28 Notizen und 303 Effekte mit 1.426 Parametern (Typ, Bereich, Standard, Auswahlwerte) in 32 Notizen unter `04 Ressourcen/FilmCraft/`. Nur, was FilmCraft meldet, nichts erfunden; fremde Dateien werden nie überschrieben. **Look über die ganze Timeline** (`look apply|remove|probes`): Der Look liegt auf einer Einstellungsebene (an Wegwerf-Projekten geprüft: trägt). Werte werden vor der ersten Änderung gegen die Effekt-Registry geprüft; Vorher/Nachher-Bilder an Stichproben. Bei offener App rendert das CLI nicht, deshalb Foto des Program-Panels. ## Geprüft - 84 Unit-Tests, zusätzlich Läufe gegen eine echte App-Instanz und headless; absichtlich eingebaute Fehler werden von den Tests erkannt. - Im Chat bestätigt: „Öffne FilmCraft“, Import der Video-Anhänge aus einer Vault-Notiz, Sequenz anlegen, Wechsel zwischen Chat-Projekten, Farbtemperatur eines Clips an ein Referenzbild angleichen. ## Offen - **Look-Notizen im Vault** (`04 Ressourcen/FilmCraft/Looks/`, Werte im Frontmatter, Anwenden per Skript). - **Look für einen einzelnen Clip und Referenzbild** („aktiver Clip“ = ausgewählt, sonst unter dem Playhead): `applyMatch` oder Messweg, noch zu entscheiden. - **`new`:** Projekt und Sequenz mit Name, Auflösung und FPS in einem Befehl. - Vektor-Einbettung der Katalog-Notizen (Embedding-Server war nicht erreichbar; Volltextsuche geht). - Nicht geprüft: fehlende Medien beim Projektwechsel, Test auf dem Linux-Server, Veröffentlichung in der Plugin-Registry. - Gesamtlänge der Sequenz in der App (00:21:42 im Monitor gegen 275 s von Iris gemeldet): ungeklärt. ## Bekannte Grenzen FilmCraft ist Alpha. Nur lokal (`127.0.0.1`), kein Linux-GUI. `effects.setParam` begrenzt Werte nicht (die Brücke prüft selbst). Die Look-Ebene wächst nicht mit, wenn die Sequenz länger wird. Zweimal derselbe Prompt löst keine zweite Sicherung aus. ## Dokumentation im Repo `filmcraft/README.md` (Referenz), `filmcraft/PLAN.md` (Plugin insgesamt), `filmcraft/PLAN-FARBLOOK.md` (Entscheidungen, Messungen, Lessons Learned), `filmcraft/CLAUDE.md`. Teilarbeit zu diesem Issue läuft mit `ship -r`; das Issue wird nicht automatisch geschlossen.
Author
Owner

Veröffentlicht: Version 0.4.0 steht in iris/iris-plugin-registry (Commit adcb459, 17 Plugins im Index). Anonym geprüft: Index und Paketdownload (40.581 Bytes) funktionieren. Freigabe über die leere Datei .include (PR #13). Vorher wurde das gebaute Paket auf Pfade, Adressen, Zugangsdaten und Namen durchsucht; einziger Treffer ist author: alf, wie bei allen veröffentlichten Plugins.

Damit entfällt unter „Offen“ der Punkt „Veröffentlichung in der Plugin-Registry“. Weitere Versionen: version in plugin.json erhöhen, dann ./publish-plugins.sh filmcraft.

**Veröffentlicht:** Version 0.4.0 steht in `iris/iris-plugin-registry` (Commit `adcb459`, 17 Plugins im Index). Anonym geprüft: Index und Paketdownload (40.581 Bytes) funktionieren. Freigabe über die leere Datei `.include` (PR #13). Vorher wurde das gebaute Paket auf Pfade, Adressen, Zugangsdaten und Namen durchsucht; einziger Treffer ist `author: alf`, wie bei allen veröffentlichten Plugins. Damit entfällt unter „Offen“ der Punkt „Veröffentlichung in der Plugin-Registry“. Weitere Versionen: `version` in `plugin.json` erhöhen, dann `./publish-plugins.sh filmcraft`.
Author
Owner

Version 0.5.0 veröffentlicht (Registry-Commit 6c43fc0, anonym geprüft: Index mit Verlauf 0.4.0 und 0.5.0, Download 45.693 Bytes, Paketinhalt ohne persönliche Angaben).

Neu seit 0.4.0: Look-Notizen im Vault (PR #14): look save liest den Look aus der Ebene der Timeline und schreibt FilmCraft-Look-<Name>.md nach 04 Ressourcen/FilmCraft/Looks/; look list; look apply --note. Nur geänderte Werte, Nicht-Speicherbares (Räder, Kurven, Text, Keyframes, Deckkraft der Ebene) wird abgelehnt statt weggelassen; nur zwei Frontmatter-Zeilen steuern die Ausführung. Rundlauf an der echten Engine und in der App byte-identisch, 118 Tests.

Außerdem: Das Build-Skript meldete sporadisch fälschlich „web/settings.html fehlt im Paket“ (unzip -l | grep -q unter pipefail, PR #15). Behoben.

Damit entfällt unter „Offen“: die Look-Notizen im Vault. Offen bleiben der Look für einen einzelnen Clip mit Referenzbild (Schritt 7), new, die Vektor-Einbettung der Katalog-Notizen, fehlende Medien beim Projektwechsel, der Linux-Server-Test und die Frage zur Sequenzlänge. Noch nicht von Hand in einem echten Chat ausprobiert: look und die Look-Notizen.

**Version 0.5.0 veröffentlicht** (Registry-Commit `6c43fc0`, anonym geprüft: Index mit Verlauf 0.4.0 und 0.5.0, Download 45.693 Bytes, Paketinhalt ohne persönliche Angaben). **Neu seit 0.4.0:** Look-Notizen im Vault (PR #14): `look save` liest den Look aus der Ebene der Timeline und schreibt `FilmCraft-Look-<Name>.md` nach `04 Ressourcen/FilmCraft/Looks/`; `look list`; `look apply --note`. Nur geänderte Werte, Nicht-Speicherbares (Räder, Kurven, Text, Keyframes, Deckkraft der Ebene) wird abgelehnt statt weggelassen; nur zwei Frontmatter-Zeilen steuern die Ausführung. Rundlauf an der echten Engine und in der App byte-identisch, 118 Tests. **Außerdem:** Das Build-Skript meldete sporadisch fälschlich „web/settings.html fehlt im Paket“ (`unzip -l | grep -q` unter `pipefail`, PR #15). Behoben. **Damit entfällt unter „Offen“:** die Look-Notizen im Vault. Offen bleiben der Look für einen einzelnen Clip mit Referenzbild (Schritt 7), `new`, die Vektor-Einbettung der Katalog-Notizen, fehlende Medien beim Projektwechsel, der Linux-Server-Test und die Frage zur Sequenzlänge. Noch nicht von Hand in einem echten Chat ausprobiert: `look` und die Look-Notizen.
Author
Owner

Version 0.5.1 veröffentlicht (Registry-Commit a4cd6d3). Anonym geprüft: Index mit Verlauf 0.4.0, 0.5.0, 0.5.1; Download 54.107 Bytes, Prüfsumme stimmt mit dem Index überein; alle fünf Doku-Seiten sind im Paket; der Inhalt hat keine persönlichen Angaben.

Neu: Endnutzer-Dokumentation im Plugin-Manager (Button „Dokumentation“, fünf Seiten: Erste Schritte, Projekte und Sicherungen, Farblooks, Befehls- und Effektkatalog, Grenzen und Fehlerbehebung). tests/test_docs.py prüft Verweise, Form, Datenschutz und die zitierten Fehlermeldungen zur Laufzeit; 131 Tests.

Zum Testen auf einer anderen Maschine: Plugin aus der Registry installieren oder aktualisieren (Plugin-Verwaltung des Servers, Knopf „Repository“), FilmCraft-App auf der Maschine installieren und im Konfigurieren-Panel auswählen. Nicht geprüft: die Oberfläche des Plugin-Managers mit den neuen Seiten und eine Installation auf einer zweiten Maschine.

**Version 0.5.1 veröffentlicht** (Registry-Commit `a4cd6d3`). Anonym geprüft: Index mit Verlauf 0.4.0, 0.5.0, 0.5.1; Download 54.107 Bytes, Prüfsumme stimmt mit dem Index überein; alle fünf Doku-Seiten sind im Paket; der Inhalt hat keine persönlichen Angaben. **Neu:** Endnutzer-Dokumentation im Plugin-Manager (Button „Dokumentation“, fünf Seiten: Erste Schritte, Projekte und Sicherungen, Farblooks, Befehls- und Effektkatalog, Grenzen und Fehlerbehebung). `tests/test_docs.py` prüft Verweise, Form, Datenschutz und die zitierten Fehlermeldungen zur Laufzeit; 131 Tests. **Zum Testen auf einer anderen Maschine:** Plugin aus der Registry installieren oder aktualisieren (Plugin-Verwaltung des Servers, Knopf „Repository“), FilmCraft-App auf der Maschine installieren und im Konfigurieren-Panel auswählen. Nicht geprüft: die Oberfläche des Plugin-Managers mit den neuen Seiten und eine Installation auf einer zweiten Maschine.
Author
Owner

Version 0.6.0 veröffentlicht

Registry: packages/filmcraft/filmcraft-0.6.0.irisplugin (anonym geladen und geprüft, Paket vorher auf Persönliches durchsucht).

Neu

  • match --reference BILD: gleicht Belichtung, Kontrast, Temperatur, Tint und Sättigung (Lumetri) des aktiven Clips an ein Referenzbild an. Gemessen und probiert wird an einer Kopie des Projekts, das echte Projekt ändert erst der letzte Schritt (vorher gesichert). Aktiver Clip: genannt, sonst ausgewählt, sonst unter dem Playhead. --dry-run rechnet nur.
  • Nach jedem erfolgreichen ändernden Befehl an der offenen App wird die Projektdatei gespeichert. Auslöser: Im ersten echten Chat war FilmCraft-Projekt.fcproj leer, obwohl Iris „abgesichert“ meldete.

Gemessen

  • Rundlauf mit bekannter Antwort: Abweichung 49,8 auf 3,0 in 7 Renderings. Eigene App-Instanz: App und Datei stimmen überein, Sicherung liegt vorher da.
  • 167 Tests, Mutationstests für Annahmebedingung und Schrittbegrenzung.

Grenzen

  • Gleiche Messwerte heißen nicht gleiche Reglerwerte (Temperatur, Tint und Sättigung überdecken sich).
  • Extreme Ziele erreicht der Regelkreis nicht und meldet das.
  • Nicht im echten Chat über den Plugin-Manager ausprobiert.

Weiter offen: Look von Clip A auf Clip B als fester Befehl, new, Länge der Sequenz (Monitor 00:21:42, Iris meldete 275,6 s).

PRs: #17, #18, #19, #20.

🤖 Generated with Claude Code

## Version 0.6.0 veröffentlicht Registry: `packages/filmcraft/filmcraft-0.6.0.irisplugin` (anonym geladen und geprüft, Paket vorher auf Persönliches durchsucht). **Neu** - `match --reference BILD`: gleicht Belichtung, Kontrast, Temperatur, Tint und Sättigung (Lumetri) des aktiven Clips an ein Referenzbild an. Gemessen und probiert wird an einer Kopie des Projekts, das echte Projekt ändert erst der letzte Schritt (vorher gesichert). Aktiver Clip: genannt, sonst ausgewählt, sonst unter dem Playhead. `--dry-run` rechnet nur. - Nach jedem erfolgreichen ändernden Befehl an der offenen App wird die Projektdatei gespeichert. Auslöser: Im ersten echten Chat war `FilmCraft-Projekt.fcproj` leer, obwohl Iris „abgesichert“ meldete. **Gemessen** - Rundlauf mit bekannter Antwort: Abweichung 49,8 auf 3,0 in 7 Renderings. Eigene App-Instanz: App und Datei stimmen überein, Sicherung liegt vorher da. - 167 Tests, Mutationstests für Annahmebedingung und Schrittbegrenzung. **Grenzen** - Gleiche Messwerte heißen nicht gleiche Reglerwerte (Temperatur, Tint und Sättigung überdecken sich). - Extreme Ziele erreicht der Regelkreis nicht und meldet das. - Nicht im echten Chat über den Plugin-Manager ausprobiert. **Weiter offen**: Look von Clip A auf Clip B als fester Befehl, `new`, Länge der Sequenz (Monitor 00:21:42, Iris meldete 275,6 s). PRs: #17, #18, #19, #20. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
alf closed this issue 2026-10-27 10:43:11 +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#11
No description provided.