{% extends "basis.html" %}{% block weich %} data-weich{% endblock %}{% block kopf %}{% if bloecke %}{% endif %}{% endblock %}{% block inhalt %} {# Download der Desktop-App (Beta 03.11.2026; Mac + Windows und öffentliche Fassung 13.11.2026). `bloecke` kommt fertig aus app._desktop_seite: Schalter TIMBRE_DESKTOP_OEFFENTLICH aus = nur für freigegebene Konten und nur Plattformen, die bereitliegen; an = für alle, die eigene Plattform zuerst. Eine Plattform ohne Datei bekommt keinen Block und kein Wort (14.11.2026: kein „kommt“-Satz mehr); die Überschrift nennt nur Plattformen mit Block, ohne Block steht nur „Desktop-App“. In Store-Apps (store: TimbreApp-iOS, TimbreApp-MAS) kein Wort zum Download. Image Schemas: oben = wichtig (eigene Plattform zuerst, Knopf vor den Details), links → rechts = Zeit (Version · Größe · Stand, Schritte 1 → 2 → 3), nah = zusammen (Prüfsumme direkt unter dem Download, SmartScreen-Schritte direkt beim Hinweis). Klassen aus werkzeuge/tokens_desktop_dl.py. Runde 2 (13.11.2026, static/desktop_oe.css aus werkzeuge/tokens_desktop_oe.py – nur wenn Blöcke da sind): Store-Fassungen ohne Plattform-Namen (nur „Desktop-App“ und der Satz); Sprunglinks, wenn beide Plattformen als Block da sind; Warnhinweis „nicht signiert“ direkt unter dem Knopf, bei signiertem Installer ein kurzer Satz am Platz von „notarisiert“; Mac mit Store-Adresse in zwei Teilen (Store-Weg, darunter „Direkt als DMG“ mit allen DMG-Angaben); Prüfsumme in Vierergruppen (Abstand per CSS, im Text und im aria-label der zusammenhängende Wert); Datum in der Schreibweise der Sprache (`datum_lesbar`, datetime bleibt ISO); „Etwas hakt?“ einmal am Seitenende. #} {% set d = t.desktop_dl %}{% set o = t.desktop_oe %} {% macro fakten(dl) %}
{{ d.version }}
{{ dl.version }}
{{ d.groesse }}
{{ dl.groesse_lesbar }}
{{ d.stand }}
{% endmacro %} {% macro schritte(a, b, c, klasse="") %}
  1. {{ a }}
  2. {{ b }}
  3. {{ c }}
{% endmacro %} {% macro pruefsumme(dl, hilfe, h) %}
<{{ h }}>{{ d.sha }}

{% for i in range(0, 64, 4) %}{{ dl.sha256[i:i + 4] }}{% if not loop.last %}{% endif %}{% endfor %}

{{ hilfe }}

{% endmacro %} {% macro mac_dmg(dl, h) %} {{ fakten(dl) }} {{ pruefsumme(dl, d.sha_hilfe, h) }}
<{{ h }}>{{ d.sys_titel }}

{{ d.voraussetzung.replace("{v}", dl.macos_min) }}

<{{ h }}>{{ d.install_titel }} {{ schritte(d.schritt1, d.schritt2, d.schritt3) }}

{{ d.notarisiert }}

{% endmacro %} {% macro mac(dl) %}
{{ o.mac_marke if oeffentlich else d.eyebrow }}

{{ o.mac_titel_store if mac_store else d.titel }}

{{ o.mac_lead_store if mac_store else d.lead }}

{% if mac_store %}

{{ o.mac_store }}

{{ o.mac_store_hilfe }}

{% if dl %}

{{ o.mac_dmg_titel }}

{{ o.mac_dmg_weg }}

{{ d.laden.replace("{g}", dl.groesse_lesbar) }}

{{ mac_dmg(dl, "h3") }}
{% endif %} {% elif dl %}

{{ d.laden.replace("{g}", dl.groesse_lesbar) }}

{{ mac_dmg(dl, "h3") }} {% endif %}
{% endmacro %} {% macro windows(dl) %}
{{ o.win_marke if oeffentlich else d.eyebrow }}

{{ o.win_titel }}

{{ o.win_lead }}

{{ o.win_laden.replace("{g}", dl.groesse_lesbar) }}

{% if not dl.signiert %}

{{ o.win_unsigniert_titel }}

{{ o.win_unsigniert }}

{{ schritte(o.win_smart1, o.win_smart2, o.win_smart3, " dl-liste") }}
{% endif %} {{ fakten(dl) }} {{ pruefsumme(dl, o.win_sha_hilfe, "h3") }}

{{ d.sys_titel }}

{{ o.win_voraussetzung.replace("{v}", dl.windows_min) }}

{{ d.install_titel }}

{{ schritte(o.win_schritt1, o.win_schritt2, o.win_schritt3) }} {% if dl.signiert %}

{{ o.win_signiert }}

{% endif %}
{% endmacro %} {% set karten = bloecke | map(attribute="plattform") | list %} {% if store or not karten %}

{{ t.app_laden }}

{% else %}
{{ t.app_laden }}

{{ t.desktop_titel if karten | length == 2 else o.seite_titel_windows if karten[0] == "windows" else o.seite_titel_mac }}

{% endif %}

{{ t.desktop_text }}

{% if not store %} {% if karten %} {% if karten | length == 2 %}{% endif %} {% for b in bloecke %} {% if b.plattform == "windows" %}{{ windows(b.dl) }}{% else %}{{ mac(b.dl) }}{% endif %} {% endfor %}

{{ d.feedback }} hello@timbremusic.app

{% elif oeffentlich %}

{{ o.nichts_bereit }}

{% elif dl_wartet %}

{{ d.wartet }}

{{ d.zur_freigabe }}

{% elif not nutzer %}

{{ d.kein_zugang }}

{{ d.anmelden }}{{ d.konto_erstellen }}

{% else %}

{{ d.bald }}

{{ t.beta_zur }}

{% endif %} {% endif %}
{% endblock %}