Tai Chi — Methodik
Die einzige Quelle der Wahrheit für dieses Projekt. Marke, Designsystem, Evidenzbasis, Verordnungslogik, Inhaltsrichtlinie und Sicherheitsrahmen stehen alle hier. Wenn Code und dieses Dokument sich widersprechen, ist eines von beiden ein Fehler — sag im PR, welches.
Status: lebendes Dokument · Letzte inhaltliche Überarbeitung: 2026-08-02
Übersetzung des englischen Dokuments
docs/METHODOLOGY.md, Abschnitt für Abschnitt und in derselben Reihenfolge. Diese Entsprechung ist tragend: die Überschriften-Ids von/de/methodstammen positionsbezogen aus der englischen Datei, sodass/method#42-jointsund/de/method#42-jointsdenselben Abschnitt bezeichnen. Diese Übersetzung hatte keine muttersprachliche Durchsicht; siehe §11.
1. Was das ist, und was es sich weigert zu sein
Tai Chi ist ein kostenloser, öffentlicher Tai-Chi-Begleiter ohne Anmeldung. Du öffnest ihn, er weiß, welcher Tag ist, und er gibt dir eine Einheit, geformt davon, wie sicher du auf den Beinen stehst, wie viel Zeit du hast und was du trainieren willst.
Er ist:
- Ein Planer und Timer, um den Unterricht anderer Menschen herumgelegt.
- Eine Rotationsmaschine, deren Hauptaufgabe ist, dafür zu sorgen, dass morgen sich nicht wie heute anfühlt.
- Ein ehrlicher Vermittler: jedes Video ist genannt, zurückverlinkt und vollständig auf der Bibliotheksseite aufgeführt.
Er ist bewusst nicht:
- Ein Lehrer. Er korrigiert deine Haltung nicht, er kann dich nicht sehen, und er wird nie behaupten, eine Bewegung sei „richtig“.
- Ein Medizinprodukt oder eine klinische Intervention. Er fasst veröffentlichte Evidenz zusammen, um zu erklären, warum die Einheiten so geformt sind; er diagnostiziert nicht, behandelt nicht und passt sich keiner Erkrankung an.
- Ein kontobasiertes Produkt. Keine Anmeldung, keine E-Mail, kein serverseitiges
Profil, keine Analytik. Alles liegt in
localStorageauf einem Gerät.
1.1 Warum keine Anmeldung
Die Zielgruppe ist überproportional über 65. Jede Anmeldeschranke ist ein Absprung, und ein Wohlfühlwerkzeug, das eine 78-Jährige bittet, eine E-Mail zu bestätigen, ist ein Werkzeug, das sie einmal öffnet. Die Kosten dieser Entscheidung sind real und wir stehen in der Oberfläche offen dazu: keine Synchronisation zwischen Geräten, und das Löschen der Websitedaten löscht die Serie.
2. Marke
2.1 Der Name
Tai Chi (太極, tài jí) benennt die Praxis selbst statt einer Stimmung um sie herum. Er wurde den Alternativen vorgezogen, weil:
- Er sagt genau, wofür die App da ist, mit den Wörtern, die Menschen ohnehin verwenden, wenn sie danach suchen.
- Er ist konkret. „Flow“, „Balance“, „Serenity“ sind Adjektive, die so tun, als wären sie Produkte.
- Er trägt keine Behauptung. Die App plant den Unterricht anderer Menschen; ein erfundener Markenname würde eine eigene Methode andeuten, und es gibt keine.
2.2 Die Stimme
Schlicht, ruhig und leicht trocken. Kurze Sätze. Nie atemlos, nie mystisch, nie ein Coach, der Ermutigung brüllt.
| Wir schreiben | Wir schreiben nicht |
|---|---|
| „Hier ist nichts zu erreichen. Steh einfach.“ | „Umarme deine innere Stille!“ |
| „Ziehen ist in Ordnung; scharfer Schmerz nicht.“ | „Hör auf deinen Körper 🙏“ |
| „Ruhe ist Training, keine Lücke darin.“ | „Reiß deine Serie nicht ab!“ |
| „Dieses läuft hier nicht.“ | „Hoppla! Etwas ist schiefgelaufen.“ |
Schuld wird nie als Motivation eingesetzt. Es gibt keinen Zustand „du hast 3 Tage verpasst“, und eine abgerissene Serie wird kommentarlos gemeldet.
2.3 Das Zeichen
Zwei verschränkte Bögen — einer steigt, einer sinkt, mit gemeinsamer Mitte — die den Weg nachzeichnen, den die Hände in den „Wolkenhänden“ nehmen. Es trägt den Yin-Yang-Austausch, auf dem die Praxis beruht, ohne das Taijitu zu verwenden, das visuell erschöpft ist und wie ein Logo von 1997 wirkt. Eine Strichstärke, 24-Einheiten-Raster, lesbar in Favicon-Größe.
2.4 Farbe — tiefe Nacht und Mondlicht
Die App ist standardmäßig dunkel, und dunkel ist der entworfene Zustand, kein Zugeständnis. Tai-Chi wird im Morgengrauen geübt, in einem dämmrigen Raum, oft bevor das Licht angeht. Eine hellweiße Seite um sechs Uhr früh ist feindselig. Der helle Modus existiert und ist vollständig, aber er ist dieselbe Marke am Mittag, nicht eine andere.
Der Bildschirm ist ein Nachthimmel mit einer einzigen Lichtquelle darin. Alles folgt daraus: der Mond steht fest oben rechts, die Glanzkanten der Glasscheiben nehmen Licht von oben rechts an, und keine Fläche sendet eigene Farbe aus — sie fangen das Mondlicht ein.
Alles ist oklch, sodass Helligkeitsrampen wahrnehmungsmäßig gleichmäßig sind
und sich die durchscheinenden Schichten vorhersagbar mischen.
| Rampe | Rolle | Warum dieser Farbton |
|---|---|---|
| Nacht | Hintergrund und Struktur | Blauschwarz, nie neutrales Grau. Das leichte Blau ist, was den Akzent als Licht lesen lässt statt als Farbe |
| Mondlicht | Primär. Die einzige Lichtquelle, und der Akzent | Blasses, entsättigtes Blau. Für die Abspieltaste, den Timer-Ring und den aktiven Zustand — und fast nichts sonst |
| Seladon | Die Praxisfarbe: Qigong, Aufwärmen, sanft | Ein so weit zurückgenommenes Jade, dass es als glasiertes Porzellan im Mondlicht liest, nicht als „Wellness-Grün“ |
| Lampenlicht | Heute, Serien, mittlere Anstrengung | Der einzige warme Ton im normalen Gebrauch. Hart rationiert, damit er etwas bedeutet |
| Glut | Kräftige Intensität, destruktive Aktionen | Der einzige heiße Ton. Er erscheint auf vielleicht zwei Flächen in der ganzen App |
Farbe ist nie das einzige Signal. Jeder Phasen-Chip verbindet Farbe mit einem
Label und einem Symbol; die Intensitätspunkte tragen ein textliches
sr-only-Äquivalent.
2.5 Schrift
Zwei Familien, nach dem Gegenstand gewählt und nicht nach der Mode.
- Cormorant (Display) — eine kalligrafische Renaissance-Antiqua mit pinselartiger Strichmodulation. Sie trägt die Tuschmalerei-Qualität der Praxis, ohne zu einer pastichehaften „orientalischen“ Schrift zu greifen, die zugleich hässlich und leicht beleidigend wäre. Nur in Displaygrößen: sie ist viel zu fein für Fließtext, und wir setzen darin nie welchen.
- Inter (alles Funktionale) — Oberfläche, Bedienelemente und vor allem der Timer. Große x-Höhe, neutral, und echte Tabellenziffern.
Tabellenziffern werden beim Timer und bei jedem Wert erzwungen, der sich an Ort und Stelle ändert, damit die Ziffern beim Wechseln nicht zittern.
3. Designsystem
3.1 Token-Ebenen
Drei Ebenen, eine Abhängigkeitsrichtung. Komponenten konsumieren nur Ebene 3.
- Primitiv —
--ch-moon-400,--ch-night-950. Rohe Markenwerte. Nie von einer Komponente referenziert. - Semantisch —
--primary,--phase-form,--glass-blur. Bedeutungstragend, themenschaltbar. Das ist die Ebene, die hell/dunkel tauscht. - Komponente — Tailwind-Utilities, erzeugt in
@theme inline(bg-phase-form,text-timer,rounded-3xl).
Eine neue Farbe, die direkt in eine Komponente wandert, ist ein Review-Kommentar, kein Patch.
3.2 Liquid Glass, spezifiziert
Eine Scheibe besteht aus vier gestapelten Signalen. Fehlt eines, sieht das aus wie ein durchscheinendes Rechteck und nicht wie Glas.
- Brechung —
backdrop-filter: blur() saturate() brightness(). Die Sättigung ist es, die es verkauft; Unschärfe allein liest sich wie mattiertes Plastik. Im dunklen Build sind die Scheiben eher rauchig als mattiert: die Füllung fällt auf ~6 % und die Helligkeitsanhebung leistet die Arbeit. - Körper — eine durchscheinende Tönungsfüllung (
--glass-tint/--glass-fill). - Kanten — eine helle Haarlinie oben (
inset 0 1px 0) und eine dunkle Kontaktlinie unten. Das ist es, was Dicke andeutet. - Glanzlicht — ein diagonaler Glanzstreifen über
::before, dazu ein Rauschkorn von 3,5 % über::after. Das Korn existiert, um den Plastikeindruck großer weichgezeichneter Flächen zu besiegen.
Bereitgestellt als @utility glass, glass-faint, glass-strong,
glass-specular, glass-grain, glass-press, und konsumiert über eine einzige
<Glass>-Primitive mit drei Achsen: depth, tone, radius.
Regel: bastle nie ein backdrop-blur an einer Komponente zusammen. Nimm
<Glass>, oder ergänze eine Variante.
Zwei Dinge machen das tragfähig statt dekorativ:
- Der Nachthimmel. Glas liest sich nur als Glas, wenn dahinter etwas ist, das
gebrochen zu werden lohnt. Ein fester Mond plus zwei langsame, kalte
Bodenfelder liegen bei
-z-10hinter allem. Reines CSS, kein Canvas, kein rAF. Ein Schleier darüber garantiert den Textkontrast, wo immer ein Feld gerade landet — der Himmel ist Dekoration, und Text darf nie von ihm abhängen. - Der
@supports-Rückfall. Wobackdrop-filternicht unterstützt oder abgeschaltet ist, springen die Füllungen auf 88–98 % Deckkraft. Textkontrast hängt nie davon ab, dass die Unschärfe greift.
3.3 Bewegung
| Regel | Grund |
|---|---|
| Nur zwei Easings, beide eigens gebaut | --ease-glass fürs Material, --ease-settle für Ankünfte. Mehr als zwei liest sich als Inkonsistenz. |
| Nichts fährt von der Seite ein | Periphere Bewegung zieht das Auge und bricht eine stehende Haltung. Hinweise blenden an Ort und Stelle über. |
| Umgebungsschleifen dauern 28–44 s | Langsam genug, um unbemerkt zu bleiben; schneller wird daraus ein Metronom, gegen das man ankämpft. |
prefers-reduced-motion beendet das Driften | …behält aber Deckkraft- und Farbübergänge, denn die tragen den Zustand der Einheit. |
3.4 Barrierefreiheits-Zusagen
- Berührziele: 44 px Untergrenze, 48 px für die Transportleiste, 64 px fürs Abspielen.
- Jedes Bedienelement hat ein echtes
aria-label; der Timer-Ring istaria-hiddenmit einer grobensr-only-Live-Region, damit er nicht jede Sekunde angesagt wird. role="radiogroup"für die Einrichtungsoptionen, damit Pfeiltasten und Positionsansagen funktionieren.- Sprunglink, sichtbarer Fokusring,
aria-currentauf der Navigation und dem aktiven Block. - Kein
maximumScale. Diese App richtet sich an Menschen über 65; Zoom ist nicht optional. - Untertitel standardmäßig an im Player — ein großer Teil der Bibliothek ist still, akzentgefärbt oder auf Mandarin, und die zuschauende Person steht quer durch den Raum.
3.5 Responsive Architektur
Der erste Build brach unterhalb von ~400 px, was für eine App inakzeptabel ist, deren Nutzer sie am ehesten auf einem an eine Lampe gelehnten Telefon öffnen. Die Regeln jetzt:
- Die Navigation wandert, sie schrumpft nicht. Unterhalb von
mdträgt die Kopfzeile nur das Markenzeichen und zwei Bedienelemente; die vier Navigationen werden zu einer festen gläsernen Tab-Leiste unten, mit Rücksicht auf die sicheren Bereiche und mit Symbolen und Beschriftungen. Reine Symbolleisten sind für die Altersgruppe, für die das gebaut ist, unlesbar. overflow-x: hiddenaufhtmlundbody, undmin-width: 0auf jedem Element. Nichts ist je breiter als das Viewport; wenn doch, ist das ein Fehler — aber ein Fehler, der nicht zu einer seitwärts scrollenden Seite werden darf.- Der Wochenstreifen muss sieben Zellen bei 330 px fassen. Die Textmarke
entfällt unterhalb von
sm; der Anfangsbuchstabe des Tages, das Datum und der Farbpunkt überleben. Die Zellen bleiben unabhängig davon ≥44 px hoch — es ist das meistgetippte Bedienelement der App. - Sichere Bereiche überall:
env(safe-area-inset-*)an Kopfzeile, Tab-Leiste und Einstellungsblatt. - Der Timer wird gegen seinen Ring dimensioniert, nicht gegen das Viewport.
Ein
vw-getriebenesclamplief auf breiten Bildschirmen aus dem Ring heraus. font-size: max(16px, 1em)auf Bedienelementen, damit iOS die Seite nie zoomt.
3.6 Internationalisierung
Die Sprache wird beim ersten Besuch automatisch aus dem Browser erkannt und danach gemerkt.
navigator.languageslesen — die eigene, geordnete Präferenzliste des Nutzers — und den ersten unterstützten Eintrag nehmen. Wessen Liste[ca, es, en]lautet, bekommt Spanisch, nicht Englisch.- Nur nach der Primär-Subtag vergleichen:
es-419,es-MXundeslösen alle auf Spanisch auf. Jede chinesische Variante löst auf Vereinfacht auf —zh-Hantohne echte Übersetzung ins Traditionelle auszuliefern wäre schlimmer als Vereinfacht zu zeigen. - Eine ausdrückliche Wahl im Einstellungsblatt überschreibt die Erkennung und
wird in
localStoragegeschrieben. „Meinem Browser folgen“ löscht sie.
Ausgelieferte Sprachen: Englisch, Spanisch, Französisch, Deutsch, Vereinfachtes Chinesisch.
Zwei Architekturentscheidungen machen, dass das funktioniert statt halb zu funktionieren:
- Der Motor gibt Schlüssel aus, nie Prosa.
prescribeundselectsind rein und sprachblind, geben alsoNote = { key, values }zurück, und die Oberfläche löst es auf. Begründung, Warnhinweise und Blocknotizen sind daher übersetzt, nicht bloß das Drumherum. Wo ein Wert selbst ein übersetzbarer Begriff ist („du hast sanft verlangt“), gibt der Motor ihn hinter einer NUL-Sentinel aus, undtranslatelöst eine Ebene tief auf. - Englisch ist Quelle der Wahrheit und zugleich der Typ. Jede andere Sprache
ist als
Record<keyof typeof en, string>typisiert, ein fehlender Schlüssel ist also ein Compile-Fehler. Ein zur Laufzeit fehlender Schlüssel fällt auf Englisch zurück, statt den rohen Schlüssel darzustellen.
Jede Routenfamilie ist übersetzt: das Drumherum, die Kursseiten, die dreizehn
/for/*-Essays, die Installationsanleitung und dieses Dokument.
src/lib/i18n/coverage.ts bleibt die Quelle der Wahrheit dafür, welche davon in
welcher Sprache indexiert werden dürfen, und eine Behauptung zurückzunehmen ist
eine Zeile pro Familie.
Zwei Kategorien sind bewusst unübersetzt, und eine ist bewusst auf ungewöhnliche Weise übersetzt:
- Unübersetzt: die Rangnamen (Eigennamen, wie Kyū- und Dan-Grade) und die Videotitel und Kanalnamen (die Nennung muss mit der Quelle übereinstimmen).
- Unübersetzt: die Überschriften-Anker der Methodik.
/method#42-jointslöst in jeder Sprache auf, weil die Ids des gerenderten Dokuments positionsbezogen aus der englischen Datei stammen und nicht aus dem Slug der übersetzten Überschriften. Ein Anker ist ein Bezeichner, und Bezeichner werden nicht übersetzt. Der Preis: eine Übersetzung darf keinen Abschnitt hinzufügen, weglassen oder umstellen; der Test setzt das durch. - Vom Hersteller übersetzt, nicht von uns: die Menübeschriftungen von
/install. iOS, Chrome, Firefox und Samsung Internet lokalisieren ihre eigenen Menüs, also trägtinstall.label.*die Formulierung des jeweiligen Herstellers je Sprache. Übersetzt ein Hersteller eine Beschriftung nicht, ist die englische Zeichenkette der richtige Wert — die einzige Stelle in den Wörterbüchern, an der das gilt.
3A. Fortschritt
Fortschritt wird in Tagen gemessen, an denen du da warst — nie in Minuten, nie in Intensität. Eine fünfminütige Einheit im Sitzen an einem schlechten Tag zählt genau so viel wie eine fünfundvierzigminütige Form an einem guten.
Das ist keine Weichspülung. Volumen zu belohnen würde genau die Menschen, für die diese App gebaut ist — älter, steifer, unsicherer — dazu drängen, zu viel zu tun, und das ist der Hauptweg, auf dem eine Bewegungsintervention Schaden anrichtet.
Ränge (aus abgeschlossenen Tagen abgeleitet, nie gespeichert):
| Rang | Tage | Rang | Tage | |||
|---|---|---|---|---|---|---|
| Anfängergeist | 初心 | 0 | Weißer Kranich | 白鶴 | 60 | |
| Erstes Licht | 初光 | 1 | Langer Strom | 長江 | 100 | |
| Stilles Wasser | 靜水 | 5 | Grundgestein | 磐石 | 180 | |
| Grüner Bambus | 青竹 | 15 | Alte Kiefer | 古松 | 365 | |
| Ziehende Wolke | 行雲 | 30 |
Meilensteine werden verdient und nie verloren. Einer davon — Zurückgekommen — ist ausdrücklich für die Rückkehr nach vierzehn Tagen Pause, weil das schwerer ist als eine Serie und kein Gewohnheitstracker es je belohnt.
Anti-Muster, die dieser Bildschirm ablehnt:
- Kein Zustand „du hast deine Serie gerissen“, und nirgendwo Rot.
- Heute noch nicht geübt reißt die Serie nicht. Der Tag ist nicht vorbei.
- Kein Vergleich mit anderen Menschen. Hier ist sonst niemand.
- Alles wird bei jedem Render aus dem Protokoll abgeleitet. Eine Serie neben der Historie zu speichern, die sie erzeugt, ist der Weg, auf dem jeder Gewohnheitstracker am Ende eine Zahl anzeigt, der seine eigenen Daten widersprechen.
4. Die Evidenzbasis
Jede Behauptung unten trägt ihre Quelle und ihren Prüfstatus: ✅ geprüft
heißt, die Zahlen wurden beim Schreiben gegen die Quelle kontrolliert;
⚠️ ungeprüft heißt, sie ist aus Allgemeinwissen formuliert und sollte bestätigt
werden, bevor sie in einer öffentlichen Marketingaussage verwendet wird.
4.1 Stürze
- Tai-Chi senkt die Sturzrate um etwa 19 % bei zu Hause lebenden älteren
Menschen (RaR 0,81; 95-%-KI 0,67–0,99; 2.655 Teilnehmende über 7 Studien;
Evidenz niedriger Sicherheit). Sherrington et al., Cochrane Database of
Systematic Reviews, 2019. ✅ geprüft
- Derselbe Review bewertet Gleichgewichts- und Funktionstraining höher: 24 % Reduktion, Evidenz hoher Sicherheit (RaR 0,76; 95-%-KI 0,70–0,81; 39 Studien). Tai-Chi ist gut, nicht am besten, und die Sicherheit ist geringer.
- In einer Hochrisikogruppe senkte ein therapeutisches Tai-Ji-Quan-Protokoll Stürze um 58 % gegenüber Dehnen und um 31 % gegenüber multimodalem Training (IRR 0,42; 95-%-KI 0,31–0,56 vs. Dehnen). Li et al., JAMA Internal Medicine, 2018, 670 Erwachsene ab 70 Jahren mit Sturzanamnese oder eingeschränkter Mobilität. ✅ geprüft
Was wir daraus mitnehmen: Gleichgewichtsarbeit ist der wertvollste Block für
ältere Übende, also verdoppelt der Schwerpunkt balance diese Phase in etwa, und
die Rahmung als Sturzprävention ist ehrlich statt überzogen.
4.2 Gelenke
- Bei Kniearthrose erzielte Tai-Chi WOMAC-Verbesserungen vergleichbar mit Standard-Physiotherapie nach 12 Wochen (Tai-Chi 167 Punkte, 95-%-KI 145–190; PT 143 Punkte, 95-%-KI 119–167; Unterschied zwischen den Gruppen nicht signifikant). Wang et al., Annals of Internal Medicine, 2016, n = 204. ✅ geprüft
- Dr. Paul Lams Tai Chi for Arthritis (Sun-Stil, hoher Stand, keine tiefe
Kniebeugung) ist das am weitesten verbreitete Protokoll in diesem Feld und ist
der Standardinhalt für
formbeim Schwerpunktjointsund im Band 75+. ⚠️ ungeprüft (Verbreitung des Programms, keine Wirksamkeitsbehauptung)
4.3 Dosis
- WHO-Leitlinien 2020, Erwachsene ab 65: 150–300 min aerobe Aktivität mittlerer Intensität pro Woche, Muskelkräftigung an ≥2 Tagen/Woche und abwechslungsreiche multikomponente Aktivität mit Betonung auf funktionellem Gleichgewicht und Kraft, bei mittlerer oder höherer Intensität, an ≥3 Tagen/Woche. ✅ geprüft
Was wir daraus mitnehmen: der Standardplan sind 5 Tage/Woche, und die Wochenplanung garantiert, dass der Gleichgewichtsschwerpunkt an mehreren nicht aufeinanderfolgenden Tagen auftaucht. Wer weniger als 3 Tage wählt, wird nicht gewarnt — Nörgeln widerspricht der Marke —, aber der Plan verteilt den Schwerpunkt trotzdem, statt eine Qualität zu wiederholen.
4.4 Intensität
- Allgemeines Tai-Chi wird konventionell als leicht bis mittel intensiv, um 3,0 MET eingestuft (Compendium of Physical Activities). ⚠️ ungeprüft — nur als Entwurfsheuristik behandelt, Nutzern nie als Zahl angezeigt.
Intensität ist im Tai-Chi nicht Tempo. Sie wird moduliert über:
- Standhöhe — die mit Abstand dominierende Variable.
- Bewegungsumfang.
- Einbeinzeit — der Haupttreiber sowohl des Trainingseffekts als auch des Sturzrisikos.
- Kontinuität — wie viel der Einheit ununterbrochene Bewegung ist.
Deshalb steht in der Oberfläche direkt unter der Intensitätssteuerung: „Im Tai-Chi sind das Standhöhe und Einbeinzeit, nicht Tempo.“
4.5 Atem
- Die geführten Blöcke takten auf rund 5,5 Atemzüge pro Minute (ein 11-Sekunden-Zyklus), innerhalb des Resonanzfrequenzbereichs, der mit den deutlichsten kurzfristigen Effekten auf Herzratenvariabilität und Barorezeptorempfindlichkeit verbunden ist. ⚠️ ungeprüft — als Vorschlag dargestellt; nichts in der App verlangt, dass man ihn trifft.
4.6 Gewohnheit
- Der stärkste Hebel auf die Beibehaltung, den wir tatsächlich ziehen können, ist die nächste Einheit sichtbar und bereits entschieden zu machen. Daher ist der Wochenstreifen über allem angeheftet, und Ruhetage werden dargestellt statt weggelassen. ⚠️ ungeprüft als konkrete Effektstärke; als Produktprinzip behandelt.
4.7 Was die Evidenz nicht hergibt
Klar gesagt, damit niemand auf Sand baut:
- Es ist nicht gezeigt worden, dass Tai-Chi gut gemachtem konventionellem Gleichgewichtstraining bei Stürzen überlegen ist.
- Die Evidenzsicherheit speziell für Tai-Chi ist insgesamt niedrig bis moderat; die Studien sind klein, Verblindung ist unmöglich, und Aufmerksamkeitskontrollen sind uneinheitlich.
- Nichts hier stützt Behauptungen über Immunsystem, „Energie“, Organfunktion oder Krankheitsumkehr. Die App stellt sie nie auf, auch nicht in den Qigong-Texten, wo Videotitel das manchmal tun. Wir geben Titel zur Nennung wörtlich wieder — das ist keine Zustimmung.
5. Das Verordnungsmodell
src/lib/engine/prescribe.ts — Profil rein, Bauplan raus. Hier wird kein Inhalt
ausgewählt, was die Gestalt der Einheit testbar macht, ohne die Videobibliothek
anzufassen.
5.1 Der fünfphasige Bogen
Jede Einheit folgt bei jeder Dauer demselben Bogen. Vertrautheit ist der Punkt: das Ritual sollte sich nicht ändern, bloß weil der Inhalt es tut.
| Phase | 中文 | Zweck | Basisanteil |
|---|---|---|---|
| Ankommen | 無極 | Ankommen. Den Atem setzen, die senkrechte Ausrichtung finden. | 8 % |
| Aufwärmen | 熱身 | Sprunggelenke, Hüften, Wirbelsäule, Schultern im schmerzfreien Umfang mobilisieren. | 17 % |
| Qigong | 氣功 | Wiederholbare, an den Atem gebundene Bewegung. Baut Koordination auf. | 27 % |
| Form | 套路 | Durchgehende Choreografie. Der kognitive und haltungsbezogene Kern. | 30 % |
| Gleichgewicht | 平衡 | Bewusste Gewichtsverlagerung, kontrolliertes Schreiten, schmaler Stand. | 13 % |
| Abschluss | 收功 | Herunterfahren. Den Atem verlangsamen, in den Raum zurückkehren. | 5 % |
Ankommen und Abschluss sind immer da und werden immer von der App gesprochen, nicht von einem Video. Drei Gründe: niemand veröffentlicht ein gutes zweiminütiges Ausklingen; ein festes Öffnen und Schließen ist der stärkste verfügbare Gewohnheitsanker; und es heißt, dass eine Einheit noch funktioniert, wenn ein Video zurückgezogen wird oder die Verbindung abbricht.
5.2 Neugewichtung durch den Schwerpunkt
Der Schwerpunkt multipliziert die Basisanteile, dann wird alles renormiert — ein Schwerpunkt kann eine Phase also betonen, sie aber nie durch Arithmetik löschen.
| Schwerpunkt | Betonung |
|---|---|
| Gleichgewicht | Gleichgewicht ×2,0; Aufwärmen ×1,1; Form/Qigong ×0,85 |
| Gelenke | Aufwärmen ×1,55; Qigong ×1,2; Form ×0,8 |
| Ruhe | Ankommen ×2,2; Abschluss ×2,0; Qigong ×1,2; Form ×0,7 |
| Kraft | Gleichgewicht ×1,45; Form ×1,15; Ankommen ×0,7 |
| Ausdauer | Form ×1,3; Qigong ×1,2; Ankommen ×0,5 |
| Kognition | Form ×1,55; Gleichgewicht ×1,1; Qigong ×0,8 |
5.3 Phasen-Untergrenzen und Weglassen
Jede Phase hat ein Minimum, unter dem sie sich nicht lohnt — man verbrächte den ganzen Block damit, die Startposition des Videos zu finden.
center 90s · warmup 120s · qigong 180s · form 240s · balance 120s · close 90s
Die Zuteilung iteriert: Anteile berechnen → unterversorgte Phasen finden → die
am niedrigsten gewichtete weglassbare weglassen → neu rechnen. Das Iterieren ist
wichtig, weil das Weglassen einer Phase eine andere über ihre Untergrenze heben
kann. center und close sind geschützt und werden nie weggelassen; mindestens
eines von qigong / form / balance muss überleben. Die Enddauern runden auf
15 s, der Rest wird auf den größten Block geschoben.
Deshalb hat eine 10-Minuten-Einheit vier Blöcke und eine 45-Minuten-Einheit sechs, ohne fest verdrahtete Vorlagen pro Dauer.
5.4 Sicherheitsobergrenzen
Mobilität ist die harte Schranke. Alter ist eine weiche. Eine sichere 80-Jährige sticht einen unsicheren 55-Jährigen, und die Oberfläche fragt zuerst nach der Mobilität, um zu signalisieren, dass es eine Sicherheitsfrage ist und keine demografische.
mobility ceiling: seated → gentle supported → gentle steady → vigorous
age ceiling: <50 → vigorous 50–64 → vigorous
65–74 → moderate 75+ → gentle
effective = min(requested, mobility ceiling, age ceiling)
Eine Ausnahme: sicher auf den Beinen und gefestigte Praxis hebt die Altersgrenze um eine Stufe. Nachgewiesenes Können sticht ein Geburtsjahr. Die Mobilitätsgrenze wird nie angehoben.
Wenn die verlangte Intensität gedeckelt wird, sagt die App das, und sie sagt, welche Einschränkung gebunden hat — „Der Halt im Stehen ist der begrenzende Faktor, nicht das Alter.“
Weitere strukturelle Folgen:
seated→ die Gleichgewichtsphase entfällt ganz (es gibt kein ehrliches sitzendes Gegenstück zum Einbeinstand), und ihre Zeit geht ans Qigong, wo Rumpfkontrolle und Gewichtsverlagerung im Sitzen trainierbar sind.seatedodersupported→requireChairFriendly, ein harter Filter auf den Inhalt, keine Vorliebe.new→ Aufwärmen ×1,25; Form ×0,85; und Lehrende, die Schritt für Schritt vorgehen, werden bevorzugt.established→ Form ×1,2; Aufwärmen ×0,85.
5.5 Kurzformat
Dieselbe Einheit, anders geschnitten. prescribe() nimmt ein Format — "full"
oder "shorts" — und die Übende wechselt zwischen beiden auf dem
Übungsbildschirm. Alles, worauf es ankommt, ist geteilt: dasselbe Profil,
dieselben Minuten, derselbe fünfphasige Bogen in derselben Reihenfolge und
dieselbe Sicherheitsobergrenze, berechnet vom selben Code. Eine kurze Einheit
ist keine leichtere Einheit.
Was sich ändert:
- Phasen werden in Karten geschnitten. Ziel 75 s, nie unter 45 s oder über 105 s, höchstens 26 Karten. Beide Enden sind gekappt: eine Untergrenze allein ließ eine 110-Sekunden-Phase als eine Karte durch, und das ist ein Block der vollen Einheit im Kartenkostüm.
- Die Phasen-Untergrenzen sinken auf etwa je eine Karte (
center 45 · warmup 45 · qigong 60 · form 60 · balance 45 · close 45), und die Zuteilungskörnung geht von 15 s auf 5 s. Eine kurze Einheit von 15 Minuten kann daher alle fünf Phasen enthalten, wo das volle Format zwei davon weggelassen hätte — der Bogen ist vollständiger, nicht weniger. - Der Inhalt muss in eine Karte passen. Der Selektor deckelt die Laufzeit von Kandidaten auf 5 Minuten, gelockert auf 10 und nicht weiter; ein 42-minütiger Sitzkurs, 75 Sekunden lang gezeigt, ist kein Kurs, sondern ein Fragment davon.
- Etwa jede dritte Karte ist geführt statt gefilmt, zusätzlich zu Ankommen
und Abschluss, die es immer sind. Dafür sind die 29
micro-Blöcke da: je ein benannter Grundbaustein, mit seinem Chinesisch und Pinyin auf der Karte.
Warum es das Format überhaupt gibt: die volle Einheit setzt voraus, dass du dich entschieden hast zu üben. Der Feed setzt voraus, dass du das nicht hast, und bittet um eine Minute. Die Literatur zur Dosis (§4.3) handelt von angesammelten Übungswochen, nicht von der Länge einer Einheit — eine fünfzehnminütige Einheit als zwölf Karten ist also keine abgespeckte Version von irgendetwas.
Was es bewusst nicht von den Feeds übernimmt, denen es ähnelt: es endet, nichts wird beschnitten, um den Rahmen zu füllen, und die Uhr — nicht das Video — entscheidet, wann eine Karte vorbei ist.
6. Der Anti-Wiederholungs-Motor
src/lib/engine/select.ts. Das ist der Teil, an dem das ganze Produkt hängt: es
darf sich nicht jeden Tag wie dasselbe anfühlen.
Ein naiver Bester-Treffer-Bewerter scheitert sofort — der beste Treffer ist deterministisch, also ist Tag 2 identisch mit Tag 1. Neuheit ist hier deshalb kein Stichentscheid. Sie ist der größte einzelne Term der Bewertung.
6.1 Bewertung
score = 0.42 · novelty # days since last served / 21, capped at 1
+ 0.30 · durationFit # how well the runtime covers the block
+ 0.20 · fit # focus, intensity, level, teaching style
+ 0.08 · jitter # seeded random — what "Shuffle" perturbs
× 0.55 if the channel appeared in either of the last two sessions
× 0.85 if the style appeared in the last session
Die Karten des Kurzformats gewichten dieselben Terme neu, statt einen anderen
Bewerter zu verwenden: novelty 0.32 · durationFit 0.46 · fit 0.17 · jitter 0.05. Die Dauer-Passung dominiert, weil eine Karte 75 Sekunden hat und die
Strafe für einen Kurs, der mitten in der Karte ausgeht, hart ist.
Sprache wird nach der Wahl angewandt, nicht in der Bewertung. Fünfzehn Kurse sind wortlos; der Rest ist gesprochen, fast alle auf Englisch. Die Rangfolge ist für jede Sprache identisch, und erst danach — innerhalb des Mischfensters, aus dem ohnehin gewählt wurde — bekommt eine nicht englischsprachige Person den ersten verständlichen Kurs, falls der gezogene es nicht war. Die Bewertung stattdessen nach Sprache zu gewichten sortiert die ganze Liste je Sprache um, und der Rotationsindex des Tages adressiert dann in jeder Sortierung einen anderen Kurs — eine spanischsprachige Person könnte so den englischen Kurs erhalten, den ein wortloser in ihrer eigenen Liste gerade verdrängt hatte. Das Versprechen „nie weniger wortlose Kurse, als eine englischsprachige Person bekommt“ ist jetzt konstruktionsbedingt wahr.
6.2 Harte Regeln, und die Reihenfolge, in der sie nachgeben
| Regel | |
|---|---|
| HART | Kein Video zweimal in einer Einheit |
| HART | Kein Kanal zweimal in einer Einheit — der größte einzelne Treiber von „das fühlt sich gleich an“ |
| HART | Kein Video, das innerhalb von cooldownDays gesehen wurde |
| WEICH | Kanal-Abwertung über die letzten beiden Einheiten |
| WEICH | Stil-Abwertung über die letzte Einheit |
cooldownDays = clamp(floor(eligiblePoolSize × 0.6), 1, 14). Das skaliert mit
dem, was die Phase tatsächlich erreichen kann: eine Phase mit 15 in Frage
kommenden Videos bekommt 9 Tage Abklingzeit, eine mit 3 bekommt 1 Tag. Eine feste
Konstante würde entweder schmale Phasen aushungern oder breite kaum rotieren.
Wenn eine Phase leer bliebe, lockern sich die Bedingungen in einer definierten
Reihenfolge — (1) Abgleich der Erfahrungsstufe, (2) die Abklingzeit, (3)
Intensitätsband und Kanalvielfalt, (4) keine Wiederholungen innerhalb der
Einheit — und die Sicherheitsobergrenze lockert sich auf keiner Stufe. Stufe
4 existiert nur für den Kurzformat-Feed, der bis zu 26 verschiedene Dinge
verlangt, wo die volle Einheit sechs verlangt; selbst dort wird derselbe Kurs nie
auf zwei aufeinanderfolgenden Karten ausgespielt, und das ist die einzige
Wiederholung, die jemand wirklich bemerken würde. Die Kartenlängen-Deckelung
lockert sich auf Stufe 3 statt auf Stufe 4: der Selektor wiederholt also lieber
einen kurzen Kurs, als einen 40-Minuten-Kurs als 75-Sekunden-Karte auszuspielen.
Welche Regeln gelockert wurden, wird in session.rationale zurückgemeldet und
dem Nutzer gezeigt, denn die eigenen Bedingungen stillschweigend zu ignorieren
ist der Weg, auf dem ein Empfehlungssystem verrottet.
6.3 Die Dauer-Passung ist absichtlich asymmetrisch
Ein Video, das länger ist als sein Block, ist unproblematisch — du übst die ersten N Minuten und der Timer schiebt dich weiter, genau wie ein Kurs. Ein Video, das kürzer ist als sein Block, lässt dich in Stille stehen, und das ist ein viel schlimmeres Scheitern. Also:
r = budget / runtime
r > 1 → max(0, 1 − (r−1) × 1.25) # too short: punished hard
r ≤ 1 → r ^ 0.45 # long is acceptable, not preferred
6.4 Determinismus
Die Einheit, die du bekommen hast, darf sich nicht stillschweigend neu mischen,
wenn du mitten im Üben neu lädst. Jede Zufallsziehung stammt aus einem
mulberry32-PRNG, gesät mit hash(date, profileKey, variant). variant ist das
Einzige, was die Einheit eines Tages ändert, und genau ein Bedienelement erhöht
es: „Andere Einheit“.
6.5 Warum die Bibliothek so gebaut ist, wie sie ist
Der Motor kann nur durch das rotieren, was existiert. Deshalb führt die Bibliothek bewusst dieselben kanonischen Sets, unterrichtet von verschiedenen Lehrenden — sieben Aufnahmen von Ba Duan Jin, sechs von Shibashi, acht der Yang-24-Form. Das ist der Trick: der Inhalt bleibt vertraut (du lernst eine Form, nicht fünfzig), während Stimme, Tempo und Kamerawinkel rotieren. Vertraute Praxis, frische Einheit.
Redaktionelles Ziel: ≥5 verschiedene Kanäle pro Zelle (Phase × Intensität).
7. Wochenplanung
src/lib/engine/week.ts. Eine Woche identischer Einheiten ist der schnellste Weg
aufzuhören, und obendrein schlechtes Training.
- Ein langer Tag — der eigene Schwerpunkt der Übenden, Dauer ×1,5, gelegt auf ihren letzten gewählten Wochentag (meist das Wochenende, meist der einzige Tag mit Zeit). Das ist die Einheit, in der eine Form tatsächlich gelernt wird. Erfordert ≥3 Übungstage.
- Ein leichter Tag — eine Intensitätsstufe tiefer, Schwerpunkt auf
stressumgestellt, in die Wochenmitte gelegt. Erholung, keine Lücke. Erfordert ≥4 Übungstage. - Alles andere wechselt zwischen dem gewählten Schwerpunkt und seinem Komplement, sodass keine einzelne Qualität an aufeinanderfolgenden Tagen trainiert wird.
balance ↔ strength strength → joints joints → stress
stress → balance cardio → balance cognition → joints
- Ruhetage werden dargestellt, nicht versteckt. Ein leerer Donnerstag ist eine Entscheidung des Plans. Ihn auszuwählen bietet „Trotzdem üben“ an, was mit verringerter Intensität baut, statt sich zu weigern.
Wochen beginnen am Montag — so sprechen Menschen über „diese Woche“, und so liegt der natürliche lange Tag am Ende statt in der Mitte.
8. Inhaltsrichtlinie
8.1 Prüfung
Jeder Eintrag in src/lib/content/videos.ts wurde vor dem Ausliefern maschinell
geprüft:
https://www.youtube.com/oembed?url=…→ existiert, ist öffentlich, echter Titel, echter Kanal.- die Wiedergabeseite →
lengthSeconds, undplayableInEmbed: true.
Führ es erneut aus mit bun run verify:library.
Titel lügen ständig. „10 min“ sitzt regelmäßig auf einem 14-Minuten-Video.
Das Feld seconds ist immer YouTubes eigene Zahl, denn der Timer plant dagegen.
Von 52 Kandidaten wurden 51 ausgeliefert; einer (ILFcKMnMkPQ) meldete
playableInEmbed: false und wurde verworfen, statt als toter Rahmen
ausgeliefert zu werden.
8.2 Redaktionelle Regeln für einen neuen Eintrag
- Echte Laufzeit in
seconds. Nie die Zahl aus dem Titel. chairFriendlyist eine Sicherheitsaussage, kein Bequemlichkeits-Tag. Nur wahr, wenn das Video im Sitzen ist oder langsam und schmal genug im Stand, um es an einer Stuhllehne festhaltend zu machen.- Tagge nie ein Video in mehr als drei Phasen. Übertaggen ist der Weg, auf dem sich eine Bibliothek aus 50 wie eine aus 6 anfühlt.
- Ziel: ≥5 verschiedene Kanäle pro Zelle (Phase × Intensität).
8.3 Nennung und faire Nutzung
Nichts wird gehostet, neu hochgeladen, heruntergeladen oder entkleidet. Videos
werden über YouTubes eigenen Player eingebettet (Host youtube-nocookie), mit
aktiv gelassenen nativen Bedienelementen, Kanalnamen auf jeder Fläche und einem
„Auf YouTube ansehen“-Link auf jeder Bibliothekskarte. Die vollständige
Bibliothek ist öffentlich unter /library.
Bittet eine Urheberin darum, entfernt zu werden, wird der Eintrag entfernt. Keine Verhandlung, kein „aber der Motor braucht ihn“.
8.4 Elegantes Scheitern
Videos werden gelöscht und Einbettungsrechte ändern sich. Wenn der Player einen Fehler wirft, degradiert die Bühne zu einer Karte mit dem Vorschaubild, einer Erklärung und einem externen Link — und der Timer läuft weiter. Ein leeres iframe ist nie akzeptabel.
9. Sicherheitsrahmen
Was die App tut:
- Fragt vor allem anderen nach der Standsicherheit.
- Erzwingt eine harte Intensitätsobergrenze, die kein Lockerungspfad aushebeln kann.
- Zeigt Warnhinweise über dem Player, in jeder Einheit, nicht einmal beim Einrichten.
- Allgemeine Warnhinweise: aufhören bei scharfem Schmerz, Brustschmerz, Schwindel oder Atemnot, die nicht nachlässt; das Knie nie über die Zehen hinaus drücken; das Knie läuft über dem Fuß.
- Bedingte Warnhinweise: Stuhl in Reichweite bei
supported; fester Stuhl, keine Rollen, Füße flach beiseated; „erhöhe den Stand, bevor du die Einheit kürzt“ ab mittlerer Intensität.
Was sie ausdrücklich nicht tut und ohne klinische Begleitung nicht zu tun beginnen darf:
- Auf Gegenanzeigen prüfen (kürzliche Operationen, akute kardiale Ereignisse, vestibuläre Störungen, unkontrollierter Bluthochdruck).
- Sich an eine benannte Diagnose anpassen.
- Für eine einzelne Person ein therapeutisches Ergebnis behaupten.
10. Architektur
src/
app/ routes: / · /progress · /library · /method
components/
brand/ mark, wordmark, lockup
glass/ NightSky, Glass — the material layer
ui/ shadcn primitives (extended, not forked)
layout/ header, bottom tab bar, skip link, nav definition
practice/ stage, timer, transport, rail, screen,
full player + short-form feed, format switch
progress/ rank, milestones, stats
calendar/ week strip
setup/ option groups, setup sheet
library/ library browser
hooks/ timer, session runtime, chime, wake lock, hydration gate
lib/
domain/types.ts the vocabulary. Nothing decorative lives here
content/ verified video registry + app-narrated guided blocks
engine/ prescribe → select → week. Pure, locale-blind
progress/ ranks + derived stats. Pure
i18n/ detection, dictionaries (en·es·fr·de·zh), provider
store/ the only persisted state
docs/METHODOLOGY.md this file
docs/methodology/ its translations
scripts/verify-library.ts
Konventionen
lib/engine/*undlib/progress/*sind rein: kein React, kein DOM, kein implizitesDate.now()und keine Sprache. Jede Funktion bekommt das Datum als Argument, was Einheiten reproduzierbar und testbar macht, und gibt Wörterbuchschlüssel statt Sätzen zurück.- Ein Feld existiert in
domain/types.tsnur, wenn eine Motorregel es liest oder ein Label es darstellt. - kebab-case-Dateien, benannte Exporte, direkte Importe, keine Barrel-Dateien.
- Client-Komponenten sind Blätter.
PracticeScreenhält das gewählte Datum und das gewählte Format, alles andere wird abgeleitet. - Beide Player teilen eine Laufzeit.
useSessionRuntimebesitzt den Timer, den Klang, die Bildschirmsperre, das Einfrieren des Nachthimmels und das Protokoll, sodass die volle Einheit und der Feed nicht darüber uneins sein können, wie viel du geübt hast — oder darüber, was passiert, wenn du auf halbem Weg gehst, nämlich ein Teilprotokoll oberhalb von zwei Minuten und gar keines darunter.
10.1 Der Timer, im Einzelnen
Drei Entscheidungen, die es zu verteidigen lohnt:
- Die Uhr ist ein einziger Skalar. Eine Zahl — verstrichene Millisekunden in der ganzen Einheit — und der aktuelle Block wird daraus gegen kumulierte Grenzen abgeleitet. Springen, Zurück und Scrubben sind alle dieselbe Operation. Ein getrennter Countdown pro Block neben einer Gesamtzeit ist der Weg, auf dem diese beiden auseinanderdriften.
- Wanduhr, nicht Tick-Zählung. Verstrichen ist
committed + (now − startedAt), bei jedem Tick neu berechnet.+250 msje Intervall zu akkumulieren verliert über eine 45-Minuten-Einheit Minuten, weil Hintergrundtabs Timer hart drosseln. - Deshalb übersteht er den Hintergrund. Ein Telefon, das mitten in der Einheit sperrt, setzt zur richtigen Zeit fort, nicht zu der, zu der es gesperrt hat.
Der Timer ist außerdem die Quelle der Wahrheit für das Video: die Einheit zu pausieren pausiert YouTube, und dass ein Video sein eigenes Ende erreicht, beendet den Block nicht.
11. Bekannte Lücken
Ehrliche Liste. Sie sind nicht hinter „künftige Arbeit“ versteckt.
-
Noch keine Tests.
prescribe,select,weekundprogress/statssind rein und wurden testbar geschrieben; geschrieben wurde nichts. Das ist mit Abstand die größte Lücke. -
Nur
localStorage. Keine Synchronisation, kein Export, kein Import. Ein JSON-Export/Import-Knopf ist die billigste sinnvolle Abhilfe und gäbe zudem eine Möglichkeit, ein Jahr Praxis auf ein neues Telefon mitzunehmen. -
Die Sprache wird nach dem Mounten angewandt, das erste gezeichnete Bild ist also Englisch.Behoben. Die Sprache ist ein Routensegment: Englisch wird unpräfixiert unter/libraryausgeliefert, die anderen vier unter/de/libraryund so weiter, und<html lang>stimmt ab dem ersten Byte. Es gibt keine Korrektur beim Mounten und kein Aufblitzen von Englisch. -
Seiten-Behoben: sie kommen jetzt aus dem Wörterbuch, wie alles andere.<title>und Meta-Beschreibungen sind nur auf Englisch. -
Nur drei Routenfamilien sind tatsächlich übersetzt.Geschlossen. Jede Familie wird nun in allen fünf Sprachen ausgeliefert — die Kursseiten, die dreizehn/for/*-Essays, die Installationsanleitung und dieses Dokument, samt Metadaten, JSON-LD, Markdown-Spiegeln undllms.txt.src/lib/i18n/coverage.tsbleibt die Quelle der Wahrheit dafür, was indexiert werden darf:Routenfamilie Ausgelieferte Sprachen Indexierbar Start, /library,/library/teachers, Kursseiten,/for/*,/method,/installalle fünf ja, mit reziprokem hreflang/progress— nie, in keiner Sprache Für eine URL, die diese Sprache nicht ausliefert, wird keine
hreflang-Annotation ausgegeben; eine erfundene ist schlimmer als keine. Diese Regel hat sich nicht geändert — geändert hat sich, dass die URLs die Sprache nun ausliefern. -
Die Übersetzungen hatten keine muttersprachliche Durchsicht, und das ist nun die größte inhaltliche Lücke. Sie wurden maschinell erzeugt. Für das Drumherum und die Kursseiten ist das eine risikoarme Wette: kurze, sachliche Zeichenketten, stark durch die Daten um sie herum eingeschränkt. Für die
/for/*-Essays und für dieses Dokument ist sie es nicht, und §9 ist der Grund: das ist der Inhalt, bei dem falsch zu liegen jemandem schaden könnte, und eine maschinelle Übersetzung von Bewegungsanleitungen ist genau die Art von falsch, die sich flüssig liest. Das Gegenmittel steht in der Tabelle oben: eine Familie incoverage.tsauf[DEFAULT_LOCALE]zurückzusetzen ist eine Zeile, und das setzt die Varianten aufnoindex, nimmt sie aus der Sitemap und stellt die Kennzeichnung „(auf Englisch)“ auf jedem Link dorthin wieder her. -
Die Menübeschriftungen von
/installsind der Teil, der am ehesten falsch ist, und falsch auf eine Weise, die eine lesende Person nicht umgehen kann: sie müssen die Formulierung des jeweiligen Herstellers in dieser Sprache sein, keine Übersetzung des Englischen. Prüf sie an einem Gerät, bevor du diese Seite für fertig hältst. -
Chinesisch ist mit
hreflangallein nicht gelöst. Baidu ignoriert es und gewichtet Domain- und Hosting-Signale anders,/zhzu platzieren ist also ein eigenes Stück Arbeit und nicht dieselbe Arbeit noch einmal. -
Die Bibliothek im Sitzen ist schmaler als die im Stehen und neigt zu zwei Kanälen. Die Regel zur Kanalvielfalt lockert sich für sitzende Übende daher früher.
-
Kein Offline-Modus. Die geführten Blöcke funktionieren offline von Haus aus; die Videoblöcke nicht.
-
Zwei Behauptungen bleiben
⚠️ ungeprüft(§4.4 MET, §4.5 Atemfrequenz) und dürfen bis zur Prüfung nicht in öffentlichen Texten verwendet werden.
12. Änderungsprotokoll
| Datum | Änderung |
|---|---|
| 2026-08-01 | Erster Build. Marke, dreistufige Tokens, Liquid-Glass-System, geprüfte Bibliothek mit 51 Videos, Verordnungsmotor, Anti-Wiederholungs-Selektor, Wochenplaner. |
| 2026-08-01 | Visuelle Richtung geändert zu tiefer Nacht und Mondlicht, dunkel zuerst. Cormorant + Inter ersetzen Newsreader + Geist. Vollständiger Mobil-Durchgang: Tab-Leiste unten, sichere Bereiche, Überlaufschutz, ringbezogene Timergröße. |
| 2026-08-01 | Automatische Erkennung der Browsersprache mit en · es · fr · de · zh. Motor umgebaut, sodass er übersetzbare Schlüssel statt Prosa ausgibt. |
| 2026-08-01 | Fortschritt ergänzt: neun Ränge, neun Meilensteine, Serien — alles aus dem Protokoll abgeleitet, alles in Tagen statt in Volumen gemessen. |
| 2026-08-02 | Kurzformat. prescribe() nimmt ein Format; "shorts" schneidet jede Phase in Karten von 45–105 s, und der Feed spielt und scrollt sich selbst, im Vollbild, und endet, wenn die Einheit endet. Bibliothek auf 287 Kurse gewachsen (93 unter drei Minuten) und 41 geführte Blöcke, 29 davon einzelne benannte Grundbausteine mit Chinesisch und Pinyin. |
| 2026-08-02 | Jede Routenfamilie übersetzt. Kursseiten, die sieben /for/*-Essays, /install und dieses Dokument existieren nun in allen fünf Sprachen, samt Metadaten, JSON-LD, Markdown-Spiegeln und einem llms.txt je Sprache. Die Methodik-Anker bleiben konstruktionsbedingt englisch, sodass eine Zitatstelle in jeder Sprache auflöst. Die Installations-Menübeschriftungen tragen die Formulierung des jeweiligen Herstellers. Muttersprachliche Durchsicht steht aus — siehe §11. |
| 2026-08-02 | Beide Player sagen jetzt, was als Nächstes kommt, und bieten einen Weg daran vorbei — der Eröffnungsblock hatte kein Video, und mehrere Leute lasen den stehenden Bildschirm als defekt. Die Sprachpräferenz wurde von einem Score-Multiplikator zu einer Präferenz nach der Wahl, womit ein Fall behoben ist, in dem eine nicht englischsprachige Person weniger wortlose Kurse bekommen konnte als eine englischsprachige. Der Rückfall auf geführte Blöcke umgeht die Intensitätsobergrenze nicht mehr. |
| 2026-08-15 | Sechs weitere /for/*-Seiten und ein zusätzlicher Abschnitt auf jeder der ursprünglichen sieben. Die neuen benennen eine Sache, statt eine Situation zu beschreiben — die Yang-24er-Form, Shibashi, Ba Duan Jin und die klassischen Sets, Stehmeditation, zwanzig Minuten, fünf Minuten —, denn wer weiß, was Ba Duan Jin ist, sucht nicht nach „Qigong für steife Gelenke“. Drei der sechs filtern über ein Titelmuster statt über ein Feld, dokumentiert in topics.ts: dass ein Kurs ein kanonisches Set lehrt, führt die Registry nicht, und jede Lehrperson schreibt es in den Titel. Alle dreizehn existieren in allen fünf Sprachen. |
Quellen
- Sherrington C. et al. Exercise for preventing falls in older people living in the community. Cochrane Database of Systematic Reviews, 2019
- Li F. et al. Effectiveness of a Therapeutic Tai Ji Quan Intervention vs a Multimodal Exercise Intervention to Prevent Falls Among Older Adults at High Risk of Falling. JAMA Internal Medicine, 2018
- Wang C. et al. Comparative Effectiveness of Tai Chi Versus Physical Therapy for Knee Osteoarthritis: A Randomized Trial. Annals of Internal Medicine, 2016
- WHO Guidelines on Physical Activity and Sedentary Behaviour, 2020 — Recommendations
- Tai Ji Quan: Moving for Better Balance