diff --git a/templates/pages/bold-marketing.tmpl b/templates/pages/bold-marketing.tmpl
index fb4a3667df..a743ec3b83 100644
--- a/templates/pages/bold-marketing.tmpl
+++ b/templates/pages/bold-marketing.tmpl
@@ -1296,15 +1296,71 @@
- {{range .LatestRelease.Attachments}}
-
- {{svg "octicon-download" 16}}
- {{.Name}}
- {{FileSize .Size}}
-
+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}}
+ {{range $att := .LatestRelease.Attachments}}
+ {{$name := StringUtils.ToLower $att.Name}}
+ {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}}
+ {{$androidFiles = Append $androidFiles $att}}
+ {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}}
+ {{$iosFiles = Append $iosFiles $att}}
+ {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}}
+ {{$windowsFiles = Append $windowsFiles $att}}
+ {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}}
+ {{$macosFiles = Append $macosFiles $att}}
+ {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}}
+ {{$linuxFiles = Append $linuxFiles $att}}
+ {{else}}
+ {{$otherFiles = Append $otherFiles $att}}
+ {{end}}
{{end}}
+ {{if $windowsFiles}}
+
+
{{svg "octicon-device-desktop" 16}} Windows
+
+ {{end}}
+ {{if $macosFiles}}
+
+
{{svg "octicon-device-desktop" 16}} macOS
+
+
+ {{end}}
+ {{if $linuxFiles}}
+
+
{{svg "octicon-terminal" 16}} Linux
+
+
+ {{end}}
+ {{if $androidFiles}}
+
+
{{svg "octicon-device-mobile" 16}} Android
+
+
+ {{end}}
+ {{if $iosFiles}}
+
+
{{svg "octicon-device-mobile" 16}} iOS
+
+
+ {{end}}
+ {{if $otherFiles}}
+
+
{{svg "octicon-file" 16}} Other
+
+
+ {{end}}
{{end}}
diff --git a/templates/pages/minimalist-docs.tmpl b/templates/pages/minimalist-docs.tmpl
index 3f9b7a6229..096c7a9b34 100644
--- a/templates/pages/minimalist-docs.tmpl
+++ b/templates/pages/minimalist-docs.tmpl
@@ -1179,15 +1179,71 @@
- {{range .LatestRelease.Attachments}}
-
- {{svg "octicon-download" 16}}
- {{.Name}}
- {{FileSize .Size}}
-
+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}}
+ {{range $att := .LatestRelease.Attachments}}
+ {{$name := StringUtils.ToLower $att.Name}}
+ {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}}
+ {{$androidFiles = Append $androidFiles $att}}
+ {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}}
+ {{$iosFiles = Append $iosFiles $att}}
+ {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}}
+ {{$windowsFiles = Append $windowsFiles $att}}
+ {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}}
+ {{$macosFiles = Append $macosFiles $att}}
+ {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}}
+ {{$linuxFiles = Append $linuxFiles $att}}
+ {{else}}
+ {{$otherFiles = Append $otherFiles $att}}
{{end}}
+ {{end}}
+ {{if $windowsFiles}}
+
+
{{svg "octicon-device-desktop" 14}} Windows
+
+ {{end}}
+ {{if $macosFiles}}
+
+
{{svg "octicon-device-desktop" 14}} macOS
+
+
+ {{end}}
+ {{if $linuxFiles}}
+
+
{{svg "octicon-terminal" 14}} Linux
+
+
+ {{end}}
+ {{if $androidFiles}}
+
+
{{svg "octicon-device-mobile" 14}} Android
+
+
+ {{end}}
+ {{if $iosFiles}}
+
+
{{svg "octicon-device-mobile" 14}} iOS
+
+
+ {{end}}
+ {{if $otherFiles}}
+
+
{{svg "octicon-file" 14}} Other
+
+
+ {{end}}
{{end}}
diff --git a/templates/pages/open-source-hero.tmpl b/templates/pages/open-source-hero.tmpl
index da715f42b4..76683277d4 100644
--- a/templates/pages/open-source-hero.tmpl
+++ b/templates/pages/open-source-hero.tmpl
@@ -1171,15 +1171,71 @@
Download v{{.LatestReleaseTag}}
Get the latest release
-
- {{range .LatestRelease.Attachments}}
-
- {{svg "octicon-download" 16}}
- {{.Name}}
- {{FileSize .Size}}
-
+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}}
+ {{range $att := .LatestRelease.Attachments}}
+ {{$name := StringUtils.ToLower $att.Name}}
+ {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}}
+ {{$androidFiles = Append $androidFiles $att}}
+ {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}}
+ {{$iosFiles = Append $iosFiles $att}}
+ {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}}
+ {{$windowsFiles = Append $windowsFiles $att}}
+ {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}}
+ {{$macosFiles = Append $macosFiles $att}}
+ {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}}
+ {{$linuxFiles = Append $linuxFiles $att}}
+ {{else}}
+ {{$otherFiles = Append $otherFiles $att}}
+ {{end}}
{{end}}
+ {{if $windowsFiles}}
+
+
{{svg "octicon-device-desktop" 16}} Windows
+
+ {{end}}
+ {{if $macosFiles}}
+
+
{{svg "octicon-device-desktop" 16}} macOS
+
+
+ {{end}}
+ {{if $linuxFiles}}
+
+
{{svg "octicon-terminal" 16}} Linux
+
+
+ {{end}}
+ {{if $androidFiles}}
+
+
{{svg "octicon-device-mobile" 16}} Android
+
+
+ {{end}}
+ {{if $iosFiles}}
+
+
{{svg "octicon-device-mobile" 16}} iOS
+
+
+ {{end}}
+ {{if $otherFiles}}
+
+
{{svg "octicon-file" 16}} Other
+
+
+ {{end}}
{{end}}
diff --git a/templates/pages/saas-conversion.tmpl b/templates/pages/saas-conversion.tmpl
index d02bc6039d..cc898c1c72 100644
--- a/templates/pages/saas-conversion.tmpl
+++ b/templates/pages/saas-conversion.tmpl
@@ -1297,15 +1297,71 @@
Download v{{.LatestReleaseTag}}
Get the latest release
-
- {{range .LatestRelease.Attachments}}
-
- {{svg "octicon-download" 16}}
- {{.Name}}
- {{FileSize .Size}}
-
+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}}
+ {{range $att := .LatestRelease.Attachments}}
+ {{$name := StringUtils.ToLower $att.Name}}
+ {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}}
+ {{$androidFiles = Append $androidFiles $att}}
+ {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}}
+ {{$iosFiles = Append $iosFiles $att}}
+ {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}}
+ {{$windowsFiles = Append $windowsFiles $att}}
+ {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}}
+ {{$macosFiles = Append $macosFiles $att}}
+ {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}}
+ {{$linuxFiles = Append $linuxFiles $att}}
+ {{else}}
+ {{$otherFiles = Append $otherFiles $att}}
+ {{end}}
{{end}}
+ {{if $windowsFiles}}
+
+
{{svg "octicon-device-desktop" 16}} Windows
+
+ {{end}}
+ {{if $macosFiles}}
+
+
{{svg "octicon-device-desktop" 16}} macOS
+
+
+ {{end}}
+ {{if $linuxFiles}}
+
+
{{svg "octicon-terminal" 16}} Linux
+
+
+ {{end}}
+ {{if $androidFiles}}
+
+
{{svg "octicon-device-mobile" 16}} Android
+
+
+ {{end}}
+ {{if $iosFiles}}
+
+
{{svg "octicon-device-mobile" 16}} iOS
+
+
+ {{end}}
+ {{if $otherFiles}}
+
+
{{svg "octicon-file" 16}} Other
+
+
+ {{end}}
{{end}}