From 904e787ddad29b1d60d52510858de09ec0bc525c Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Tue, 23 Jun 2026 12:01:12 +0200 Subject: [PATCH] =?UTF-8?q?v0.77.0:=20per-app=20open=5Fpath=20for=20the=20?= =?UTF-8?q?Megnyit=C3=A1s=20link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Optional .felhom.yml open_path appended to the open-app URL in dashboard/deploy/app-info (via .Meta.OpenPath). Empty=bare root. Fixes apps whose UI isn't at / (gokapi /admin, ghost /ghost/). Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 9 +++++++++ controller/internal/stacks/metadata.go | 3 +++ controller/internal/web/templates/app_info.html | 2 +- controller/internal/web/templates/dashboard.html | 2 +- controller/internal/web/templates/deploy.html | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5208b22..73f08da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## Changelog +### v0.77.0 — per-app open_path for the "Megnyitás" link (2026-06-23) +- The dashboard/deploy/app-info **"Megnyitás"** (open) button was hardcoded to the bare subdomain root + `https://{sub}.{domain}` for every app. Apps whose UI isn't at `/` (e.g. Gokapi redirects `/` away; + Ghost's admin is at `/ghost/`) opened to the wrong place. +- New optional `open_path` field on `Metadata` (`internal/stacks/metadata.go`, `.felhom.yml`) appended to + the URL in all three link sites (`dashboard.html`, `deploy.html`, `app_info.html` via `.Meta.OpenPath`). + Empty = bare root (unchanged for the other 50 apps). No handler changes (all three templates already + carry `.Meta`). Catalog: `gokapi` → `/admin`, `ghost` → `/ghost/`. + ### v0.76.0 — campaign-#3 hardening: settings recovery, restore-name validation, quiesce-marker quarantine (2026-06-22) Three controller findings from chaos campaign #3, all small, all controller-side. diff --git a/controller/internal/stacks/metadata.go b/controller/internal/stacks/metadata.go index ea18472..c58c1c9 100644 --- a/controller/internal/stacks/metadata.go +++ b/controller/internal/stacks/metadata.go @@ -16,6 +16,9 @@ type Metadata struct { Category string `yaml:"category" json:"category"` Subdomain string `yaml:"subdomain" json:"subdomain"` Slug string `yaml:"slug" json:"slug"` + // OpenPath is appended to the app's public URL for the "Megnyitás" (open) link, for apps whose UI + // isn't at "/" (e.g. Gokapi → "/admin"). Empty = bare root. Must start with "/". + OpenPath string `yaml:"open_path,omitempty" json:"open_path,omitempty"` Resources ResourceHints `yaml:"resources" json:"resources"` DeployFields []DeployField `yaml:"deploy_fields" json:"deploy_fields"` AppInfo AppInfo `yaml:"app_info" json:"app_info"` diff --git a/controller/internal/web/templates/app_info.html b/controller/internal/web/templates/app_info.html index 42719d9..5df63e1 100644 --- a/controller/internal/web/templates/app_info.html +++ b/controller/internal/web/templates/app_info.html @@ -10,7 +10,7 @@ {{if .Stack.Deployed}} {{stateLabel .Stack.State}} {{if .Stack.Orphaned}}Elavult{{end}} - {{if .EffectiveSubdomain}}Megnyitás ↗{{end}} + {{if .EffectiveSubdomain}}Megnyitás ↗{{end}} Napló {{if .Stack.Orphaned}} diff --git a/controller/internal/web/templates/dashboard.html b/controller/internal/web/templates/dashboard.html index 7a87afb..a54caa5 100644 --- a/controller/internal/web/templates/dashboard.html +++ b/controller/internal/web/templates/dashboard.html @@ -170,7 +170,7 @@ {{else}} {{if isOperational .State}} {{$subdomain := index $.Subdomains .Name}} - {{if $subdomain}}Megnyitás ↗{{end}} + {{if $subdomain}}Megnyitás ↗{{end}} {{else}} diff --git a/controller/internal/web/templates/deploy.html b/controller/internal/web/templates/deploy.html index 47c136f..f5507b9 100644 --- a/controller/internal/web/templates/deploy.html +++ b/controller/internal/web/templates/deploy.html @@ -15,7 +15,7 @@ {{end}} {{if and (isOperational .Stack.State) .EffectiveSubdomain}} - Megnyitás ↗ + Megnyitás ↗ {{end}} {{end}} ℹ️ Részletek