XcodeGen hat feste Werte (1.0 / 1) in die Info.plist geschrieben; Sparkle
hätte das Update auf 1.0.0 nie angeboten.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ShKCZzkdZhym6mHuPqXQAT
Release-Konfiguration in project.yml auf Manual + Developer-ID-
Application-Zertifikat + Team-ID (XY4C2RG3L5) umgestellt. Debug bleibt
ad-hoc signiert für schnelle lokale Builds. Sparkle 2.10.0 als Package
eingebunden, SUFeedURL/SUPublicEDKey/SUEnableAutomaticChecks gesetzt.
Der private Sparkle-Schlüssel liegt ausschließlich im Schlüsselbund
(generate_keys), nirgendwo im Repo.
scripts/publish-release.sh: Bugfix im Notarisierungs-Check — spctl
gibt bei Erfolg ohne -v-Flag gar keinen Text aus, wodurch
"grep -q accepted" nie anschlug und jede gültige DMG fälschlich als
nicht notarisiert gemeldet worden wäre.
Erste Beta-DMG gebaut und end-to-end verifiziert: archiviert, mit
Developer-ID signiert (inkl. aller eingebetteten Sparkle-XPC-Dienste),
per create-dmg verpackt, bei Apple eingereicht und akzeptiert,
gestapelt, per spctl gegengeprüft und direkt vom gemounteten DMG
gestartet — läuft ohne Gatekeeper-Warnung.
bin/ (heruntergeladene Sparkle-CLI-Tools) und dist/ (Build-Artefakte)
sind bewusst nicht eingecheckt.
Schritt 4 der Umsetzungsreihenfolge.
- AppSettings: Quell-/Zielordner über Security-Scoped Bookmarks,
überlebt einen Neustart.
- DropZoneView: Drag & Drop plus Dateiauswahl-Dialog, öffnet im
konfigurierten Quellordner.
- ConversionCoordinator treibt JobQueue an, sortiert neue Dateien nach
zuletzt geändert, hält Fortschritt/Status pro Datei nach.
- FileListView zeigt Fortschritt und hebt Problemfälle (übersprungen/
abgelehnt/fehlgeschlagen) sichtbar hervor — keine stillen Abbrüche.
- CoreErrors+LocalizedError: deutsche Klartexte für die Core-Fehler-
Enums leben bewusst im App-Target, nicht im UI-freien Core.
- AppIcon aus assets/icon.svg gebaut (alle 10 macOS-Icongrößen via
rsvg-convert, ImageMagicks eingebauter SVG-Renderer hat den
Rahmen-Stroke verschluckt).
Bewusst ausgeklammert (spätere Schritte): Review-Ansicht, Menu-Bar-
Betrieb, Signierung/Notarisierung/Sparkle, Overwrite-Rückfrage-Dialog.