{% extends 'layout.html' %} {% block title %}Packages - {{ super() }}{% endblock %} {% block content %} {% macro downloads_badge(recent_count) %} {% if recent_count %} {% set n = recent_count %} {% if n >= 100000 %} 100k+ downloads {% elif n >= 50000 %} 50k+ downloads {% elif n >= 25000 %} 25k+ downloads {% elif n >= 10000 %} 10k+ downloads {% elif n >= 5000 %} 5k+ downloads {% elif n >= 2500 %} 2.5k+ downloads {% elif n >= 1000 %} 1k+ downloads {% endif %} {% endif %} {% endmacro %} {# `row` is a plain dict built in _latest_versions_query (name, displayname, version_string, icon_path, description, recent_download_count, archived); active/archived are split in the view. #} {% macro package_card(row, archived=false) %}
{% if selected_arch|default(None) %} {% else %} {% endif %} Icon

{{ row.displayname }} v{{ row.version_string }} {% if archived %} Archived {% endif %}

{% if not archived %} {{ downloads_badge(row.recent_download_count) }} {% endif %}

{{ row.description }}

{% endmacro %}

Packages

{# Model search: curated Synology model to architecture mapping in static/data/syno-models.json, baseline the Synology KB CPU page. #} Model list: model ↔ architecture docs
{% if selected_arch|default(None) %}
Showing packages for {{ selected_arch }} (including universal builds). Show all architectures
{% endif %}
{# ── Active packages ── #} {% for version_row in active_versions | batch(3) %}
{% for row in version_row %} {{ package_card(row) }} {% endfor %}
{% endfor %} {# ── Archived packages ── #} {% if archived_versions %}

Archived Packages

These packages are no longer in the active catalog and are not actively maintained.


{% for version_row in archived_versions | batch(3) %}
{% for row in version_row %} {{ package_card(row, archived=true) }} {% endfor %}
{% endfor %} {% endif %}
{% endblock %} {% block script %} {% endblock %}