Skip to content

Releases: Alsweider/Teefax

v0.30.1

Choose a tag to compare

@github-actions github-actions released this 01 Jul 22:12
  • Überlauf von system_clock vorgebeugt durch konservative Begrenzung auf 100 Jahre.
  • Für extrem ferne --at-Daten (ab 100 Jahre) wird die Restzeit jetzt sekündlich neu berechnet. Das vermeidet Überlauf, Summierung von Rundungsfehlern und Quarzdrift der steady_clock, sodass die Wanduhrzeit auch nach Jahrtausenden pünktlich eingehalten werden kann.

Full Changelog: v0.30.0...v0.30.1

v0.30.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 20:11
  • Der Alarm kann jetzt viele Jahrtausende in die Zukunft geplant werden. Beispielsweise: teefax --at 9595-01-01 oder teefax 5000000year. Bei der Anzeige der verbleibenden Zeit ist wie immer zu beachten, dass sie aktuell in Standardeinheiten verläuft: ein Jahr hat also immer 365 Tage und ein Monat hat 30 Tage. Außerdem sind die Tage aus den Schaltjahren zu berücksichtigen, wenn mit --at ein genaues Datum angepeilt wird. Der Weckton sollte also zum korrekten Kalenderdatum und zur rechten Zeit erklingen, auch wenn die angezeigte Wartezeit aufgrund der Standardeinheiten und Schaltjahre verwirrend erscheint.
  • Probleme mit der Tonausgabe über Bluetooth korrigiert. Zuvor war der Ton manchmal am Anfang oder Ende abgeschnitten. Das Wachhalten des Audiogeräts im richtigen Moment wurde verbessert.
2026-07-01 22_52_16-Teefax - 7573y 6mo 13d 1h 7m 46s 2026-07-01 22_50_24-Teefax - 4999999y 12mo 4d 23h 59m 50s

Full Changelog: v0.29.1...v0.30.0

v0.29.1

Choose a tag to compare

@github-actions github-actions released this 24 Jun 10:25
  • Überflüssige Warnmeldungen in Schleifen mit --open und --focus unterdrückt. Etwa bei teefax 5s --loop 3 --mute --nomsg --focus "___nichtvorhanden___" waren in jedem Durchlauf neue Zeilen mit Warnungen entstanden und hatten den Durchlaufzähler nach unten verschoben. Jetzt entsteht nur noch beim Start und Programmende eine Warnmeldung, wobei der Zähler mit Fortschrittsbalken konstant in derselben Zeile bleibt, in welcher er beginnt.

Full Changelog: v0.29.0...v0.29.1

v0.29.0

Choose a tag to compare

@github-actions github-actions released this 22 Jun 11:02
  • --eco: Energiesparmodus für Akkubetrieb und ältere Rechner (vor Windows 10.0.2004). Ohne diesen Schalter sorgt Teefax intern dafür, dass Windows den Timer mit hoher Genauigkeit (timeBeginPeriod(1)) weckt. Das kostet auf manchen Systemen etwas Batterie und kann auf sehr altem Windows andere Programme leicht belasten. Mit --eco verzichtet Teefax darauf. Der Countdown läuft weiterhin zuverlässig. Die Genauigkeit bleibt für alle Alltagszwecke vollkommen ausreichend (~15 ms statt ~1 ms Aufwachversatz).
  • Im normalen Betrieb (ohne --eco) meldet sich Teefax beim Windows-Scheduler jetzt mit höherer Dringlichkeit (THREAD_PRIORITY_TIME_CRITICAL), sobald der Countdown läuft. Da Teefax die meiste Zeit ohnehin schläft ( sleep_until), erzeugt das keine zusätzliche CPU-Last. Der Timer feuert lediglich etwas pünktlicher ab (Versatz sinkt auf ca. ca. 0,5–1 ms.).
  • Auf neueren Windows-Versionen (Windows 10 Build 2004, ab 2020, Windows 11) hat Windows begonnen, solche Genauigkeitsanfragen (timeBeginPeriod(1)) von Programmen im Akkubetrieb stillschweigend zu übergehen. Teefax teilt Windows nun ausdrücklich mit, dass es von dieser Einschränkung ausgenommen werden möchte (SetProcessInformation, PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION). Auf älteren Windows-Versionen wird dieser Aufruf allerdings ignoriert. Das Verhalten ist dort identisch mit früheren Teefax-Versionen.

Full Changelog: v0.28.4...v0.29.0

v0.28.4

Choose a tag to compare

@github-actions github-actions released this 20 Jun 08:32

Optionsliste der Argumente mit freien Werten erweitert um -c, --daily und -d, damit es auch in diesen Fällen nicht zu Verwechslungen mit Makronamen kommen kann.

Full Changelog: v0.28.3...v0.28.4

v0.28.3

Choose a tag to compare

