{{ define "diff" }} {{ template "head" . }} {{ template "meta" .Meta }} {{ template "nav" . }}
{{ 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 }}

{{ .FromTag }} {{ .ToTag }}

Size
{{ humanizeByteDelta .Summary.SizeDelta }}
Layers
{{ .Summary.LayerCountFrom }} → {{ .Summary.LayerCountTo }}
{{ if .HasVulnData }} {{ if gt .Summary.VulnFixedCount 0 }}
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 }}
{{ end }} {{ if gt .Summary.VulnNewCount 0 }}
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 }}
{{ end }} {{ end }}
{{ if .IsMultiArch }}
{{ end }}
{{ template "diff-content" . }}
{{ template "footer" . }} {{ end }}