powerful but friendly backup program that runs in your tray, powered by restic devins.page/restray
go restic system-tray
2

Configure Feed

Select the types of activity you want to include in your feed.

fix: attempt recover connection when unreachable

intergrav (Jun 28, 2026, 11:13 PM EDT) 0c2eb742 adcb2322

+25 -1
+25 -1
tray.go
··· 99 99 return false 100 100 } 101 101 102 + func unreachableRecovered(cfg Config) bool { 103 + profileMu.Lock() 104 + var unreachable []int 105 + for i, p := range profileStates { 106 + if p.errMsg == "" && p.repoErr != "" { 107 + unreachable = append(unreachable, i) 108 + } 109 + } 110 + profileMu.Unlock() 111 + 112 + for _, i := range unreachable { 113 + if i < len(cfg.Profile) && repoStatus(cfg.Profile[i]).errMsg == "" { 114 + return true 115 + } 116 + } 117 + return false 118 + } 119 + 102 120 func onReady() { 103 121 firstLaunch := !fileExists(configPath()) 104 122 setIconAnimated("idle") ··· 449 467 profileItems[i].Show() 450 468 } 451 469 452 - if ps.errMsg == "" && ps.repoErr == "" && prof.Schedule.Cron != "" { 470 + if ps.errMsg == "" && prof.Schedule.Cron != "" { 453 471 idx := i 454 472 eid, err := sched.AddFunc(prof.Schedule.Cron, func() { 455 473 current := loadConfig() ··· 550 568 continue 551 569 } 552 570 } 571 + 572 + if !isAnyBusy() && unreachableRecovered(loadConfig()) { 573 + applyConfig() 574 + continue 575 + } 576 + 553 577 updateAllStatusItems(loadConfig()) 554 578 } 555 579 }()