{{ if or .FromFailed .ToFailed }}
{{ template "alert" (dict "Type" "warning" "Message" (printf "We couldn't fetch details for %s%s%s. Showing what we have." (or (and .FromFailed .FromTag) "") (or (and .FromFailed .ToFailed) " and ") (or (and .ToFailed .ToTag) ""))) }}
{{ end }}
{{ if and (not .FromFailed) (not .ToFailed) (eq .FromDigest .ToDigest) }}
{{ template "alert" (dict "Type" "info" "Message" "These manifests are identical. No layers or vulnerabilities changed.") }}
{{ end }}
{{ if .HasVulnData }}
{{ if gt .Summary.VulnFixedCount 0 }}
{{ end }}
{{ if gt .Summary.VulnNewCount 0 }}
{{ end }}
{{ end }}
{{ if .IsMultiArch }}
{{ end }}
{{ template "diff-content" . }}
{{ .FromTag }} {{ .ToTag }}
Size
{{ humanizeByteDelta .Summary.SizeDelta }}
Layers
{{ .Summary.LayerCountFrom }} → {{ .Summary.LayerCountTo }}
Fixed
-{{ .Summary.VulnFixedCount }} {{ pluralize .Summary.VulnFixedCount "vuln" "vulns" }}
{{ if gt .Summary.VulnFixedBySev.Critical 0 }}{{ .Summary.VulnFixedBySev.Critical }} Critical {{ end }}
{{ if gt .Summary.VulnFixedBySev.High 0 }}{{ .Summary.VulnFixedBySev.High }} High {{ end }}
{{ if gt .Summary.VulnFixedBySev.Medium 0 }}{{ .Summary.VulnFixedBySev.Medium }} Medium {{ end }}
{{ if gt .Summary.VulnFixedBySev.Low 0 }}{{ .Summary.VulnFixedBySev.Low }} Low{{ end }}
New
+{{ .Summary.VulnNewCount }} {{ pluralize .Summary.VulnNewCount "vuln" "vulns" }}
{{ if gt .Summary.VulnNewBySev.Critical 0 }}{{ .Summary.VulnNewBySev.Critical }} Critical {{ end }}
{{ if gt .Summary.VulnNewBySev.High 0 }}{{ .Summary.VulnNewBySev.High }} High {{ end }}
{{ if gt .Summary.VulnNewBySev.Medium 0 }}{{ .Summary.VulnNewBySev.Medium }} Medium {{ end }}
{{ if gt .Summary.VulnNewBySev.Low 0 }}{{ .Summary.VulnNewBySev.Low }} Low{{ end }}