Skip to content

Conversation

@Gokujo
Copy link
Owner

@Gokujo Gokujo commented Nov 14, 2025

TBD

Beschreibe Änderungen:
- Normaliere Pausendaten auf das Datum des Arbeitsbeginns, damit
  Pausenberechnungen auch funktionieren, wenn Pausen mit anderem Datum
  erstellt wurden.
- Berechne Pausen-Overlap robuster: zähle nur den überlappenden Anteil
  einer Pause mit der Arbeitszeit (inkl. Pausen, die vor Arbeitsbeginn
  starten und danach enden).
- Stelle sicher, dass aktive Pausen die Berechnung einfrieren, indem
  calculationTime bei Pausenstart benutzt wird; vermeide doppelte
  Zählung aktiver Pausen.
- Füge Unit- und Integrationstests hinzu, die das Einfrieren der
  verbleibenden Zeit und das Fallback-Verhalten bei fehlerhaften Pausen
  (z. B. null Startzeit) prüfen.
- Aktualisiere Changelog mit Fehlerbehebungen, Änderungen und
  technischen Details (Pausen-Normalisierung, Sekunden-Genauigkeit,
  Endlosschleifen-Fixes).

Warum:
- Behebt Inkonsistenzen zwischen Anzeige von geleisteter Arbeitszeit und
  verbleibender Zeit während aktiver Pausen sowie Fehler bei Pausen, die
  auf einem anderen Datum liegen. Verbessert Stabilität, Genauigkeit und
  verhindert Re-Render-/Hook-Endlosschleifen.
Füge ein .github/scripts-Verzeichnis mit zwei Shell-Skripten hinzu:
- prepare-pr.sh: Erzeugt eine PR-Beschreibung aus einem Template, extrahiert
  die Version aus dem Branch-Namen oder nimmt übergebene Parameter, ermittelt
  automatisch die Vorgängerversion (Git-Branches oder CHANGELOG.md), extrahiert
  den Changelog-Eintrag und schreibt die fertige Beschreibung nach
  /tmp/pr_description.md.
- extract-changelog.sh: Extrahiert die Changelog-Sektion für eine angegebene
  Version aus CHANGELOG.md und gibt sie auf stdout aus.

Füge außerdem eine README für die Scripts und ein Pull Request Template hinzu,
das Platzhalter für Version, Vorgängerversion und Datum enthält sowie Felder
für automatisierte Statistiken und Checklisten. Ziel ist, PR-Erstellung und
Release-Notes zu standardisieren und zu automatisieren.
Ändere die GitHub Actions so, dass der aus CHANGELOG.md
extrahierte Eintrag base64-codiert an Outputs geschrieben wird, um
Sonderzeichen und Zeilenumbrüche zuverlässig zu handhaben. Unterstütze
sowohl Linux- als auch macOS-Varianten von base64.

Dekodiere das base64-kodierte Changelog in der JavaScript-Action und
baue den Kommentar durch string-Konkatenation zusammen, statt rohe
Template-Strings zu verwenden. Dadurch vermeide ich Probleme mit
Einschüben und Formatierung beim Erzeugen des Issue-/PR-Kommentars.
Füge explizit minimale Permissions zum PR-Changelog-Workflow
hinzu, damit der Job nur die benötigten Rechte besitzt:
- contents: read
- pull-requests: write
- issues: write

Begrenze dadurch die Berechtigungen des Workflows auf das Nötigste,
erhöhe die Sicherheit und erfülle Prinzip der geringsten Rechte.
@github-actions
Copy link

github-actions bot commented Nov 14, 2025

📋 Automatisch generierte Changelog-Informationen

Version: v0.2.6
Vorgängerversion: v0.2.5

📊 Statistik

  • Geänderte Dateien: 20
  • Hinzugefügte Zeilen: 1803
  • Entfernte Zeilen: 1137

📝 Changelog-Eintrag

## [0.2.6] - 2025-11-14

### Fixed

