v0.283.0: apps go off-site by themselves (decision 50) with a size warning; a Stop holds during a backup (R-721); page slips (R-724/R-725)
gates / gates (push) Successful in 25s

Red-proofs RP31-RP38. MinAgent 0.131.0 (unchanged).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-30 10:31:55 +02:00
parent 1cfb1244d6
commit 6be6c53e29
38 changed files with 3097 additions and 46 deletions
@@ -224,6 +224,37 @@ func (s *Server) offboxToggleHandler(w http.ResponseWriter, r *http.Request) {
offboxRedirect(w, r, "flash.offbox.app_setting_updated", false)
}
// offboxEnableAllHandler (decision 50): the one press that puts every installed app that is not yet
// off-site into the off-site copy. Redirects back to the page it came from (the remote or the apps page).
func (s *Server) offboxEnableAllHandler(w http.ResponseWriter, r *http.Request) {
off := s.appsWithoutOffbox()
if err := s.settings.EnableOffboxFor(off); err != nil {
offboxRedirect(w, r, "flash.offbox.save_failed", true)
return
}
s.logger.Printf("[INFO] [web] off-site switched ON for %d app(s) by the household's one press: %v", len(off), off)
s.reportTriggerNow()
offboxRedirect(w, r, "flash.offbox.enabled_all", false)
}
// offboxOfferDismissHandler records „Nem most" — the offer is not shown again.
func (s *Server) offboxOfferDismissHandler(w http.ResponseWriter, r *http.Request) {
if err := s.settings.DismissOffboxOffer(); err != nil {
offboxRedirect(w, r, "flash.offbox.save_failed", true)
return
}
offboxRedirect(w, r, "flash.offbox.app_setting_updated", false)
}
// appsWithoutOffbox: the installed apps (off-site-selectable, as the page lists them) that are not off-site.
func (s *Server) appsWithoutOffbox() []string {
var names []string
for _, a := range s.buildOffboxApps() {
names = append(names, a.Name)
}
return s.settings.AppsWithoutOffbox(names)
}
// offboxRunHandler triggers an off-box backup now (async — it can run for minutes).
func (s *Server) offboxRunHandler(w http.ResponseWriter, r *http.Request) {
if s.backupMgr == nil || !s.backupMgr.OffboxConfigured() {