build: LehrerApp.McpBridge ins macOS-App-Bundle aufnehmen
build-macos-app.sh publiziert und platziert jetzt zusätzlich zur Hauptapp die MCP-Bridge-Binary (Contents/MacOS/LehrerApp.McpBridge), inklusive Universal-Binary-Handling und eigenständiger Ad-hoc-Signierung vor dem Bundle-weiten codesign --deep-Schritt. Publish/Lipo/Kopier-Logik dafür in eine wiederverwendbare place_binary()-Funktion extrahiert. Nur auf Bash-Syntax geprüft (kein macOS in dieser Session verfügbar) - noch nicht auf echtem macOS gebaut/verifiziert, siehe TODO.md 4.5.27. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2536,6 +2536,27 @@ folgenden Punkte gehören direkt in `LehrerApp.Desktop`:
|
||||
einer rohen GUID enthält, und dass eine unveränderte Gruppenmitgliedschaft keine erneute
|
||||
Nachfrage auslöst.
|
||||
|
||||
- [x] **4.5.27** `build-macos-app.sh` um die Bridge-Binary erweitert (2026-09-11, aus 4.5.25/4.5.26
|
||||
zurückgestellt): `LehrerApp.McpBridge` wird jetzt als zweites Self-Contained-Publish pro
|
||||
Architektur gebaut und als lose Executable neben die Hauptapp nach
|
||||
`Contents/MacOS/LehrerApp.McpBridge` gelegt (nicht als `CFBundleExecutable` - sie wird nie
|
||||
von Finder/launchd gestartet, sondern vom KI-Client direkt über ihren vollen Pfad als
|
||||
Kindprozess). Die bisher einmalige Publish/Universal-Binary/Kopier-Logik ist in eine
|
||||
`place_binary()`-Funktion extrahiert und wird für Hauptapp und Bridge gleichermaßen
|
||||
aufgerufen. Bridge wird **zusätzlich einzeln** ad-hoc signiert (Schritt 6/7), bevor der
|
||||
Bundle-weite `codesign --deep`-Schritt (7/7) läuft — sie liegt lose in `Contents/MacOS`
|
||||
statt in einem eigenen `.framework`/`.bundle`, daher nicht verlassen auf das (in dem Fall
|
||||
nicht sicher dokumentierte) Rekursionsverhalten von `--deep`.
|
||||
- **Nicht gelöst, bewusst zurückgestellt:** Laufzeit-Duplikation (beide Publishes bringen
|
||||
ihre eigene self-contained .NET-Runtime mit) — siehe Planungsdokument, spätere Optimierung
|
||||
über einen framework-dependent Bridge-Build + angepasste `runtimeconfig.json`.
|
||||
- **Nicht verifiziert:** Diese Session lief auf Windows, ohne Zugriff auf `sips`/`iconutil`/
|
||||
`lipo`/`codesign` — das Skript wurde nur auf Bash-Syntax geprüft (`bash -n`), nicht auf
|
||||
einem echten Mac gebaut/ausgeführt. Vor Verlass auf das erzeugte Bundle: auf macOS
|
||||
`./build-macos-app.sh` laufen lassen und `open build/LehrerApp.app` sowie einen
|
||||
MCP-Client, der auf `build/LehrerApp.app/Contents/MacOS/LehrerApp.McpBridge` zeigt, gegen
|
||||
die laufende App testen.
|
||||
|
||||
**Wichtige Abweichung von der ursprünglichen Planung (5.2):** Vor der Umsetzung zeigte sich,
|
||||
dass 5.2 wie ursprünglich beschrieben eine zweite, parallele Fehlzeiten-Erfassung neben dem
|
||||
bereits bestehenden Anwesenheits-Tracking aus Kapitel 3 (`ParticipationEntry.Attendance`,
|
||||
|
||||
Reference in New Issue
Block a user