- **Verbleibende Zeit während Pause**: "Verbleibende Zeit" wird jetzt korrekt eingefroren, wenn eine aktive Pause erkannt wird (konsistent mit geleisteter Arbeitszeit)
- **Sekundenzähler**: Sekundenzähler aktualisiert sich jetzt korrekt jede Sekunde (war zuvor bei 0 Sekunden eingefroren)
- **Überstunden-Anzeige**: Überstunden werden jetzt korrekt berechnet und aktualisiert, auch mit Sekunden-Präzision
- **Arbeitsbeginn-Änderung**: Wenn der "Tatsächlicher Arbeitsbeginn" geändert wird, wird die geleistete Arbeitszeit sofort neu berechnet und angezeigt
- **Pausenberechnung**: Pausen, die vor dem Arbeitsbeginn starten, aber danach enden, werden jetzt korrekt behandelt (nur der überlappende Teil wird abgezogen)
- **Pausen-Datumsnormalisierung**: Pausen-Daten werden jetzt automatisch auf das Datum des Arbeitsbeginns normalisiert, um korrekte Berechnungen zu gewährleisten
- **Endlosschleifen behoben**: Mehrere "Maximum update depth exceeded" Fehler behoben durch:
  - Verwendung funktionaler State-Updates in `useTimeTracking` Hook
  - Entfernung von `validateAndSetWarnings` Callback-Dependencies
  - Optimierung der `useEffect` Dependencies
  - Prüfung auf tatsächliche Änderungen vor State-Updates

### Changed

- `TimeDisplay` Komponente: Verbleibende Zeit-Berechnung verwendet jetzt `calculationTime` (eingefroren bei aktiver Pause) statt `now`
- `calculateWorkedTime` Funktion: Pausen-Overlap-Berechnung verbessert für Pausen, die vor Arbeitsbeginn starten
- `useTimeTracking` Hook: `ensureRequiredBreaks` verwendet jetzt funktionales State-Update, um Endlosschleifen zu vermeiden
- `useTimeTracking` Hook: Validierung wird jetzt direkt in `useEffect` durchgeführt statt über Callback
- Meta-Tag aktualisiert: `mobile-web-app-capable` hinzugefügt (neuer Standard), `apple-mobile-web-app-capable` bleibt für Rückwärtskompatibilität

### Technical

- Verbesserte Fehlerbehandlung: Graceful degradation bei Pausenerkennungsfehlern
- Performance-Optimierung: Reduzierte unnötige Re-Renders durch State-Update-Prüfungen
- Code-Stabilität: Eliminierung von React Hooks Endlosschleifen

Diese Informationen wurden automatisch aus CHANGELOG.md extrahiert.

Ersetzt Platzhalter in der PR-Template-Erzeugung durch Markdown-Links
statt reiner Versionsstrings. Dadurch enthalten automatisch generierte PR-
Beschreibungen direkte Links zur Release-Branchseite für die neue Version
und zur Release-Tag-Seite für die vorherige Version, was Navigation und
Review erleichtert.
Füge einen neuen GitHub Actions Workflow hinzu, der PRs von dependabot
automatisch zur nächsten Release-Branch (releases/vX.Y.Z) routet. Der
Workflow bestimmt die aktuelle Version,chnet die nächste Patch-
Version, erstellt die Ziel-Branch falls nötig (von main/master) und
aktualisiert die Basis des Pull Requests.

Ergänze Hilfsskripte zum Ermitteln der neuesten Version und zur
Berechnung der nächsten Version (.github/scripts/get-latest-version.sh
und get-next-version.sh). Die Skripte holen Branches/Tags, parsen und
validieren Versionsnummern und geben die passende Version zurück.

Passe den pr-changelog Workflow an, sodass er das neue Helferskript
verwendet, um die vorherige Version zuverlässiger zu bestimmen. Entferne
die veraltete README im scripts-Verzeichnis, da die Skripte direkt
eingebunden werden.
@Gokujo Gokujo merged commit 880a816 into main Nov 14, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants