feat(app): Debug-Logs-an-Bridge Toggle (Settings → Protokoll, default aus)
Stefan: "haben wir einen Menupunkt logging? sonst muellen wir uns dicht wenns funktioniert und wir das logging im moment nicht brauchen" Stimmt. reportAppDebug() schickt aktuell IMMER an Bridge, auch wenn gar nicht debuggt wird. Bei armed Wake-Word + Pipeline-Logs sind das schnell ein Dutzend Eintraege pro Wake-Trigger. Loesung: separater Settings-Toggle "Debug-Logs an Bridge" mit eigenem AsyncStorage-Key (aria_debug_logs_to_bridge), Default AUS. - logger.ts: _debugLogsToBridge flag + isDebugLogsToBridge() / setDebugLogsToBridge(). initLogger() laedt den Wert. reportAppDebug() prueft das Flag und schickt nur wenn AN. - SettingsScreen: neuer Toggle direkt unter Verbose-Logging, orange (#FF9500) damit er als "Power-User-Option" erkennbar ist, mit Erklaerungs-Hinweis dass nur Info-Logs gefiltert werden, Crash-Reports (Errors via reportAppError) gehen weiterhin IMMER. Workflow: - Default-User: Toggle aus, kein Traffic, kein Disk-Schreiben - Stefan beim Debuggen: Toggle an, testet die App, schaut Logs via curl /api/app-log?lines=N, schaltet wieder aus APK neu bauen erforderlich. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,7 +62,7 @@ import MemoryBrowser from '../components/MemoryBrowser';
|
||||
import TriggerBrowser from '../components/TriggerBrowser';
|
||||
import SkillBrowser from '../components/SkillBrowser';
|
||||
import OAuthBrowser from '../components/OAuthBrowser';
|
||||
import { isVerboseLogging, setVerboseLogging } from '../services/logger';
|
||||
import { isVerboseLogging, setVerboseLogging, isDebugLogsToBridge, setDebugLogsToBridge } from '../services/logger';
|
||||
import {
|
||||
isWakeReadySoundEnabled,
|
||||
setWakeReadySoundEnabled,
|
||||
@@ -160,6 +160,7 @@ const SettingsScreen: React.FC = () => {
|
||||
const [apkCacheInfo, setApkCacheInfo] = useState<{count: number, totalMB: number} | null>(null);
|
||||
const [ttsCacheInfo, setTtsCacheInfo] = useState<{count: number, totalMB: number} | null>(null);
|
||||
const [verboseLogging, setVerboseLoggingState] = useState<boolean>(isVerboseLogging());
|
||||
const [debugLogsToBridge, setDebugLogsToBridgeState] = useState<boolean>(isDebugLogsToBridge());
|
||||
const [ttsSpeed, setTtsSpeed] = useState<number>(TTS_SPEED_DEFAULT);
|
||||
const [wakeKeyword, setWakeKeyword] = useState<string>(DEFAULT_KEYWORD);
|
||||
const [wakeStatus, setWakeStatus] = useState<string>('');
|
||||
@@ -1916,6 +1917,27 @@ const SettingsScreen: React.FC = () => {
|
||||
Warnungen und Fehler bleiben immer aktiv. Bei Bedarf einschalten zum
|
||||
Debuggen via adb logcat.
|
||||
</Text>
|
||||
|
||||
{/* Debug-Logs an Bridge: scharf nur wenn aktiv gebraucht */}
|
||||
<View style={[styles.toggleRow, {marginTop: 12, borderTopWidth: 1, borderTopColor: '#1E1E2E', paddingTop: 12}]}>
|
||||
<Text style={styles.toggleLabel}>Debug-Logs an Bridge</Text>
|
||||
<Switch
|
||||
value={debugLogsToBridge}
|
||||
onValueChange={(v) => {
|
||||
setDebugLogsToBridge(v);
|
||||
setDebugLogsToBridgeState(v);
|
||||
}}
|
||||
trackColor={{ false: '#3A3A52', true: '#FF9500' }}
|
||||
thumbColor={debugLogsToBridge ? '#FFFFFF' : '#666680'}
|
||||
/>
|
||||
</View>
|
||||
<Text style={styles.toggleHint}>
|
||||
Schickt detaillierte Diagnose-Logs (Wake-Word-Pipeline, Audio-Focus,
|
||||
Background-Service) per RVS an die Bridge — abrufbar via
|
||||
`curl /api/app-log?lines=N` ohne ADB. Default AUS damit kein
|
||||
unnoetiger Traffic + Disk-Schreiben. Crash-Reports (Errors) gehen
|
||||
IMMER, dieser Toggle betrifft nur Info-Logs.
|
||||
</Text>
|
||||
</View>
|
||||
|
||||
<View style={styles.card}>
|
||||
|
||||
Reference in New Issue
Block a user