Das Aufnahmesymbol kam vom Mixer, nicht vom Pegel

Gemessen über kAudioProcessPropertyIsRunningInput: mit laufendem Mixer nimmt
Onyx auf, ohne ihn nicht. Ein Process Tap ist für macOS eine Tonaufnahme —
auch wenn damit nur die Lautstärke geregelt wird. Solange der Mixer Chrome und
Firefox abgreift, steht das orange Symbol in der Leiste.

Der Mixer stand seit der Fehlersuche am Wochenende auf „automatisch starten",
deshalb war es dauerhaft. Das Häkchen steht jetzt wieder aus.

Ein Hinweis unter dem Häkchen sagt das jetzt, wo die Entscheidung fällt: wer
das Symbol ohne Erklärung sieht, sucht den Fehler bei sich oder hält die App
für unsauber.

Dazu ein echter Fund an derselben Stelle: der Mikrofonpegel hing an
`onDisappear` der View — und das bleibt bei einem NSPopover aus. Dessen
Controller lebt nach dem Schließen weiter, die View verschwindet nie aus der
Hierarchie. Die Messung wäre also beim ersten Öffnen angegangen und nie wieder
aus. Sie hängt jetzt am Popover selbst: `MenuBarModule` bekommt
`popoverDidOpen`/`popoverDidClose`, gemeldet auch dann, wenn das Popover von
selbst zugeht — beim Wechsel in eine andere App etwa.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-08-14 15:20:07 +02:00
parent c94c6166f5
commit ee848b86cc
5 changed files with 93 additions and 6 deletions

View File

@@ -196,6 +196,22 @@
}
}
},
"mixer.recordingHint": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Solange der Mixer läuft, zeigt macOS das orange Aufnahmesymbol: Ton abgreifen heißt für das System aufnehmen, auch wenn nur die Lautstärke geregelt wird."
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "While the mixer runs, macOS shows the orange recording dot: tapping audio counts as recording to the system, even when only the volume is adjusted."
}
}
}
},
"mixer.release": {
"localizations": {
"de": {

View File

@@ -86,11 +86,10 @@ public struct MixerView: View {
}
.frame(maxWidth: .infinity, alignment: .leading)
.animation(Onyx.Motion.value, value: mixer.groups.count)
// Die Pegel laufen nur, solange die Ansicht sichtbar ist. Der
// Mikrofonpegel schaltet dabei den orangen Punkt an ein Messgerät,
// das im Hintergrund weiterläuft, wäre hier das Falsche.
.onAppear { system.levels.addConsumer() }
.onDisappear { system.levels.removeConsumer() }
// Kein `onAppear` für die Pegel: die Messung hängt am Popover, nicht
// an dieser View. `onDisappear` bleibt bei einem NSPopover aus, und
// ein Mikrofon, das nur beim Öffnen an- und nie wieder ausgeht, ist
// schlimmer als eines, das gar nicht misst.
}
}
@@ -107,6 +106,17 @@ extension MixerView {
}
.toggleStyle(.checkbox)
.controlSize(.small)
// Der Hinweis gehört hierher, weil hier die Entscheidung fällt.
//
// Ein Tap ist für macOS eine Tonaufnahme auch wenn nur die
// Lautstärke geregelt wird. Solange der Mixer läuft, steht deshalb das
// orange Aufnahmesymbol in der Leiste. Wer das ohne Erklärung sieht,
// sucht den Fehler bei sich oder hält die App für unsauber.
Text("mixer.recordingHint", bundle: .module)
.font(Onyx.Font.metricSmall)
.foregroundStyle(Onyx.Color.textTertiary)
.fixedSize(horizontal: false, vertical: true)
}
}