From 54390c456c070747746d8468fb1f053fc2101502 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Fri, 27 Feb 2026 20:04:28 +0100 Subject: [PATCH] move optional config from app info page to deploy/settings page Users couldn't find metadata provider fields (IGDB, ScreenScraper, etc.) on the app info page. Move them to the deploy page where all other settings (integrations, geo-restriction) already live. Co-Authored-By: Claude Opus 4.6 --- controller/internal/web/handlers.go | 34 +++++--- .../internal/web/templates/app_info.html | 79 ------------------- controller/internal/web/templates/deploy.html | 79 +++++++++++++++++++ 3 files changed, 100 insertions(+), 92 deletions(-) diff --git a/controller/internal/web/handlers.go b/controller/internal/web/handlers.go index 78da3cd..e46df6f 100644 --- a/controller/internal/web/handlers.go +++ b/controller/internal/web/handlers.go @@ -418,6 +418,23 @@ func (s *Server) deployHandler(w http.ResponseWriter, r *http.Request, name stri data["GeoGlobalCountries"] = []string{} data["GeoAppOverrideCountries"] = []string{} } + + // Optional config (metadata providers, etc.) + if meta.HasOptionalConfig() { + data["HasOptionalConfig"] = true + data["OptionalConfig"] = meta.OptionalConfig + optValues := make(map[string]string) + if decryptedEnv != nil { + for _, group := range meta.OptionalConfig { + for _, field := range group.Fields { + if val, ok := decryptedEnv[field.EnvVar]; ok { + optValues[field.EnvVar] = val + } + } + } + } + data["CurrentValues"] = optValues + } } // Memory info for deploy page (only for non-deployed apps) @@ -482,28 +499,19 @@ func (s *Server) appDetailHandler(w http.ResponseWriter, r *http.Request, slug s return } - // Load current optional config values from app.yaml - currentValues := make(map[string]string) - if appCfg := s.stackMgr.LoadAppConfigByName(found.Name); appCfg != nil { - for k, v := range appCfg.Env { - currentValues[k] = v - } - } - // Determine effective subdomain (stored env > metadata fallback) effectiveSubdomain := found.Meta.Subdomain - if sd, ok := currentValues["SUBDOMAIN"]; ok && sd != "" { - effectiveSubdomain = sd + if appCfg := s.stackMgr.LoadAppConfigByName(found.Name); appCfg != nil { + if sd, ok := appCfg.Env["SUBDOMAIN"]; ok && sd != "" { + effectiveSubdomain = sd + } } data := s.baseData("stacks", found.Meta.DisplayName) data["Stack"] = found data["Meta"] = found.Meta data["AppInfo"] = found.Meta.AppInfo - data["OptionalConfig"] = found.Meta.OptionalConfig - data["CurrentValues"] = currentValues data["HasAppInfo"] = found.Meta.HasAppInfo() - data["HasOptionalConfig"] = found.Meta.HasOptionalConfig() data["EffectiveSubdomain"] = effectiveSubdomain s.executeTemplate(w, r, "app_info", data) diff --git a/controller/internal/web/templates/app_info.html b/controller/internal/web/templates/app_info.html index 6358046..f610566 100644 --- a/controller/internal/web/templates/app_info.html +++ b/controller/internal/web/templates/app_info.html @@ -101,84 +101,5 @@ {{end}} -{{if .HasOptionalConfig}} -
-

Opcionális beállítások

- {{range .OptionalConfig}} -
-

{{.Group}}

- {{if .Description}}

{{.Description}}

{{end}} - -
- {{range .Fields}} -
- - {{if .HelpText}}

{{.HelpText}}

{{end}} - {{if .HelpURL}}

Regisztrációs útmutató ↗

{{end}} - -
- {{end}} -
-
- {{end}} - -
- - -
-
- - -{{end}} - {{template "layout_end" .}} {{end}} diff --git a/controller/internal/web/templates/deploy.html b/controller/internal/web/templates/deploy.html index 9a16041..540a46c 100644 --- a/controller/internal/web/templates/deploy.html +++ b/controller/internal/web/templates/deploy.html @@ -402,6 +402,85 @@ {{end}} + {{if .HasOptionalConfig}} +
+

Opcionális beállítások

+ {{range .OptionalConfig}} +
+

{{.Group}}

+ {{if .Description}}

{{.Description}}

{{end}} + +
+ {{range .Fields}} +
+ + {{if .HelpText}}

{{.HelpText}}

{{end}} + {{if .HelpURL}}

Regisztrációs útmutató ↗

{{end}} + +
+ {{end}} +
+
+ {{end}} + +
+ + +
+
+ + + {{end}} + {{if and (not .AlreadyDeployed) .MemoryInfo}} {{with .MemoryInfo}} {{if .Available}}