{% extends "basis.html" %}{% import "symbole.html" as SY %}{% set h = t.home %}{% block titel %}{{ h.seitentitel }} – Timbre{% endblock %}{% block koerperklasse %} class="home-seite"{% endblock %}{% block hauptklasse %} class="hm"{% endblock %}{% block weich %} data-weich{% endblock %}{% block inhalt %} {# Home „Teller“ (28.10.2026, Schritt 4 des Mobil-Umbaus; Konzept und Prototyp .superpowers/sdd/2026-10-27-mobil-hoeren-diggen/trackliste/, Variante 1, von Maintainer bestätigt). Mitte = jetzt: der Teller (61,8 % der Spalte) mit dem laufenden bzw. zuletzt gehörten Track, Fortschritt als Ring, darunter ▶/❚❚ bzw. „Weiter“. Darunter ruhig in Zeilen: drei Listen (zuletzt gehörte zuerst), „Diggen ab …“ und die Statuszeile (oben = wichtig, Status unten). Auto-Listening steht als erste Zeile darunter, aber nur mit Kern (TimbreAuto). Ohne JavaScript steht der leere Teller mit dem Ausweg „Library öffnen“; static/home.js füllt ihn aus dem Player bzw. dem Merker des Geräts (localStorage je Konto, nie auf dem Server) und ordnet die Listen. Breit dieselbe Seite in einer Mittelspalte. Zahnrad oben rechts → /einstellungen (der Zahnrad-Knopf des Kopfs ist hier ausgeblendet, ein Zahnrad genügt). #} {% set punkt = start_marke or beta_wartet or (verwaltung and verwaltung_wartet) %}

{{ h.titel }}

{% if punkt %}{% endif %}
{# Paket „Gefühl“ (11.11.2026, docs/konzepte/2026-11-11-eindruck/, Rang 10 „Leer“): Konto ohne einen einzigen Track (home_leer, timbre_api/home.py) → genau ein Block: leerer Teller, „Bring deine Musik mit.“, ein Knopf „Musik rein“. Die Wege zu Tag List, Plattenkoffer, Diggen und Jukebox kommen erst mit dem ersten Track (sie führten ins Leere); die Statuszeile bleibt (sie sagt ehrlich, ob der Speicher schon verbunden ist und ob eine Analyse läuft). Nur im Browser: die Desktop-App hat ihren eigenen ersten Schritt (#dk-home), die Store-Apps bleiben wie geprüft, App-Hüllen ohne Menü C ohnehin. Der Satz richtet sich nach dem Stand: „Verbinde …“ nur, solange kein Speicher verbunden ist; ist der Onlinespeicher als Funktion abgeschaltet, bleibt Home wie bisher (home_leer ist dann False, app.py) – der Block verspräche sonst einen Weg, den es gerade nicht gibt. #} {% set neu_konto = home_leer and menue_c and not (ios_app or store_app or desktop_app) %} {% if neu_konto %}

{{ t.bib.leer_wege.titel }}

{{ t.gefuehl.home.text_verbunden if status_speicher else t.gefuehl.home.text }}

{{ t.menue.rein_titel }}
{% else %} {# data-platz (Paket „Gefühl“): der Platz für ▶/„Weiter“ ist von Anfang an reserviert, wo es einen Player gibt – der Knopf kommt erst, wenn player.js bereit ist, und schob vorher alles darunter um seine Höhe nach unten (werkzeuge/tokens_gefuehl.py) #}

{{ h.jetzt }}

{{ h.leer_titel }}

{{ h.leer_text }}

{{ h.leer_link }} {% if not abspielen_an %}

{{ h.ohne_speicher }} {{ h.ohne_speicher_link }}

{% endif %}
{# Musik hinzufügen (29.10.2026): im App-Fenster, solange nichts lokal ist, der erste Schritt unter dem Teller (static/desktop_extras.js) #} {% if desktop_app %}{% endif %} {% endif %} {# Handy schlank (06.11.2026, Phase 1, Konzept docs/konzepte/2026-11-04-handy-schlank/): unter „Weiterhören“ drei Schnellwege – die Tag List (die aktive aus dem Merker des Geräts, home.js; ohne Skript die zuletzt geänderte), Set bauen und „Neu analysiert“ (nur mit neuen Tracks der letzten 7 Tage, aus konten.bibliothek.hinzugefuegt – nichts über das Hören). Nur am Handy bzw. in der iOS-App sichtbar (tokens_handy.py); breit bleibt Home wie bisher. Oben = wichtig: Weiterhören, dann die Wege, dann die Listen. #} {% macro anzahl_text(n) %}{{ h.anzahl_null if not n else (h.anzahl_eins if n == 1 else h.anzahl | replace("{n}", n | string)) }}{% endmacro %} {% set tl = (home_listen or []) | rejectattr("art", "equalto", "regel") | first %} {% if not neu_konto %}{% endif %}
{% if not neu_konto %} {# Auto-Listening (Kern: static/auto_listening.js, TimbreAuto): home.js zeigt die Zeile nur, wenn es den Kern auf der Seite gibt – sonst bleibt sie verborgen (keine Versprechen). Taste = an/aus (DRÜCKEN = AN), daneben die Regel kurz, rechts die Regeln. #}

{{ h.listen }}{% if home_listen %} {{ h.listen_hinweis }}{% endif %}

{% if home_listen %}
    {% for l in home_listen %} {% set anz = h.anzahl_null if not l.anzahl else (h.anzahl_eins if l.anzahl == 1 else h.anzahl | replace("{n}", l.anzahl | string)) %}
  1. 3 %} hidden{% endif %}>{{ l.name }}{{ anz }}
  2. {% endfor %}
{% else %}

{{ h.listen_leer }}

{% endif %}
{{ h.dig_ohne }}{{ h.dig_text_ohne }} {# Jukebox 2.0 (08.11.2026): „Playlist bauen“ – Name aus texte_jukebox.py; gleiche Zeile wie „Diggen“ #} {{ t.jukebox.einstieg }} · {{ t.jukebox.name }}{{ t.jukebox.einstieg_hilfe }} {% endif %} {# Statuszeile: dezent, aus dem Stand beim Laden (Speicher verbunden? Analysen laut analysen.nav) – führt zu Import bzw. Analysen #}

{{ h.status }}: {% if status_speicher %}{{ h.speicher_an }}{% else %}{{ h.speicher_aus }}{% endif %} {% if ana and ana.name %}{{ ana.name[:1] | upper }}{{ ana.name[1:] }}{% else %}{{ h.analysen_fertig }}{% endif %}

{% endblock %}