v0.282.0: after_setup (the app's own sign-up switch), close sign-up now (decision 49), probes read lists + done_status (R-715)
gates / gates (push) Successful in 27s

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-29 16:19:12 +02:00
parent 6fc3059167
commit 4110da50e9
25 changed files with 1864 additions and 36 deletions
+6
View File
@@ -774,6 +774,12 @@ func (s *Server) appDetailHandler(w http.ResponseWriter, r *http.Request, slug s
// v0.280.0 (decision 46): the setup gate's card, while the gate stands.
data["SetupGateClosed"] = found.Deployed && found.AppConfig != nil && found.AppConfig.SetupGate.Closed()
data["SetupGateHasProbe"] = found.Meta.SetupDoneProbe != nil && found.Meta.SetupDoneProbe.URL != ""
// v0.282.0 (decision 49): "close sign-up now" on an app installed before the rule; the app's own switch.
if s.stackMgr != nil {
data["CloseSignupOffered"] = s.stackMgr.CloseSignupOffered(found.Name)
}
data["SignupNative"] = found.Meta.AfterSetup != nil && len(found.Meta.AfterSetup.Env) > 0
data["SignupNativeFailed"] = found.AppConfig != nil && found.AppConfig.AfterSetup != nil && !found.AppConfig.AfterSetup.OK
// v0.281.0 (decision 47): the sign-up card — closed, or open for the household's 15 minutes.
if s.stackMgr != nil {
blocked, until := s.stackMgr.SignupBlocked(found.Name)