{{define "app_overview"}}{{template "top" .}} {{if .Flash}}{{end}} {{if .FlashErr}}{{end}} {{template "appnav" .}} {{template "accountreviewbanner" .}} {{with .Overview}}

{{.VerdictLabel}}

{{$.StatusCopy.ObservedLabel}}

{{if not .Deployment.HasRoutes}}

{{$.StatusCopy.NoInstances}}

{{else if not .Deployment.HasReportable}}

—

{{else if not .Deployment.HasReportedVersion}}

{{$.StatusCopy.NoVersion}}

{{else}}

{{.Deployment.ReportingText}}

{{if .Deployment.UnknownCount}}

{{$.StatusCopy.Partial}}

{{end}} {{end}}
{{end}} {{template "flow" .}} {{with .Overview}}
{{/* "Running" answers health, not headcount: the count this tile used to show was byte-for-byte the Web addresses count beside it, under a name ("Machines") that also implied one computer per row when several rows routinely share a box. */}}

Running

{{if eq .InstanceTotal 0}}—{{else if eq .InstanceExpected 0}}Served{{else if .MetricsUnavailable}}?{{else if eq .InstanceCounted 0}}?{{else}}{{.InstanceReporting}} of {{.InstanceCounted}}{{end}}

{{if eq .InstanceTotal 0}}nothing running yet{{else if eq .InstanceExpected 0}}static — the platform serves it, nothing to run{{else if .MetricsUnavailable}}no data right now{{else if eq .InstanceCounted 0}}no readings for {{.InstanceNoReadings}} copies — stamp their units to see health{{else}}copies reporting{{if .InstanceAsleep}} · {{.InstanceAsleep}} asleep{{end}}{{if .InstanceNoReadings}} · {{.InstanceNoReadings}} no readings{{end}}{{end}}

Resources

{{pct .CPUSum}} · {{bytesOrDash .MemSum}}

{{if .CPUSum}}CPU · memory, from the copies responding{{else if .MetricsUnavailable}}no data right now{{else}}no recent data{{end}}

{{/* Sizes come from the routes, not the metrics sweep: a sleeping copy's database is still on disk. Hidden for apps that run nothing. */}} {{if or .DBSizeSum .InstanceExpected}}

Database

{{bytesOrDash .DBSizeSum}}

{{if .DBSizeSum}}on disk, including copies that are asleep{{else}}no size reported yet{{end}}

{{end}}

Web addresses

{{.DomainTotal}}

{{if eq .DomainTotal 0}}one appears after your first deploy{{else if .DomainAttention}}{{.DomainAttention}} need{{if eq .DomainAttention 1}}s{{end}} attention{{else}}DNS & certs OK{{end}}

{{$.DeploymentsCopy.History}}

{{.ReleaseCount}}{{if .ReleasesCapped}}+{{end}}

{{if .LatestVersion}}latest {{.LatestVersion}}{{else}}nothing shipped yet{{end}}

{{end}} {{/* The legacy safety-delay flag: legacy-path-only, exactly as ladder.html skips this same block in pipeline mode. A pipelined app's bake story is its own per-channel windows (spec §3) — this global on/off line would dangle or actively mislead once ladder.html stopped offering the control it points at. */}} {{if not .Detail.Pipeline}} {{with .Detail.Production}} {{if .Err}}

Safety delay: this app's setting can't be read right now, so the delay stays on. Repair it on the {{$.DeploymentsCopy.History}} tab.

{{else if .On}}

Safety delay: on — new versions wait before going live. Managed on {{$.DeploymentsCopy.History}}.

{{else if .TurningOff}}

Safety delay: turning off — in effect until ~{{fmtTime .EffectiveAt}}.

{{else}}

Safety delay: off — new versions go live as soon as they're promoted.{{if .Nudge}} {{icon "triangle-alert"}} This app looks like it's serving real users — consider turning it on, on {{$.DeploymentsCopy.History}}.{{end}}

{{end}} {{end}} {{end}} {{template "pending" .}} {{if .Events}}

Recent activity

All activity

{{end}} {{if not .CanPromote}}

Deploys are unavailable on this console — it has no signing key.

{{end}} {{template "bottom" .}}{{end}}