Dashboard layout: Apps card header (R-909), launcher header wraps on a phone (R-907), overflow counted after the page filter (R-906)

- Apps card: title row (logo top-aligned, name, address cut with an ellipsis and full in title) over a wrapping
  .stack-tags row; the tags no longer share a space-between row with the name.
- Phone (768px block): .page-header wraps; the share button drops to its own line, text whole.
- GetBannerAlerts(page, lang): the layout's filter before the cap; baseData and /monitoring use it.
- Tests: TestStackCardHeaderLayout, TestR907_PageHeaderWrapsOnAPhone, TestR906_* (all red against 05e12921).
- No Hungarian string changed. The three stacks parity fixtures are re-captured in the next commit
  (this commit alone fails TestI18nParity on them; both are pushed together).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012qRErfCoiTkvDK9N5XHbzb
This commit is contained in:
2026-10-08 14:32:06 +02:00
parent 05e129267a
commit d5f2e47ea1
8 changed files with 330 additions and 9 deletions
+2 -2
View File
@@ -139,7 +139,7 @@ func (s *Server) baseData(page, title string) map[string]interface{} {
if s.alertManager != nil {
// Hungarian here; addLanguageData re-renders the set in the request's language, because
// baseData has no request and every page goes through executeTemplate (v0.252.0, R-557).
data["Alerts"] = s.alertManager.GetAlerts(i18n.Default)
data["Alerts"] = s.alertManager.GetBannerAlerts(page, i18n.Default)
}
return data
}
@@ -917,7 +917,7 @@ func (s *Server) monitoringHandler(w http.ResponseWriter, r *http.Request) {
data["StorageBars"] = s.buildStorageBars(s.langFor(r))
if s.alertManager != nil {
data["Alerts"] = s.alertManager.GetAlerts(s.langFor(r))
data["Alerts"] = s.alertManager.GetBannerAlerts("monitoring", s.langFor(r))
data["DiskWarnings"] = s.alertManager.GetInlineAlerts("monitoring", s.langFor(r))
}