Changelog
Was ist neu?
Alle Änderungen am Time Tracker, neueste Version zuerst.
v1.2.1
Verlässlicherer Offline-Sync und korrekte Summen
Verbesserungen
- Auto-Sync nach dem Aufwachen — nach Aufwachen, Entsperren oder Rückkehr ins Fenster überträgt der „Automatische Sync“ offene Buchungen sofort; fehlendes VPN pausiert ihn nicht mehr.
- Sicherung vor Updates — bringt ein Update Datenbankänderungen mit, legt Time Tracker vorher eine Kopie an; die letzten drei bleiben, das Handbuch beschreibt den Weg zurück.
- Abgleich pausiert bei unpassender Datenbank — passt die Datenbank nicht zur App-Version, ruht der Abgleich mit Jira Touched Tickets; Buchen bleibt möglich, ein Hinweis oben erklärt den Zustand.
- Tagesmenü auch in der Wochenansicht — der Rechtsklick auf eine Tagesspalte bietet wie in der Monatsansicht „Sammelbuchung“, „Buchungen teilen“ und „Soll-Arbeitszeit anpassen“.
Korrekturen
- Identische Kopien — eine per „Duplizieren“ angelegte identische Buchung wird nicht mehr still auf das Original gebucht, weder nach einem Sync-Versuch ohne VPN noch nach einem Verbindungsabbruch während der Übertragung; ohne VPN bricht der Push sofort ab.
- Aufgegebene Buchungen zählen nicht als gebucht — Kalender, Tagesansicht, Extensions, Erinnerung,
get_bookedundtt bookedrechnen eine aufgegebene neue Buchung nicht mehr mit; die Seitenleiste zeigt aufgegebene Einträge mit eigenem Badge. - Ticket-Summen stimmen — ein Klick auf einen Ticket-Titel zeigt alle Buchungen genau dieses Tickets; die Suche kennzeichnet auf das Limit begrenzte Treffer und ihre Summe als unvollständig.
- Sammelbuchung verliert keine Einträge mehr — die Vorschau prüft Beschreibung und Dauer wie der Server und nennt den Grund; abgelehnte Einträge bleiben mit der Server-Meldung stehen, statt samt Eingabe zu verschwinden.
- Projektsummen ohne aufgegebene Buchungen — die Projektübersicht zählt aufgegebene neue Buchungen nicht mehr mit; der CSV-Export kennzeichnet jede Zeile in der neuen letzten Spalte „Status“.
- Tagesziel in der Tagesansicht — die Tagesansicht nutzt die Wochen-Sollzeiten: Wochenenden erscheinen als frei statt als „0m / 8h“, Teilzeit-Wochenziele gelten auch dort.
- Fehlermeldungen in der Browser-Extension — schlägt eine Buchung fehl, zeigt das Popup die Meldung der App, etwa zur Schreibsperre im Server-Betrieb oder „Time Tracker nicht erreichbar“; die Eingaben bleiben erhalten.
- Raycast-Entwurf vollständig — wer „Neue Buchung“ ohne Buchen schließt, findet beim nächsten Öffnen Ticket, Dauer, Beschreibung und externe Referenz wieder, nicht nur den Aktivitätstyp.
- Zuletzt genutzte Tickets nach Backup-Import — nach dem Einspielen eines Backups zeigt das Buchungsfeld die häufig gebuchten Tickets der neuen Datenbank statt der alten.
- Kein Doppelstart auf derselben Datenbank — läuft bereits ein anderer Time-Tracker-Prozess auf derselben Datenbank, beendet sich die Desktop-App mit einer Meldung, statt parallel zu schreiben.
Anpassungen
- Standard-Aktivitätstyp überall — ohne ausdrücklichen Typ buchen MCP (
create_booking), CLI (tt book), Browser-Extension und Raycast jetzt den eingestellten Standard-Aktivitätstyp statt immer SA.
v1.2.0
Fehlende Buchungen im Blick und eine verlässlichere Warteschlange
Version 1.2.0 herunterladenNeue Funktionen
- Fehlende Buchungen auf einen Blick — liegen im angezeigten Zeitraum Tage unter ihrem Soll, treten die Stundenzahlen in der Kopfzeile hervor und öffnen eine Liste der Lücken mit Soll und fehlender Differenz. Ein Klick springt zum Tag.
- Erinnerung — die Desktop-App meldet sich abends um 19:00 für heute oder morgens um 08:00 für den letzten Werktag, wenn ein Tag unter Soll liegt, Buchungen noch warten oder eine Übertragung aufgegeben wurde.
- Menüleiste — zeigt unter macOS wahlweise die heute gebuchte oder die noch offene Zeit des Tages; läuft die Stoppuhr, steht dort ihre Zeit.
Verbesserungen
- Aktuelle KI-Modelle — Claude Opus 5.5 und Sonnet 5.5, GPT-6 Astra, Sol und Luna sowie Gemini 3.8 Flash und 3.5 Flash Lite. Bestehende Einstellungen werden umgestellt; wer GPT-5.6 Terra nutzte, landet auf GPT-6 Sol.
- Schutz der Datenbank — ein zweiter Server auf derselben Datenbank startet nicht mehr. Nach einem unvollständigen Datenbank-Update schaltet der Server- und Docker-Betrieb auf Nur-Lesen, statt weiterzuschreiben; die Desktop-App bleibt schreibfähig.
- Versionsprüfung — Browser-Erweiterung, Raycast, CLI und MCP-Bundle erkennen eine nicht passende App-Version und sagen, was zu aktualisieren ist, statt mit einem unklaren Fehler abzubrechen.
- Löschen und Stoppuhr für MCP und CLI — Buchungen lassen sich jetzt auch über den MCP-Server und die CLI löschen, und die Stoppuhr lässt sich dort starten, abfragen und beim Stoppen direkt buchen.
- Erklärungen in den Einstellungen — jedes Feld unter „Arbeitszeit & Buchungen“ hat jetzt ein Info-Symbol mit Hinweis.
- Logs im Server- und Docker-Betrieb — jede Zeile trägt Request- und Lauf-ID,
LOG_FORMAT=jsonliefert JSON-Zeilen; Tokens werden auch im Fließtext geschwärzt. - Bereitschaftsprüfung für Server und Docker —
GET /api/health/readymeldet 503, wenn die Datenbank nicht antwortet oder ihr Schema unvollständig ist.
Korrekturen
- Desktop-App — seit 1.1.2 erkannte sich die App nicht mehr als Desktop-App: kein Update-Hinweis, das Buchungsformular war beim Start geschlossen, die Maus-Seitentasten unter macOS blieben ohne Funktion.
- Tages-Soll per Schieberegler — das Anpassen über den Regler im Kalender schlug fehl, obwohl die Eingabe gültig war. Das Anpassen über einen Zeitraum war nicht betroffen.
- Monatsanfang am Wochenende — begann ein Monat an einem Samstag oder Sonntag, fehlten der 1. und 2. in der Monatsansicht vollständig: weder sichtbar noch auswählbar und nicht im Monats-Soll enthalten.
- Kopfzeile auf schmalen Fenstern — der Menü-Knopf scrollte mit dem Inhalt weg, statt oben stehen zu bleiben.
- Eingabeprüfung — ungültige Werte wie 30.02., 25:61 oder 99h werden beim Buchen abgelehnt statt erst beim Übertragen; alte Einträge mit ungültigem Datum landen nicht mehr an einem anderen Tag. Dauer-Änderungen über MCP oder CLI zählen sofort.
- Zeitumstellung — Buchungen mit Startzeit zwischen 01:00 und 02:00 in den beiden Nächten der Zeitumstellung gingen mit einer Stunde Versatz an Jira.
- Ausstehende Buchungen — eine noch nicht synchronisierte Verschiebung steht sofort am neuen Tag, auch in Suche und Erinnerung. Die Projektübersicht zählte ausstehende Buchungen doppelt, die Suche sortiert sie jetzt nach Datum ein.
- Übertragung zu Jira — lief parallel ein Abgleich, konnte eine soeben übertragene Buchung kurz verschwinden. Nach einem Fehlversuch konnte eine gleichlautende Buchung mit anderem Aktivitätstyp die Wiederholung als erledigt ausweisen.
- Warteschlange — eine zweite Bearbeitung einer noch nicht übertragenen Änderung verwarf die erste. Eine endgültig fehlgeschlagene Löschung ließ die Buchung verschwinden, obwohl sie in Jira noch existiert; jetzt bleibt sie sichtbar und markiert.
- Bearbeitet, nicht gebucht — endgültig fehlgeschlagene Buchungen galten als gebucht, sodass ihr Ticket nicht als offen auffiel. Der MCP-Server liefert bei mehreren Buchungen eines Tickets jetzt die Summe statt nur einer Dauer.
- Host-Prüfung — der Server nimmt Anfragen nur noch über bekannte Adressen an (
localhost, IP-Adressen, freigegebene Namen); eine zusätzliche Absicherung für den Zugriff aus dem Browser. - Erneut versuchen — der Knopf in der Warteschlange lief ins Leere; aufgegebene Einträge ließen sich darüber nicht wieder anstoßen.
Anpassungen
- Kein Zurück auf 1.1 — noch nicht übertragene Buchungen werden in einem neuen Format gespeichert, das ältere Versionen nicht lesen. Nach dem Update keine 1.1.x-Version mehr mit derselben Datenbank starten.
- API aufgeräumt — die nicht mehr genutzten Endpunkte
GET /api/worklogs?date=undGET /api/queue/pending-worklogsentfallen. Eigene Skripte lesen Buchungen über/api/worklogs/mergedoder/api/worklogs/range. - Eigene Hostnamen — wer die App über einen eigenen Namen erreicht, etwa hinter einem Reverse-Proxy auf demselben Rechner, trägt ihn in
TIME_TRACKER_TRUSTED_ORIGINSein. Zugriffe überlocalhostund IP-Adressen sind nicht betroffen. - Startsperre prüft die echte Bind-Adresse — ein selbst gestarteter Server ohne
HOSTlauscht auf allen Interfaces und braucht jetzt ebenfalls ein Zugriffstoken;NITRO_HOSThat wie in Nitro Vorrang. Desktop-App und Docker sind nicht betroffen.
Abhängigkeiten
- Electron 44 — neue Desktop-Runtime mit Chromium 152 und Node 24. Dazu Nuxt UI 4.11, Vite 8.3, Vue 3.5.42 und Zod 4.6; drei gemeldete Sicherheitslücken in Abhängigkeiten sind geschlossen.
- Node 24 überall — Docker-Image, Entwicklung und CI laufen jetzt auf Node 24.21.0, derselben Version wie die Desktop-App.
v1.1.4
Buchungen als Text teilen und ausstehende Buchungen bearbeiten
Neue Funktionen
- Buchungen als Text teilen — eine einzelne Buchung, ein Suchtreffer oder ein ganzer Tag landen per Klick im Format der Sammelbuchung in der Zwischenablage. Kolleg:innen fügen den Text direkt ein, statt ihn abzutippen.
Verbesserungen
- MCP auf dem neuen Protokollstand — der eingebaute wie der gebündelte MCP-Server sprechen die Protokollrevision 2026-07-28. Bestehende Anbindungen in Claude Desktop und Claude Code laufen unverändert weiter.
- Projektübersicht mit neuer Zeitverteilungs-Leiste — die Verteilung auf /projects erscheint als Balken über die volle Kartenbreite, mit tabellarischer Legende und stabilen Projektfarben in Hell und Dunkel.
- Ausstehende Buchungen per Drag & Drop verschieben — noch nicht synchronisierte Buchungen lassen sich jetzt wie synchronisierte auf einen anderen Tag ziehen, nicht mehr nur kopieren.
- Ausstehende Buchungen über MCP und CLI bearbeiten —
update_bookingundtt updateakzeptieren jetzt auch diepending--IDs ausget_bookedbzw.tt booked.
Korrekturen
- Sammelbuchung zerreißt Beschreibungen nicht mehr — Text wie „Abstimmung, 3 Themen offen“ oder „Abstimmung, 15m Nacharbeit“ wurde am Komma getrennt, der Rest landete als ungültige Zeile ohne Ticket. Geteilte Buchungen kamen dadurch gekürzt an.
- Korrekter erster Seitenaufbau — Summen im Kalenderkopf und Ticket-Links stimmen schon beim Laden, und Menüs wie Popover behalten ihren Namen für Screenreader.
v1.1.3
Kontextmenü auf Kalendertagen und ein stabilerer Sync
Neue Funktionen
- Kontextmenü auf Kalendertagen — Rechtsklick auf eine Tageszelle öffnet die Sammelbuchung mit vorbelegtem Datum oder passt die Soll-Arbeitszeit für genau diesen Tag an — ohne Umweg über Tagesdetail oder Tastenkürzel.
Verbesserungen
- Aktuelle KI-Modelle — Claude Opus 5 sowie GPT-5.6 Sol, Terra und Luna; bestehende Einstellungen werden automatisch umgestellt.
- Menü-Leisten-Timer reagiert sofort — Start und Stopp erscheinen in der Menü-Leiste ohne die bisherige Verzögerung von bis zu zwei Sekunden.
- Aufgegebene Buchungen — dauerhaft scheiternde Einträge werden nicht mehr endlos wiederholt, sondern als aufgegeben markiert und in der Warteschlange gesondert ausgewiesen; Netzwerk- und Serverfehler (5xx) zählen dabei nicht mit.
- Harter Schutz bei LAN-/Docker-Betrieb — ohne Zugriffs-Token startet die App auf einem netzwerk-exponierten Host nicht mehr; Opt-out bleibt möglich.
- Faire Limits pro Client — Sync, KI und MCP werden je Gegenstelle begrenzt; Zeitraum-Abfragen höchstens ein Jahr.
- MCP-Tools nach Lesen und Schreiben getrennt — Claude Desktop kann die Berechtigungen für lesende und buchende Tools jetzt einzeln vergeben.
- Schema-Prüfung im Health-Check —
/api/healthmeldetdegraded, wenn beim Start eine Datenbank-Migration nicht durchlief; für Docker- und Monitoring-Betrieb. - Beschreibung ist Pflicht — Buchungen ohne Beschreibung (unter 2 Zeichen) werden in App, Extension, Raycast, CLI und MCP abgewiesen; bestehende Buchungen bleiben unangetastet.
- Backup-Import ohne Speicherdruck — eine hochgeladene Sicherung wartet auf der Festplatte statt im Arbeitsspeicher auf die Bestätigung.
- Technik-Basis — Abhängigkeiten aktualisiert und offene Sicherheitshinweise in mitgelieferten Paketen geschlossen.
- Aufgeräumte Code-Basis — ungenutzter Code über alle Pakete entfernt; Aktivitätstyp-Labels, Standard-URLs und Fehlertext-Auswertung zentral zusammengeführt. Raycast meldet eine nicht erreichbare App nur noch einmal statt bei jeder Eingabe.
Korrekturen
- Buchungen überleben einen gleichzeitigen Sync — läuft während der Übertragung ein Pull, verschwinden Warteschlangen-Einträge nicht mehr still, gerade nach Jira geschriebene Buchungen bleiben erhalten, und ein vom Pull übernommener Eintrag zählt nicht mehr fälschlich als Erfolg. Verschwindet ein Worklog mitten im Sync, weist die Warteschlange darauf hin, zuerst in Jira nachzuschauen.
- Kein Doppelbuchen — bereits abgeschlossene Queue-Einträge werden nicht erneut nach Jira geschickt.
- Verschobene Jira-Buchungen — der lokale Kalender folgt dem neuen Datum statt dauerhaft am alten Tag zu bleiben.
- Tagesverlauf beim Scrollen — lief währenddessen ein Sync, verschwanden gerade nachgeladene Tage wieder und kamen nicht von selbst zurück.
- Tastaturbedienung — die Aktionen in Suche, Warteschlange, Projekten und Tagesverlauf waren nur per Maus erreichbar; sie erscheinen jetzt auch beim Ansteuern mit der Tabulator-Taste.
- Suche mit Umlauten —
bürofindet jetzt auchBÜRO: Groß- und Kleinschreibung wird bei Umlauten korrekt ignoriert, in der Ticket- wie in der Buchungssuche.
v1.1.2
Buchungsverlauf je Ticket und Ticket-Vorschläge aus Terminen
Neue Funktionen
- Ticket-Buchungsverlauf — das Uhr-Symbol am Ticket-Feld zeigt die letzten Buchungen auf das gewählte Ticket, inklusive noch nicht synchronisierter; ein Klick übernimmt Dauer, Aktivitätstyp und Beschreibung direkt ins Formular — ideal für wiederkehrende Buchungen.
- Ticket-Vorschlag aus Terminen — trägt ein Kalendertermin kein Ticket, schlägt die App beim Buchen das Ticket vor, auf das frühere Buchungen mit demselben Termin-Titel gingen — ein Klick übernimmt Ticket und Aktivitätstyp; ideal für wiederkehrende Meetings.
Verbesserungen
- Schutz vor Schein-Tickets — aus Kalenderterminen gelesene Ticket-Keys werden gegen Jira validiert und nur übernommen, wenn das Ticket existiert; beim Buchen ohne aufgelösten Titel warnt eine Rückfrage vor Tippfehlern und Schein-Keys — bewusstes Buchen bleibt möglich.
- Robuster Sync bei JTT-Störung — fällt der Abruf der bearbeiteten Tickets serverseitig aus, bricht der Sync nicht mehr ab, sondern aktualisiert eingeschränkt alle bereits bekannten Tickets weiter — mit deutlicher Warnung bei jedem betroffenen Sync.
- Verlaufs-Navigation — zurück und vorwärts per Maus-Daumentasten, ⌘←/⌘→ und Trackpad-Swipe; die Desktop-App erhält zusätzlich ein Verlauf-Menü.
- Sync-Fehlermeldungen — zeigen die eigentliche Ursache statt technischer Rohdaten und bieten einen Kopieren-Knopf für Support-Anfragen; abgebrochene Sync-Läufe erscheinen jetzt auch in den Sync-Metriken.
- Externe Touched Tickets — die Abruf-Leiste im Tagesverlauf erscheint nur noch, wenn ein externes Ticket-System angebunden ist.
- Tastaturkürzel-Übersicht — kompakter dargestellt.
- Technik-Basis — Nuxt 4.5, Vite 8, better-sqlite3 13 und ekctl 1.5 aktualisiert.
Korrekturen
- Ticket-Titel — wird jetzt auch aufgelöst, wenn das Ticket aus einem Kalendertermin oder einer Vorauswahl übernommen wurde.
- Buchungs-Kopien — bewusst angelegte Kopien identischer Buchungen werden beim Sync nicht mehr fälschlich als Duplikat aussortiert.
- Windows-CLI — der Terminal-öffnen-Knopf startet die Kommandozeile so, dass der Befehl tt auch dort gefunden wird.
- Docker-Image — der Image-Build zieht die npm-Konfiguration jetzt mit; ohne sie wäre die Installation im Container an einem Abhängigkeitskonflikt gescheitert.
v1.1.1
Soll-Arbeitszeit für Zeiträume und LAN-Freigabe der Desktop-App
Neue Funktionen
- Soll-Arbeitszeit für Zeitraum — im Monatskalender mehrere Tage aufziehen und das Tages-Soll gesammelt anpassen oder auf den Standard zurücksetzen — die Wochen-Defaults in den Einstellungen bleiben unverändert.
- LAN-Freigabe (opt-in) — die Desktop-App kann Zugriff aus dem Netzwerk erlauben, abgesichert über den Zugriffs-Token; Standard bleibt localhost.
Verbesserungen
- Token-Eingabe mit Bestätigung — neue Jira-Tokens und KI-API-Keys werden mit Enter oder ✓ übernommen: das Feld leuchtet grün auf, beim Jira-Token wird die Verbindung direkt getestet.
- KI-Modellauswahl — Claude Sonnet 5 ersetzt Sonnet 4.6 als Standard für Anthropic; bestehende Installationen werden automatisch umgestellt.
- Arbeitszeit-Eingaben — Tages-Soll in den Einstellungen und in der Zeitraum-Auswahl auf die gesetzliche Höchstarbeitszeit von 10 Stunden begrenzt.
- Browser-Erweiterung — aufgeräumtes Buchungsformular: Externe Referenz einklappbar, Dauer-Schnellwahlen einzeilig, kein Scrollbalken mehr im Popup.
- Wünsche & Feedback — Feature-Wünsche lassen sich direkt über die Über-Seite einreichen.
- Electron 43 — Desktop-Runtime aktualisiert.
- Sicherheit — die Desktop-App erzwingt dieselbe gehärtete Content-Security-Policy wie der Web-Server.
Korrekturen
- Gespeichert-Häkchen — die Einstellungsfelder zeigen das automatische Speichern wieder mit Spinner und grünem Haken an.
- Tagesverlauf — der Blick landet beim Öffnen zuverlässig am unteren Ende.
- Handbuch — die Kapitel-Navigation innerhalb der App funktioniert wieder.
v1.1.0
Externe Referenzen und Anbindung externer Ticket-Systeme
Neue Funktionen
- Externe Referenz — optionale Kunden-Ticket-Nummer (z. B. WEB-123) pro Buchung; durchsuchbar, als eigene Spalte im CSV-Export und in App, Browser-Erweiterung, Raycast, CLI (
--ref) sowie MCP verfügbar. - Externe Ticket-Systeme — Jira Cloud, Jira Data Center und Linear als Quellen anbinden; externe Referenzen werden mit Titel und Deep-Link aufgelöst, inklusive Autovervollständigung im Buchungsformular.
- Externe Touched Tickets — der Tagesverlauf zeigt auf Knopfdruck die Kunden-Jira- und Linear-Tickets, an denen du an dem Tag gearbeitet hast (Kommentar oder Status-Änderung), für schnelles Nachbuchen mit vorausgefüllter Referenz — wahlweise nur unbebuchte oder alle (bebuchte grün markiert, ausstehende Synchronisierung mit Uhr-Symbol).
- KI-Basis pro Buchung — pro Buchung wählbar, ob die KI-Beschreibung aus dem internen Jira-Ticket oder der externen Referenz entsteht.
Verbesserungen
- Zuletzt referenziert — kürzlich genutzte externe Referenzen sind im Buchungsformular per Klick verfügbar, analog zum Ticket-Feld.
- Preview-Auto-Update — Vorabversionen aktualisieren sich automatisch auf neuere Previews oder die nächste stabile Version.
- Link kopieren — Rechtsklick aufs Logo kopiert den Link zur aktuellen Seite.
- Einstellungen aufgeräumt — der Integrationen-Tab bündelt Jira, KI und externe Ticket-Systeme; das Referenz-Feld im Buchungsformular ist immer sichtbar (Schalter entfällt).
- Aufgeräumtes Handbuch — die Kapitel sind jetzt in Gruppen gegliedert (Erste Schritte, Tägliche Arbeit, Integrationen, Erweiterungen, Power-User); externe Ticket-Systeme als eigenes Kapitel.
Korrekturen
- Timer-Buchung — übernimmt keine Beschreibung mehr aus zuvor verworfenen Entwürfen.
- Touched Tickets — die Kommentar-Vorschau zeigt nur noch Kommentare des jeweiligen Buchungstags.
Abhängigkeiten
- Electron 42, Vercel AI SDK 7 & Nuxt UI 4.9 — Desktop-Runtime, KI-Stack (Provider-SDKs v4 für Anthropic, OpenAI, Google) und UI-Framework auf aktuelle Versionen gehoben.
- Einheitliches Node-Pinning — Entwicklung, CI, Docker (
node:22.22.2-alpine) und DevContainer nutzen Node 22.22.2, gepinnt via.node-version.
v1.0.11
MCP-Server per HTTP und Zugriffsschutz per Token
Neue Funktionen
- MCP-Server direkt per HTTP — Claude Code verbindet sich ohne Bundle-Export direkt mit dem eingebauten Server (
claude mcp add --transport http); für Claude Desktop führt eine Brücke denselben Weg. - Zugriffsschutz per Token — für Netzwerk- und Docker-Betrieb lässt sich der Time Tracker mit
TIME_TRACKER_ACCESS_TOKENabsichern; lokale Zugriffe bleiben ohne Token. - CLI direkt ausprobieren — ein Button auf der Erweiterungen-Seite öffnet ein Terminal für die ersten
tt-Befehle.
Verbesserungen
- Übersichtlichere MCP-Einrichtung — Claude Desktop und Claude Code haben jeweils einen empfohlenen Weg und eine Alternative, einheitlich benannt.
- Treffendere KI-Beschreibungen — die Vorschläge berücksichtigen jetzt alle Jira-Kommentare des Buchungstags, nicht nur den letzten.
Korrekturen
- Offline-Buchungen in Zeitraum und Projektsummen —
tt bookedüber einen Zeitraum sowie die Projekt-Gesamtwerte berücksichtigen jetzt auch noch nicht gesyncte Buchungen. - Windows: korrekte Umlaute im
tt-CLI — der Konsolen-Zeichensatz wird nach dem Aufruf wieder zurückgesetzt. - KI-Server-URL geht nicht mehr verloren — eine geänderte Adresse wird auch beim sofortigen Wegnavigieren gespeichert, mit Hinweis bei ungültigem Host.
- Kommentar bleibt bei Teil-Updates erhalten — eine Buchung über CLI oder MCP ohne neuen Text überschreibt den vorhandenen Kommentar nicht mehr.
- Kein Leer-Scroll im Tagesverlauf — das Scrollen endet jetzt sauber beim heutigen Tag.
- Sicherheits-Updates — aktualisierte Build- und Server-Abhängigkeiten.
v1.0.10
Strengere Absicherung der lokalen API und Korrekturen am Sync
Verbesserungen
- Härtere Absicherung der lokalen API — schreibende Anfragen werden serverseitig gegen eine feste Origin-Allowlist geprüft (CSRF- und DNS-Rebinding-Schutz); Docker/LAN per
TIME_TRACKER_TRUSTED_ORIGINS. - Tagesverlauf lädt Kalender-Termine schneller — ein Abruf pro sichtbarem Zeitraum statt einem pro Tag.
- Raycast-Menüleiste aktualisiert sich von selbst — alle 10 Minuten, und verbindet sich auch nach späterem App-Start.
- Browser-Erweiterung: andere Instanz möglich — die Server-URL im Popup kann jetzt auch auf einen Time Tracker im LAN (Docker) zeigen.
Korrekturen
- Doppelbuchungs-Schutz beim Sync-Retry — greift jetzt zuverlässig in einem seltenen Zeitzonen-Edge-Case (Crash-Retry); dazu kleinere Sync-Idempotenz-Härtungen.
- Ungespeicherte Einstellungen gehen nicht mehr verloren — Textfelder werden beim Seitenwechsel und App-Beenden gesichert.
- VPN-Hinweis wieder zuverlässig — bei nicht erreichbarem Jira erscheint der gezielte Hinweis statt eines generischen Fehlers.
- Warteschlange: laufende Sync-Einträge sind nicht mehr löschbar — verhindert Inkonsistenzen mitten in der Übertragung, mit klarer Statusanzeige.
- Saubere Fehlermeldung statt stillem Absturz — interne Serverfehler zeigen einen Dialog statt die App kommentarlos zu beenden.
- Erweiterungen-Export robuster — korrekte MCP-Version, direkt lauffähiges Raycast-Paket, keine Altdateien beim Re-Export.
- Windows: CLI und MCP-Verbindung stabiler — finden die App auch auf Ausweich-Ports und überstehen eine zweite App-Instanz (Deep-Link); CLI-Installation lässt fremde PATH-Einträge unangetastet.
- Zeitraum-CSV enthält auch ungesyncte Buchungen — offline erfasste Einträge erscheinen jetzt wie in der Suche.
v1.0.9
Drag & Drop im Kalender und Einrichtung der Erweiterungen in der App
Neue Funktionen
- Drag & Drop im Kalender — Buchungen per Drag auf andere Tage verschieben oder kopieren; auch Tickets aus „Bearbeitet, nicht gebucht“ (Touched Tickets) lassen sich direkt auf einen Tag droppen.
- Erweiterungen als eigener Bereich — Terminal-CLI (
tt), MCP-Server und Browser/Raycast haben jetzt einen eigenen Navigationspunkt in der Seitenleiste. - Alle Erweiterungen aus der App einrichten — das
tt-CLI in den PATH, der MCP-Server in Claude Desktop oder als Bundle für Claude Code, und Chrome, Firefox & Raycast in einen Zielordner zum Laden — alles mit einem Klick aus dem Bereich Erweiterungen, ohne Umweg über Website oder Repository-Checkout. - Neue ⌘K-Aktionen — die Befehlspalette zeigt jetzt auch „Tastaturkürzel anzeigen“ (?) und schaltet zwischen hellem und dunklem Erscheinungsbild um.
Verbesserungen
- Barrierefreiheit — der Kalender ist vollständig per Tastatur bedienbar, Icon-Schaltflächen haben Tooltips, Dialoge und Sortierspalten bekommen sprechende Namen für Screenreader, und die System-Einstellung „Bewegung reduzieren“ wird respektiert.
- Einstellungen umbenannt — der Tab »Erweitert« heißt jetzt »Integrationen«.
- Homebrew-Cask verlinkt
ttautomatisch — wer die App perbrew install --caskinstalliert, hat dastt-CLI sofort im Terminal; beim Deinstallieren wird der Verweis wieder entfernt. - Klareres Handbuch für die Erweiterungen — die Kapitel zu CLI, MCP-Server und Browser-Extension wurden überarbeitet: Einrichtung ohne Repository-Checkout, eindeutige Bezugsquellen und konsistente Schritte.
- CSV-Export der Suche — Suchergebnisse lassen sich direkt aus der Buchungssuche als CSV exportieren; jeder Export enthält jetzt zusätzlich eine Spalte für Personentage (PT).
- Aktuelle KI-Modelle — die Modellauswahl ist auf dem neuesten Stand: Claude Opus 4.8, GPT-5.5 und Gemini 3.5 Flash. Bestehende Einstellungen werden automatisch migriert.
Korrekturen
- Heute-Markierung über Mitternacht — der Kalender springt jetzt automatisch auf den neuen Tag (auch nach Standby), statt auf dem Vortag festzuhängen.
v1.0.8
Live-Timer und eine erweiterte Befehlspalette
Neue Funktionen
- Live-Timer — Stoppuhr in der Seitenleiste, bedienbar per globalem Tastatur-Shortcut (⌘⌥T), über die Befehlspalette (⌘K) und unter macOS aus der Menüleiste. Optional schon beim Start ein Ticket wählen; beim Stoppen füllt sich das Buchungsformular mit gemessener Zeit, Startzeit und Ticket.
Verbesserungen
- Befehlspalette erweitert — ⌘K bietet jetzt Aktionen (Neue Buchung, Sammelbuchung, Timer, Synchronisieren via ⌘S) mit Tastenkürzel-Hinweisen, ein Ticket-Treffer öffnet ein vorbefülltes Buchungsformular, und das Handbuch ist über ⌘K durchsuchbar.
- Tastaturnavigation im Tagesverlauf — Pfeiltasten blättern jetzt auch im Tagesverlauf tageweise (←/→) und wochenweise (↑/↓), T springt zu heute — analog zum Kalender.
- Datenbank-Status — Diagnose-Karte in Einstellungen → Einrichtung (Schema-Version, Zeilen-Zahlen, On-demand-Integritätsprüfung).
- Überarbeiteter Dauer-Slider — nutzt jetzt die native Nuxt-UI-Komponente.
- Browser-Erweiterung optisch angeglichen — Eingabefelder, Chips und Buttons folgen enger dem Look der App (Focus-Ring, Label-Farben, Hover-Zustände).
Abhängigkeiten
- Abhängigkeiten aktualisiert — Vite-Electron-Plugins auf 1.x, Commander 15 (CLI), @nuxt/ui 4.8.2, Nuxt 4.4.7, Vue 3.5.35, AI SDK (ai 6.0.197) plus diverse Tooling-Minor-Bumps. Sicherheitsfix: Build-Dependency
tmp0.2.7 (Path-Traversal). Electron bleibt 41.7 (better-sqlite3-ABI).
v1.0.7
Geräte-Migration per Datenbank-Export und stabilerer Push-Sync
Neue Funktionen
- Geräte-Migration — Datenbank-Export aus den Einstellungen, Import im Setup-Wizard. Voraussetzung: gleiche App-Version auf Quell- und Ziel-Gerät. Nach erfolgreichem Import lädt die Oberfläche automatisch neu. Eine Sicherheitskopie der bisherigen Datenbank wird 7 Tage aufbewahrt.
Verbesserungen
- Einstellungen in Tabs — drei Tabs (Allgemein, Erweitert, Einrichtung) statt langem Scroll; übersichtlich gruppiert.
- Robuster Push-Sync — der Push-Sync übersteht Abstürze ohne halb geschriebene Buchungen und kommt zuverlässig mit parallelen Aufrufen (Auto-Sync, Klick, SSE) zurecht.
- Datenintegrität auf DB-Ebene — strengere Konsistenzregeln in der Datenbank; verwaiste Warteschlangen-Einträge werden beim Start abgeräumt.
- Robustere SSE-Verbindung — der SSE-Endpunkt räumt auch bei Client-Abbrüchen zuverlässig auf, statt unbemerkt Listener zu sammeln.
- UI-Tweaks — Strg+D öffnet das KI-Debug-Panel jetzt auch unter Windows; eingeklappte Sidebar verrutscht nicht mehr bei großer Browser-Schriftgröße.
Korrekturen
- Action-Icons in der Warteschlange — dynamische Tailwind-Klassen wurden im Prod-Build wegoptimiert; Icons sind wieder farbig sichtbar.
- Verbindungstest mit Timeout — Diagnose-Aufruf bricht nach 8 Sekunden mit klarem VPN-Hinweis ab statt minutenlang zu hängen.
- Warteschlange zeigt Fehler — schlägt das Laden fehl, erscheint ein Retry-Button statt eines leeren Zustands.
Abhängigkeiten
- Electron 41.7, Nuxt 4.4.6 + @nuxt/ui 4.8, Zod 4.4.3, vue-tsc 3.3.1, ESLint 10.4.0, archiver 8 (neue Klassen-API), AI SDK Minor-Bumps (Anthropic 3.0.78, Google 3.0.78, OpenAI 3.0.65, ai 6.0.190). Secret-Scanning auf gitleaks 8.30.1 (Node-24-ready).
v1.0.6
Release Notes in der App und Auto-Sync-Pause bei VPN-Ausfall
Neue Funktionen
- Release Notes in der App — Neuer Tab „Was ist neu?“ auf der Über-Seite, gespeist von
time-tracker.dev. „neu“-Badge in der Sidebar bei ungelesener Version.
Verbesserungen
- Claude Opus 4.7 ersetzt 4.6 in der Anthropic-Modellauswahl.
- Integration lokaler KI-Modelle verbessert — Ollama/LM Studio jetzt auch im Heim- oder Firmennetz nutzbar; Toast zeigt konkrete Fehlerursache.
- CSP-Header verschärft — object-src 'none', frame-ancestors 'none', base-uri 'self', form-action 'self'.
- Schnellere Projektübersicht — Projekt-Namen werden in einem JQL-Batch nachgeladen statt einzeln pro Projekt.
- Einheitliche Fehlermeldungen — VPN-/Firmennetz-Probleme zeigen denselben Wortlaut über App und alle Extensions.
- Sync-Coalescing serverseitig — Parallele Sync-Aufrufe werden gebündelt; Watchdog löst hängende Sync-Buttons nach 60 s.
- Sync-Metriken-Endpoint —
/api/sync/metricsliefert Push-/Pull-Aggregate für externes Monitoring und Alerting. - API-Referenz im Handbuch — Neues Kapitel mit allen Endpunkten, Parametern und Beispiel-Responses für eigene Skripte und Dashboards.
Korrekturen
- Auto-Sync-Pause bei VPN-Ausfall — Circuit-Breaker trippt: 'Pausiert'-Toast, vier stille Intervalle, dann leiser Retry.
- Ehrlicher Sync-Spinner — bleibt bei Doppelklicks auf Kalender/Timeline aktiv, bis der letzte Sync wirklich durch ist.
- Mehrere Tabs gleichzeitig — bei zwei parallel öffnenden Tabs entscheidet die Leader-Election deterministisch, nicht mehr per Race.
- Legacy-Activity-Codes beim Pull — alte JTT-Codes vor der 1.0.2-Migration werden beim Import wieder korrekt gemappt.
Abhängigkeiten
- @nuxt/ui 4.7, Electron 41.3, Vue 3.5.33, vue-router 5.0.6, Vitest 4.1.5, WXT 0.20.25, TypeScript 6.0.3, svix 1.92.
v1.0.5
Lokale KI-Modelle und schnellere Datenbankabfragen
Neue Funktionen
- Lokale KI-Modelle — Neuer Provider „Lokal (Ollama / LM Studio)“ in Einstellungen und Setup-Wizard. OpenAI-kompatible Server-URLs werden sicher validiert und Modelle nach Verbindungstest dynamisch geladen. Kein API-Key nötig, keine Cloud-Abhängigkeit. Im lokalen Modus verlassen keine Ticket-Daten den Rechner.
Verbesserungen
- SQLite-Performance — PRAGMA-Tuning, neuer zusammengesetzter Index auf worklogs, Magic Numbers in konfigurierbare Konstanten extrahiert. Spürbar schnellere Queries bei großen Datenmengen.
- Bessere Fehlermeldungen — Jira/JTT-Netzwerk-Fehler zeigen jetzt eine aktionable Toast-Meldung (VPN-Hinweis) statt eines generischen 500-Fehlers. Einheitliches 503-Error-Handling im Backend.
- JTT API Rate-Limiting — Globales Concurrency-Limit (max 3 gleichzeitige Requests) und Exponential Backoff bei Server-Fehlern. Verhindert Überlastung des JTT-Servers bei parallelem Sync.
- Auto-Update — Fehler-Handling verbessert: Tray-Check zeigt tatsächliche Fehlermeldung statt fälschlich „aktuell“, Feedback bei gefundenem Update.
- Health-Endpoint —
/api/healthliefert DB-Ping und Sync-Metriken für Docker-Healthchecks und externes Monitoring.
Abhängigkeiten
- AI SDK (Anthropic 3.0.71, Google 3.0.64, OpenAI 3.0.53, ai 6.0.168), Electron 41.2.1, TypeScript 6.0.3, vue-tsc 3.2.7, ESLint 10.2.1.
v1.0.4
Neue Terminal-CLI tt und bessere Barrierefreiheit
Neue Funktionen
- CLI (
tt) — Terminal-Befehle:book,booked,search,update,tickets,touched. Ausgabe als Text,--tableoder--json. Installation via Homebrew (brew install tpmaerk/tap/tt) oder als Binary.
Verbesserungen
- Barrierefreiheit — ARIA-Beschreibungen, Focus-Rings für Keyboard-Navigation, Screenreader-Optimierungen
- Playwright-Tests — für Navigation, Kalender und Buchungspanel
- Touched Tickets — neuer Endpoint
/api/tickets/touchedfür App, CLI, MCP und Raycast. Parameter:date,live,notBooked. - Kalender-Performance — 4 HTTP-Requests auf 1 Call konsolidiert
- Raycast — Touched Tickets in Tagesübersicht, In Jira öffnen (Cmd+J)
- MCP-Server — Worklog-IDs in Antworten, Buchungstext-Hinweis bei Buchungen, VPN-Fehlermeldung bei nicht erreichbarer JTT API. Einheitliche Befehle und gemeinsamer API-Client mit CLI.
- Docker — Image auf Node 24 aktualisiert, Build-Prozess optimiert
Korrekturen
- Sidebar-Labels fehlten gelegentlich nach Reload (Hydration Issue)
- App setzt keine HTTP-Cookies mehr (unnötiger Overhead entfernt)
Abhängigkeiten
- AI SDK (Anthropic 3.0.69, Google 3.0.62), Lucide Icons, Node Types
- Sicherheitsfix: unhead XSS-Schutz (useHeadSafe)
v1.0.3
Hinweis auf bearbeitete, nicht gebuchte Tickets und Sync-Einstellungen
Neue Funktionen
- Touched Tickets — Hinweis auf bearbeitete, aber nicht bebuchte Tickets nach dem Sync in der Tagesansicht. Beim Aufklappen wird der letzte eigene Kommentar angezeigt und die Startzeit übernommen.
- Sync-Einstellungen — Neue Sektion für Delta-Sync Zeitraum, Touched-Tickets Modus und Auto-Sync Intervall
Verbesserungen
- Kalender-Integration — Toggle und Adapter zu einem Dropdown vereint
- Projektseite — Gewählter Zeitraum bleibt bei Seitenwechsel erhalten
- Sync-Einstellungen — Info-Tooltips und Handbuch-Link
- Auto-Sync Intervalle — überarbeitet (manuell, 30 Min, stündlich)
- KI-Textgenerierung — Datenschutz-Hinweis im Handbuch präzisiert
- KI-Textgenerierung — Jira/Kalender-Kontext um HTML/URLs bereinigt
- KI-Debug-Panel — Zeigt echten Jira-Ticket-Kontext statt Platzhalter
- Kalender/Touched Tickets — Voller Text per Klick auf Sprechblase-Icon
Korrekturen
- Zeitformat-Standard korrigiert (ungültiger Default bei Erststart)
- Projektseite — Buchungsdatum ist jetzt immer heute statt Zeitraum-Start
- JTT Sync — API-Fehler einzelner Tage erhalten vorhandene Daten
- KI-Textgenerierung — Kommentar-Kontext nur bis zum Buchungsdatum
- Kalender-Export — Nur tatsächlicher Monat statt inkl. Padding-Tage
v1.0.2
An JTT angepasste Aktivitätstypen und CSV-Export für Projekte
Verbesserungen
- Tagesverlauf-Navigation — Tageweise vor/zurück mit < > Pfeilen
- CSV-Export — auch auf der Projektseite verfügbar
- Einheitliche Sync-/Export-Buttons — in Kalender- und Projekt-Kopfzeile
- Sync-Fehlermeldungen — Push/Pull getrennt mit Fehlerbeschreibung
- Benutzerhandbuch — auf den neuesten Stand gebracht
- Raycast — Einheitliches Zeitformat in der Tagesübersicht
- Automatischer Update-Check — alle 24 Stunden (Electron)
- Verbesserte Toast-Meldungen — in der gesamten App
Korrekturen
- Umbenennung TT -> JTT (Jira Touched Tickets) in gesamter App
- Aktivitätstypen — an JTT angepasst (10 Typen statt 6, als Dropdown)
- Automatische Migration — von Legacy-Aktivitätstypen (vor v1.0.2)
- CSV-Export — in Wochenansicht nutzt korrekten Wochenzeitraum
- Datum-Update — bei Worklog-Verschiebung auf anderen Tag
- Revert — setzt updatedAt bei lokaler Source-of-Truth zurück
Abhängigkeiten
- Electron 41.1.1, MCP SDK 1.28.0, Google AI SDK 3.0.55
- TypeScript 6.0.2 auch in Browser Extension, Raycast & MCP-Server
- npm audit: @xmldom/xmldom (high) gefixt
v1.0.1
Windows-App mit Installer und plattformgerechten Tastenkürzeln
Windows App Support
- Windows Installer (NSIS) — .exe Download auf time-tracker.dev
- Plattform-Guards — Tray-Icon, Menüleiste, Kalender-Integration, Icon
- OS-abhängige Keyboard-Shortcuts — Cmd auf macOS, Strg auf Windows
- usePlatform() — Composable für plattformabhängige UI-Elemente
- Microsite — OS-Erkennung mit passendem Download-Button
Verbesserungen
- Sticky Header/Footer — Scroll Hints & Lazy Loading erweitert
- Tray-Menü — überarbeitet und Content-Padding vereinheitlicht
- Mini-Kalender — als Popover im Tagesverlauf für Sprungnavigation
- Lazy jiraUserKey-Fetch — beim Laden der Einstellungen
Korrekturen
- Preload — als CJS für Electron Sandbox-Kompatibilität
- Kalender-API — wird auf nicht-macOS nicht aufgerufen
- Kalender-Matching — Buchung darf länger sein als das Meeting
- Auto-Updater —
quitAndInstallschließt App korrekt
Abhängigkeiten
- Typescript 6.0.2, Electron 41.1.0, Vue 3.5.31, Vitest 4.1.2
- AI SDKs: Anthropic 3.0.64, OpenAI 3.0.48, Google 3.0.53
- npm audit: brace-expansion, path-to-regexp, node-forge etc. gefixt
v1.0.0
Erste stabile Version des Zeitbuchungsassistenten
Initiales Release
- Erste stabile Version des Zeitbuchungsassistenten