Resilience: LaunchAgent restarts BroV on crash; crashed Claude Code/Codex sessions get a resume button (optional auto); login and waiting status in the Claude/ChatGPT pills
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -228,6 +228,26 @@ struct SettingsView: View {
|
||||
// MARK: - General section
|
||||
|
||||
@ViewBuilder private var generalSection: some View {
|
||||
GroupBox("Надёжность") {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Toggle("Поднимать BroV, если он упал, и запускать при входе в систему", isOn: Binding(
|
||||
get: { UserDefaults.standard.bool(forKey: BroVLaunchAgent.enabledKey) },
|
||||
set: { on in
|
||||
UserDefaults.standard.set(on, forKey: BroVLaunchAgent.enabledKey)
|
||||
if on { BroVLaunchAgent.install(handOver: !BroVLaunchAgent.isManaged) }
|
||||
else if BroVLaunchAgent.isInstalled { BroVLaunchAgent.uninstall() }
|
||||
}))
|
||||
Text("Если выйти через меню, BroV не вернётся. Работает для копии в ~/Applications.")
|
||||
.font(.system(size: 11)).foregroundColor(.secondary)
|
||||
Toggle("Сразу поднимать упавшие сессии Claude Code и Codex", isOn: Binding(
|
||||
get: { UserDefaults.standard.bool(forKey: AgentWatch.autoKey) },
|
||||
set: { UserDefaults.standard.set($0, forKey: AgentWatch.autoKey) }))
|
||||
Text("Сессия считается упавшей, если её процесс пропал посреди работы. Без галочки в пилюле появится кнопка «поднять». Не чаще 2 раз за 10 минут.")
|
||||
.font(.system(size: 11)).foregroundColor(.secondary)
|
||||
}
|
||||
.padding(6)
|
||||
}
|
||||
|
||||
GroupBox("Звук") {
|
||||
VStack(alignment: .leading, spacing: 10) {
|
||||
Toggle("Включить звуки", isOn: $state.soundEnabled)
|
||||
|
||||
Reference in New Issue
Block a user