Zwei Anzeigen für einen Handgriff sind eine zu viel

Apples eigene Einblendung lässt sich aushängen, ohne Root und ohne SIP
anzufassen: `com.apple.OSDUIHelper` liegt in der GUI-Domäne des angemeldeten
Benutzers, nicht im System. `launchctl bootout` dort hinein genügt.

Standardmäßig aus, denn es verschwindet **jede** Einblendung — auch Helligkeit
und Feststelltaste, und für die Feststelltaste hat Onyx keinen Ersatz. Beim
Beenden wird wieder eingehängt: eine Einstellung darf nicht überleben, was sie
eingestellt hat.

Dazu zwei Fehler im Anlernen behoben. Der Posenname stand als roher Schlüssel da
— die Zeichenketten liegen im Bündel von `FaceProvider`, gesucht wurden sie im
Hauptbündel. Und „Gesicht vergleichen" blieb nach dem Anlernen grau, weil
`isEnrolled` bei jedem Aufruf den Schlüsselbund las: richtig, aber für SwiftUI
unsichtbar, weil es nichts gab, woran eine Ansicht die Änderung hätte bemerken
können.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-05 22:26:41 +02:00
co-authored by Claude Opus 5
parent fd29df51cf
commit a3399d3a96
9 changed files with 221 additions and 8 deletions
+8 -2
View File
@@ -55,6 +55,7 @@ struct LockSettingsView: View {
Button(String(localized: "lock.face.forget"), role: .destructive) {
enrollment.reset()
model.faceUnlockEnabled = false
controller.refreshEnrollment()
}
}
}
@@ -71,7 +72,12 @@ struct LockSettingsView: View {
}
}
.sheet(isPresented: $isEnrolling) {
EnrollmentSheet(enrollment: enrollment) { isEnrolling = false }
EnrollmentSheet(enrollment: enrollment) {
isEnrolling = false
// Sonst bliebe „Gesicht vergleichen" grau, obwohl gerade eines
// angelernt wurde.
controller.refreshEnrollment()
}
}
}
@@ -109,7 +115,7 @@ private struct EnrollmentSheet: View {
.clipShape(RoundedRectangle(cornerRadius: Onyx.Radius.card,
style: .continuous))
Text(enrollment.pose.localizedName, bundle: .main)
Text(enrollment.pose.localizedName)
.font(Onyx.Font.headline)
Text(enrollment.seesFace ? "lock.enroll.ready" : "lock.enroll.noFace")