@github-actions github-actions released this 18 Jun 02:05
  • Bei teefax 5s --loop --for 123abc (--for mit einer ungültigen Zeiteinheit) kam es zu einer doppelten Fehlermeldung ohne Zeilenumbruch und der QuickEdit-Status der Konsole wurde aufgrund des fehlerbedingten Abbruchs nicht sauber zurückgesetzt. Beides behoben.
  • Wenn eine benutzerdefinierte Meldung einem Makronamen aus der teefax.ini entspricht, kam es zu einer brisanten Vermischung: Gab der Benutzer teefax 3m --msg "Tee" (also einen 3-Minuten-Alarm mit benutzerdefinierter Erinnerungsnachricht "Tee") ein, während schon ein Makro namens Tee mit z. B. 5-Minuten-Alarm existierte, wurde das Makro aufgerufen, wobei jedoch die vordefinierte Zeit (5 Minuten) des Makros durch die in der Konsole eingegebene Zeit (3 Minuten) ersetzt wurde. Deshalb werden nun Argumente wie --msg und --cmd (nach denen freie Werte und Namen angegeben werden können) bei Makros übersprungen.

Full Changelog: v0.28.2...v0.28.3

v0.28.2

Choose a tag to compare

@github-actions github-actions released this 17 Jun 06:46
  • --for startet nun die Schleifen während seiner gesamten Laufzeit, auch wenn die Zielzeit der letzten Schleife die --for-Dauer überschreitet. Das scheint mir der naheliegendere Ansatz zu sein. Zuvor wurde eine Schleife nicht gestartet, wenn ihre Zielzeit auf einen Zeitpunkt außerhalb der --for-Zeit fiel. teefax 5s --loop --for 7s --mute --nomsg bewirkt also zwei volle Durchläufe (10 Sekunden) statt nur einem, da der zweite Durchlauf noch vor Sekunde 7 startet.

Full Changelog: v0.28.1...v0.28.2

v0.28.1

Choose a tag to compare

@github-actions github-actions released this 17 Jun 00:47
  • --for <Dauer> prüft jetzt, ob die angegebene Dauer formal gültig ist. teefax 5s --loop --for abc etwa erzeugt eine Fehlermeldung.

Full Changelog: v0.28.0...v0.28.1

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 05:23
  • Für --loop, --daily und --every gibt es jetzt die Möglichkeit, die Laufzeit der Wiederholungen mit dem neuen Argument --for <Dauer> zu beschränken. Beispiel: teefax 5s --loop --mute --nomsg --for 15s wird die 5-Sekunden-Schleife 15 Sekunden lang neu starten. Diese Funktion erspart das Ausrechnen der Wiederholungszahl, wenn man Schleifen eine bestimmte Zeit lang laufen lassen möchte.
    Da die Begrenzung durch --for in Echtzeit läuft und es zwischen den Schleifen zu kleinen Abweichungen kommt, sind etwa bei 5s --for 15s nur 2 Runden (10 Sekunden) zu erwarten, da das Ende der dritten Runde knapp außerhalb der durch --for 15s festgelegten Zeit stattfinden würde. Einfach gesagt, drei 5-Sekunden-Zähler in Schleife dauern technisch bedingt minimal länger als die 15-Sekunden-Begrenzung, weshalb nach der zweiten Runde bereits abgebrochen wird. Sonst würde der Abbruch unerwartet irgendwann in der dritten Runde stattfinden, bevor das Ende der letzten 5 Sekunden erreicht ist und der Weckton kommt. Wenn drei volle Runden erwünscht sind, ist nach wie vor --loop 3 geeignet, oder man hängt noch 1-2 Extrasekunden für Abweichungen an, etwa --for 17s.
  • Um das Programm etwas zu beschleunigen, wird nun die Bindung von cin (Character input) an cout (Character output) aufgehoben. Zuvor stand im Code zu diesem Zweck cout.tie(nullptr), was zwar syntaktisch und semantisch korrekt, aber wirkungslos ist, da cin an cout gebunden ist, nicht jedoch cout an cin. Die Lösung dieser Bindung durch Verknüpfung von cin mit einem Nullpointer führt nun dazu, dass der Ausgabepuffer vor cin-Eingaben nicht mehr automatisch via flush geleert wird. Dadurch beschleunigen sich alle Einleseoperationen, die über cin laufen. Das sind aktuell nicht viele, also dürfte sich die Wirkung in Grenzen halten.

Full Changelog: v0.27.21...v0.28.0

v0.27.21

Choose a tag to compare

@github-actions github-actions released this 14 Jun 01:35
  • Refaktorisierung: Die main()-Funktion war übelst lang geworden. Der Code ist jetzt besser aufgeteilt und die Funktionen sind weitgehend ausgelagert. Das macht das Ganze besser lesbar, wartbar und erweiterbar. Am Programmverhalten sind im Vergleich zu v0.27.20 keine Änderungen zu erwarten.

Full Changelog: v0.27.20...v0.27.21