Neue Claude Änderungen

This commit is contained in:
jamulix 2025-10-27 15:46:11 +01:00 committed by jamulix (aider)
commit b238632532
4 changed files with 457 additions and 48 deletions

2
.gitignore vendored
View file

@ -1,4 +1,6 @@
.aider*
.claude/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

450
HILFE.md
View file

@ -1,43 +1,425 @@
# Typewriter Trainer - Hilfe
# 📖 Typewriter Trainer - Online-Hilfe
## Was ist das?
Der Typewriter Trainer ist ein webbasierter Tipptrainer, der Ihnen hilft, das Zehnfingerschreiben zu erlernen und Ihre Tippgeschwindigkeit zu verbessern.
Willkommen beim Typewriter Trainer! Diese Hilfe erklärt alle Funktionen und gibt Tipps für effektives Tipptraining.
## Bedienung
---
### Grundfunktionen
- **Tippen**: Tippen Sie den angezeigten Text direkt im Vorlagenfeld
- **Cursor**: Der blaue/cyanfarbene Unterstrich zeigt Ihre aktuelle Position
- **Farben**:
- Grün: Korrekt getippte Zeichen
- Rot: Falsche Zeichen (mit orangefarbener Überlagerung des falsch eingegebenen Zeichens)
## 🎯 Was ist Typewriter Trainer?
### Steuerung
- **Pfeiltasten**: Bewegen den Cursor nach links/rechts
- **Backspace**: Löscht Zeichen an der Cursor-Position
- **Enter**: Wird automatisch erkannt, wenn im Vorlagentext vorhanden
Typewriter Trainer ist ein webbasierter Tipptrainer, der Ihnen hilft:
- Das **Zehnfingersystem** zu erlernen
- Ihre **Tippgeschwindigkeit** zu verbessern
- Ihre **Genauigkeit** zu steigern
- Ihren **Fortschritt** zu verfolgen
### Symbole in der Kopfzeile
- **Lautsprecher**: Metronom ein/aus (standardmäßig aktiv)
- **Schloss**: ErrorLock - bei geschlossenem Schloss müssen Fehler korrigiert werden, bevor weitergeschrieben werden kann
- **Play/Pause**: Tippen pausieren/fortsetzen
- **Mond/Sonne**: Dunkel/Hell-Modus wechseln
**Besonderheit**: Intelligentes adaptives Metronom, das sich automatisch an Ihre Geschwindigkeit anpasst!
### Buttons
- **Weiter**: Nächste Lektion laden
- **Leistung**: Detaillierte Statistiken ein-/ausblenden
- **Statistik**: Zur Statistik-Seite mit Diagrammen navigieren
- **Beenden**: Sitzung beenden
---
### Statistiken
- **ZPM**: Zeichen pro Minute
- **WPM**: Wörter pro Minute (1 Wort = 5 Zeichen)
- **Fehlerrate**: Prozentualer Anteil der Fehler
## 🚀 Schnellstart
## Tipps für bessere Ergebnisse
1. Üben Sie regelmäßig
2. Konzentrieren Sie sich auf Genauigkeit vor Geschwindigkeit
3. Nutzen Sie das Metronom für einen gleichmäßigen Rhythmus
4. Korrigieren Sie Fehler sofort mit Backspace
1. **Beginnen Sie zu tippen** - Der Cursor zeigt Ihre Position
2. **Tippen Sie den Text ab** - Grün = richtig, Rot = falsch
3. **Beobachten Sie Ihre Statistiken** - ZPM, WPM, Fehlerrate
4. **Arbeiten Sie sich durch die Lektionen** - 43 aufbauende Übungen
Viel Erfolg beim Training!
---
## ⌨️ Grundlegende Bedienung
### Wie tippe ich?
**Direkt im Vorlagenfenster tippen:**
- Es gibt KEIN separates Eingabefeld
- Der Text erscheint direkt in der Vorlage
- Der **blinkende Unterstrich** zeigt Ihre aktuelle Position
### Farbcodes verstehen
| Farbe | Bedeutung |
|-------|-----------|
| 🟢 **Grün** | Korrekt getipptes Zeichen |
| 🔴 **Rot** | Falsches Zeichen |
| 🟠 **Orange** | Das falsch eingegebene Zeichen (erscheint über dem roten) |
| ⚪ **Standard** | Noch nicht getippt |
### Sonderzeichen im Text
| Symbol | Bedeutung |
|--------|-----------|
| `·` | Leerzeichen |
| `→` | Tabulator |
| `↵` | Zeilenumbruch (Enter) |
---
## 🎮 Steuerung
### Tastatur-Befehle
| Taste | Funktion |
|-------|----------|
| **Zeichen** | Zeichen eingeben |
| **Backspace** | Löscht das Zeichen an der Cursor-Position |
| **←** (Links) | Cursor nach links bewegen |
| **→** (Rechts) | Cursor nach rechts bewegen |
| **Enter** | Zeilenumbruch (wenn im Text vorhanden) |
### Was NICHT funktioniert
- ❌ **Copy & Paste** - Ist deaktiviert (Anti-Cheat)
- ❌ **Strg+C / Strg+V** - Wird blockiert
- ❌ **Rechtsklick** - Kontextmenü ist deaktiviert
- ❌ **Maus-Auswahl** - Text kann nicht mit der Maus ausgewählt werden
---
## 🎛️ Symbole in der Kopfzeile
Von links nach rechts:
### 🔊 Lautsprecher-Symbol
- **Ein** (🔊): Metronom spielt Klick-Geräusche
- **Aus** (🔇): Metronom stumm (visuelles Feedback bleibt)
- **Tipp**: Hilfreich für rhythmisches Tippen
### 🔒 Schloss-Symbol (ErrorLock)
- **Offen** (🔓): Sie können über Fehler hinweg tippen
- **Geschlossen** (🔒): Fehler müssen erst korrigiert werden
- **Empfehlung**: Geschlossen für Anfänger, offen für Fortgeschrittene
### ⏯️ Play/Pause
- **Pause** (⏸️): Zeitnahme läuft
- **Play** (▶️): Sitzung ist pausiert
- **Nutzen**: Pause bei Unterbrechungen
### 🌙 Theme-Toggle
- **Sonne** (☀️): Heller Modus aktiv
- **Mond** (🌙): Dunkler Modus aktiv
- **Automatisch**: Einstellung wird gespeichert
### ⚙️ Einstellungen
- Öffnet die Einstellungsseite
- Metronom konfigurieren
- Anzeige-Optionen
### ❓ Hilfe
- Öffnet diese Hilfe
- Jederzeit verfügbar
---
## 🎼 Das adaptive Metronom
### Was ist das?
Ein **intelligentes Metronom**, das sich automatisch Ihrer Geschwindigkeit anpasst:
- ✅ Hohe Genauigkeit → Tempo erhöht sich
- ⚠️ Niedrige Genauigkeit → Tempo verlangsamt sich
- 🎯 Zielgenauigkeit: 96%
### Modi
**Automatisch** (Standard):
- Metronom passt sich Ihrer Leistung an
- Empfohlen für die meisten Benutzer
**Manuell**:
- Feste Geschwindigkeit (in Einstellungen)
- Für fortgeschrittene Benutzer
### Anpassungsregeln
Das Metronom reagiert so:
1. **15+ korrekte Zeichen hintereinander** → +3% schneller
2. **Genauigkeit > 95%** → +2% schneller
3. **Genauigkeit < 85%** → -8% langsamer
4. **Genauigkeit 85-91%** → -3% langsamer
5. **Genauigkeit 91-95%** → +1% schneller
### Grenzen
- **Minimum**: 40 BPM (Beats pro Minute)
- **Maximum**: 200 BPM
---
## 📊 Statistiken verstehen
### Echtzeit-Statistiken (während des Tippens)
| Metrik | Bedeutung | Berechnung |
|--------|-----------|------------|
| **Korrekte Zeichen** | Richtig getippte Zeichen | Zähler |
| **Falsche Zeichen** | Fehler und Korrekturen | Zähler |
| **Tastaturanschläge** | Alle Tasten inkl. Backspace | Gesamt |
| **ZPM** | Zeichen pro Minute | (Korrekte Zeichen / Zeit) × 60 |
| **Fehler in %** | Fehlerrate | (Falsche / Gesamt) × 100 |
| **WPM** | Wörter pro Minute | (Korrekte / 5) / (Zeit / 60) |
### Historische Statistiken
Auf der **Statistik-Seite** finden Sie:
- 📈 **Verlaufs-Diagramme** - Ihre Entwicklung über Zeit
- 📊 **Leistungs-Vergleich** - Pro Lektion
- 🎯 **Best Scores** - Ihre persönlichen Rekorde
---
## 📂 Buttons und Navigation
### Haupt-Buttons (unten)
| Button | Funktion | Shortcut |
|--------|----------|----------|
| **Weiter** (🟢) | Nächste Lektion laden | - |
| **Leistung** | Statistik ein-/ausblenden | - |
| **Statistik** | Zur Statistik-Seite | - |
| **Beenden** (🔴) | Sitzung beenden | - |
### Lektionsauswahl
- **Zahlen** (1.1, 1.2, ...): Klicken zum Wechseln
- **Fett + Rot**: Aktuelle Lektion
- **Standard**: Verfügbare Lektionen
- **Fortschrittsbalken**: Zeigt Gesamtfortschritt
---
## 🎓 Lektions-System
### Aufbau
**43 Lektionen** in aufsteigendem Schwierigkeitsgrad:
1. **Lektion 1.x**: Grundstellung (f, j, d, k, s, l, a, ö)
2. **Lektion 2.x**: Erweiterung (e, i)
3. **Lektion 3.x**: Umschalter (Großbuchstaben)
4. **Lektion 4.x**: Weitere Tasten (g, h)
5. **Lektion 5.x**: Satzzeichen (, ; c)
6. **Lektion 6.x**: Zahlenreihe (r, u)
7. **Lektion 7.x**: Außenbereich (v, m)
8. **Lektion 8.x**: Vollständig (t, z)
### Fortschritt
- ✅ **Lektion abgeschlossen**: Wenn alle Zeichen korrekt oder falsch eingegeben wurden
- 💾 **Automatisches Speichern**: Ihr Fortschritt wird kontinuierlich gespeichert
- 🔄 **Wiederholbar**: Jede Lektion kann beliebig oft wiederholt werden
---
## 📜 Scroll-Verhalten (NEU!)
### Intelligentes Scrollen
Der Text scrollt **automatisch**, sodass:
- 📍 Der Cursor **immer in der ersten Zeile** bleibt
- 👁️ Sie **nie nach unten schauen** müssen
- 🎯 Optimale **Leseposition** garantiert ist
### Manuelles Scrollen
- ✋ Sie können **jederzeit manuell scrollen**
- ⌨️ Bei der **nächsten Tasteneingabe** springt die Ansicht zurück zum Cursor
- 📏 Genug Platz oben für **Fehler-Anzeige** (orangefarbene Zeichen)
---
## 💡 Tipps für bessere Ergebnisse
### Für Anfänger
1. ✅ **Genauigkeit vor Geschwindigkeit**
- Konzentrieren Sie sich zuerst auf korrektes Tippen
- Die Geschwindigkeit kommt automatisch
2. 🔒 **ErrorLock aktivieren**
- Schließen Sie das Schloss
- So müssen Sie Fehler sofort korrigieren
3. 🎼 **Nutzen Sie das Metronom**
- Der Rhythmus hilft beim gleichmäßigen Tippen
- Lassen Sie es auf "Automatisch"
4. 📅 **Üben Sie regelmäßig**
- 15-30 Minuten täglich sind besser als 2 Stunden einmal pro Woche
5. 👀 **Schauen Sie auf den Bildschirm, nicht auf die Tastatur**
- Dies ist der Schlüssel zum Zehnfingersystem
### Für Fortgeschrittene
1. ⚡ **Höhere Geschwindigkeiten**
- Lassen Sie das Metronom beschleunigen
- Behalten Sie 95%+ Genauigkeit
2. 🔓 **ErrorLock deaktivieren**
- Trainiert flüssiges Tippen
- Lernen Sie, Fehler "durchzutippen"
3. 🎯 **Fokus auf schwierige Zeichen**
- Wiederholen Sie Lektionen mit Problemzeichen
- Nutzen Sie die Statistik zur Identifikation
4. 🔁 **Variieren Sie die Übungen**
- Wechseln Sie zwischen Lektionen
- Halten Sie das Training interessant
---
## ❓ Häufig gestellte Fragen (FAQ)
### Warum kann ich nicht in ein Eingabefeld tippen?
**Antwort**: Es gibt kein separates Eingabefeld! Tippen Sie direkt, und der Text erscheint in der Vorlage.
### Warum wird mein Fortschritt nicht gespeichert?
**Antwort**: Der Fortschritt wird automatisch gespeichert. Stellen Sie sicher, dass:
- ✅ Cookies aktiviert sind
- ✅ Die Datenbank läuft (bei lokaler Installation)
### Wie kann ich Copy & Paste verwenden?
**Antwort**: Das ist **absichtlich deaktiviert**! Der Tipptrainer soll das manuelle Tippen trainieren, nicht das Kopieren.
### Das Metronom ist zu schnell/langsam!
**Antwort**:
- **Automatisch-Modus**: Passt sich Ihrer Genauigkeit an - üben Sie für bessere Anpassung
- **Manuell-Modus**: Gehen Sie zu Einstellungen → Feste Geschwindigkeit einstellen
### Kann ich meine eigenen Lektionen erstellen?
**Antwort**: Aktuell nicht über die Benutzeroberfläche. Technisch versierte Benutzer können `data/lessons.json` bearbeiten.
### Werden meine Daten synchronisiert?
**Antwort**: Bei lokaler Installation bleiben die Daten lokal. Bei Server-Installation hängt es von der Konfiguration ab.
### Ich sehe keine Statistiken!
**Antwort**: Klicken Sie auf den Button **"Leistung"** unterhalb der Vorlage, um die Echtzeit-Statistiken einzublenden.
### Funktioniert das offline?
**Antwort**: Ja, bei lokaler Installation! Nach dem ersten Laden läuft alles ohne Internet.
---
## ⚙️ Einstellungen
Über das **Zahnrad-Symbol** (⚙️) erreichen Sie:
### Metronom-Einstellungen
- **Modus**: Automatisch / Manuell
- **Geschwindigkeit**: BPM-Wert (bei Manuell)
- **Sound**: Beep / Klick
- **Ziel-Fehlerrate**: Anpassungsschwelle
### Anzeige-Einstellungen
- **Geschwindigkeits-Anzeige**: ZPM / WPM
- **Theme**: Hell / Dunkel (auch über 🌙-Symbol)
---
## 🆘 Probleme & Lösungen
### Text erscheint nicht beim Tippen
**Lösung**:
1. Klicken Sie irgendwo ins Browserfenster
2. Stellen Sie sicher, dass kein Eingabefeld aktiv ist
3. Aktualisieren Sie die Seite (F5)
### Cursor springt beim Scrollen
**Normal!** Das ist gewollt - bei der nächsten Taste springt er zurück zur richtigen Position.
### Metronom hört nicht auf
**Lösung**: Klicken Sie auf das 🔊-Symbol zum Stummschalten oder ⏸️ zum Pausieren.
### Statistiken zeigen seltsame Werte
**Mögliche Ursachen**:
- Zeit läuft noch (keine Pause gemacht)
- Viele Korrekturen (erhöhen Tastaturanschläge)
- **Normal**: Bei wenigen Zeichen sind die Werte schwankend
### Seite lädt nicht / Fehler
**Lösung**:
1. Browser-Cache leeren (Strg+F5)
2. Cookies aktivieren
3. JavaScript aktivieren (erforderlich)
4. Anderen Browser testen
---
## 📱 Tastatur-Layout
### Deutsche QWERTZ-Tastatur (Standard)
```
` 1 2 3 4 5 6 7 8 9 0 ß ´
Q W E R T Z U I O P Ü +
A S D F G H J K L Ö Ä #
Y X C V B N M , . -
```
**Finger-Zuordnung**:
- **Kleine Finger**: Q, A, Y, Ö, P, Ü, -, Ä
- **Ringfinger**: W, S, X, L, O, .
- **Mittelfinger**: E, D, C, K, I, ,
- **Zeigefinger**: R, F, V, G, T, B, U, J, M, H, Z, N
**Grundstellung**: A S D F (links) - J K L Ö (rechts)
---
## 🎖️ Erfolgs-Tipps
### 🥉 Anfänger (< 100 ZPM)
- Fokus auf Genauigkeit (95%+)
- ErrorLock aktiviert
- Langsames Metronom
- 15 Minuten täglich
### 🥈 Fortgeschritten (100-200 ZPM)
- Balance zwischen Geschwindigkeit und Genauigkeit
- ErrorLock nach Bedarf
- Adaptives Metronom
- Schwierige Lektionen wiederholen
### 🥇 Experte (> 200 ZPM)
- Geschwindigkeit maximieren bei 95%+ Genauigkeit
- ErrorLock aus
- Schnelles Metronom
- Eigene Texte üben
---
## 📞 Weitere Hilfe
- 📖 **Projekt-Dokumentation**: Siehe README.md
- 🐛 **Bug melden**: GitHub Issues
- 💡 **Feature-Vorschlag**: GitHub Discussions
- 📧 **Support**: Siehe README für Kontakt
---
## 🎓 Abschließende Worte
**Zehnfingerschreiben ist eine Investition!**
- ⏱️ **Zeit sparen**: Dauert 2-4 Wochen zu lernen
- 💪 **Lifetime Skill**: Nutzen Sie es Jahrzehnte lang
- 🚀 **Produktivität**: Bis zu 3x schneller tippen
- 🧠 **Weniger Ermüdung**: Ergonomischer für Ihre Hände
**Viel Erfolg beim Training!** 💪
---
*Typewriter Trainer v1.2 - Mit ❤️ entwickelt für effektives Tipptraining*

25
app.py
View file

@ -838,6 +838,31 @@ def export_statistics_json() -> Response:
logger.error(f"Fehler beim JSON-Export: {e}", exc_info=True)
return jsonify({'error': 'Fehler beim Export'}), 500
@app.route('/hilfe')
def hilfe():
"""Online-Hilfe anzeigen"""
try:
import markdown
with open('HILFE.md', 'r', encoding='utf-8') as f:
hilfe_content = f.read()
# Konvertiere Markdown zu HTML
hilfe_html = markdown.markdown(
hilfe_content,
extensions=['tables', 'fenced_code', 'nl2br']
)
return render_template('hilfe.html', hilfe_html=hilfe_html)
except ImportError:
logger.warning("Markdown-Modul nicht installiert, verwende Plain-Text-Anzeige")
with open('HILFE.md', 'r', encoding='utf-8') as f:
hilfe_content = f.read()
return render_template('hilfe.html', hilfe_html=f"<pre>{hilfe_content}</pre>")
except Exception as e:
logger.error(f"Fehler beim Laden der Hilfe: {e}")
return render_template('hilfe.html', hilfe_html="<p>Hilfe konnte nicht geladen werden.</p>")
@app.route('/settings')
def settings():
"""Einstellungsseite"""

View file

@ -45,12 +45,12 @@
<i data-lucide="pause" id="play-pause-pause" style="width: 24px; height: 24px; position: absolute; top: 0; left: 0;"></i>
<i data-lucide="play" id="play-pause-play" style="width: 24px; height: 24px; position: absolute; top: 0; left: 0; display: none;"></i>
</div>
<button id="help-toggle"
style="width: 24px; height: 24px; cursor: pointer; border: none; background: none; padding: 0; color: white;"
aria-label="Hilfe öffnen"
type="button">
<a href="{{ url_for('hilfe') }}"
style="width: 24px; height: 24px; cursor: pointer; color: white; text-decoration: none; display: inline-block;"
aria-label="Hilfe öffnen"
title="Hilfe öffnen">
<i data-lucide="help-circle" style="width: 24px; height: 24px;" aria-hidden="true"></i>
</button>
</a>
</div>
</div>
</div>