jira-timesheet-qt
Features Ticket-Ansichten Tastenkürzel Installation Voraussetzungen GitHub
Desktop-GUI für Jira-Worklogs · v0.13.0

Jira Timesheet Desktop

Eine native Desktop-Anwendung (PySide6 / Qt 6) für Stundenzettel aus Jira-Worklogs - der einfach zu bedienende Desktop-Port der Textual-Anwendung jira-timesheet. Mit Liste, Monat und Jahr, Excel- und PDF-Export, Feiertagskalender und Jahres-Prognose.

GitHub Repository Installation
jira-timesheet-qt
Zwei Oberflächen, derselbe Code

TUI oder GUI?

Diese Desktop-GUI und die Textual-TUI bauen auf demselben Code auf - dieselbe Jira-Anbindung, Stundenzettel-Logik, manuelle Erfassung und der Excel-/PDF-Export. Gleiche Ergebnisse, gleiche Funktionen. Beide laufen unter Windows, macOS und Linux. Der Unterschied ist nur, wie Du damit arbeitest. Nimm die, die zu Deiner Umgebung oder Deinen Vorlieben passt - oder beide.

⌨️

Terminal (TUI)

Läuft in jedem Terminal, auch über SSH, und braucht keinen Window-Manager - die natürliche Wahl auf einem entfernten Rechner oder einem Linux-Server ohne Oberfläche. Tastaturzentriert, leichtgewichtig, mit Retro-Themes. Sie kann alles, was diese GUI kann. Zur TUI.

🖥️

Desktop (diese App)

Native Fenster, Menüs und Dialoge, durchgehend mit der Maus bedienbar, Spalten per Maus ziehbar, betriebssystemeigene Datei- und Druckdialoge. Die komfortable Wahl, wenn Du am Desktop sitzt und ein Fenster-Programm bevorzugst.

Features

Was sie kann

Stundenzettel aus Jira - automatisch geholt, um eigene Zeiten ergänzt, visuell aufbereitet, exportbereit.

🔗

Jira Cloud & Data Center

Worklogs per REST-API - standardmäßig Jira Cloud (v3, Basic-Auth mit API-Token), per Schalter auch altes Server/Data Center (v2, Bearer-Token).

🎯

Budget-Feld automatisch ermitteln

Bei Jira Cloud findet ein Klick das Budget-Custom-Field automatisch - kein manuelles Nachschlagen der Field-ID nötig.

🔍

Live-Suche

Filtert beim Tippen nach Ticket-ID oder Beschreibung; die Treffer werden in der Liste hervorgehoben.

📋

Sechs Ansichten

Liste mit KW und Wochentag, Monatsansicht mit einer Zeile je Ticket und Soll-Ist-Balken, Jahresansicht mit Prognose, dazu die drei Ticket-Ansichten. Umschalten per Reiter oder Klick.

🔍

Ticket-Vorschau

Neben dem Stundenzettel und neben den drei Ticket-Ansichten zeigt ein Splitter das gewählte Ticket read-only: Status, gebuchte Stunden, Lösungsversionen, zugewiesene Person, Autor, Fälligkeitsdatum, dazu Titel und Beschreibung mit Bildern. Personen sind Links: ein Klick zeigt ihre Tickets unter Mein Team, auch wenn sie nicht auf der Merkliste stehen. Einschaltbar unter Einstellungen, Seite Darstellung.

🎯

Meine Tickets

Alle Dir zugewiesenen Tickets, gruppiert danach, wer am Zug ist: ich bin dran, andere sind dran, Backlog, live und wartet auf Test, Übergabe, abgeschlossen. Dazu Merkmale für Handlungsbedarf, die Liegezeit in Arbeitstagen und drei Diagramme.

💬

Meine Aktivitäten

Tickets, an denen Du mitgewirkt hast, auch wenn sie jemand anderem gehören: kommentiert, erwähnt, bearbeitet oder bebucht - in einem einstellbaren Zeitfenster.

👥

Mein Team

Derselbe Blick auf den Ticketstand von Kolleginnen und Kollegen, ohne dass die etwas installieren müssen. Gesucht wird über den Namen - eine Person kann mehrere Jira-Konten führen, und viele Konten geben ihre Mailadresse gar nicht heraus. Bewusst ohne Diagramme: Durchsatz je Monat wäre über eine andere Person eine Leistungskennzahl.

🔥

Pile of Shame

Markiert Tickets, deren Status Aktivität behauptet, obwohl es seit der Schwelle weder eine Änderung noch eine gebuchte Stunde gab. Ein bewusst offengehaltenes Dauerticket mit regelmäßigen Buchungen bleibt draußen - eine Ausnahmeliste braucht es nicht.

📄

Excel, PDF, JSON, Markdown

Das Format wird im Speichern-Dialog gewählt. Excel mit Logo und Unterschriftszeile, PDF Adobe-signierbar, JSON als vollständiger Datensatz, Markdown für Tickets und Mails. Druckvorschau direkt aus der App.

📅

Feiertagskalender

Deutsche Feiertage pro Bundesland. Lücken-Erkennung für fehlende Arbeitstage.

📊

Soll/Ist & Prognose

Arbeitszeitvergleich mit Differenz. Jahres-Prognose mit Urlaubstagen und Netto-/Brutto-Umsatzprognose.

✍️

Manuelle Zeiterfassung

Nicht jede Stunde landet als Worklog in Jira. Mit Strg+N lassen sich Zeiten erfassen - Aufwand wahlweise als 3h 30m, 3:30 oder 3,5. Sie liegen in einer eigenen SQLite-Datei, zählen überall mit und sind farblich markiert.

📐

Konfigurierbare Spalten

Jede Spalte lässt sich getrennt für Anzeige und Export schalten und im Export frei benennen. In der Liste ziehst Du die Breiten mit der Maus; die Beschreibung füllt den Rest.

📈

Ticket-Analyse

Macht aus einem Ticket einen interaktiven Bericht: maßstabsgetreue Zeitachse des Lebenszyklus, Liegezeit je Status - Kalenderzeit gegen echte Arbeitszeit -, die Beteiligten, Kennzahlen wie Flow-Effizienz und erste Reaktion, dazu Befunde mit Beleg. Ergebnis ist eine einzelne HTML-Datei, die offline läuft und sich weitergeben lässt (Strg+Umschalt+A). Auffällig lange Liegezeiten werden rot markiert, verwandte Tickets zeigen ihren Titel, und der fertige Bericht öffnet sich gleich im Browser.

🔒

Anonymisierung

Ersetzt Tickets, Beschreibungen, Autoren und den Jira-Host durch Dummy-Werte - für sichere Screenshots. Die echten Daten bleiben unangetastet.

🔎

Zoom & Themes

Skaliere die ganze Oberfläche mit Strg +/- oder Strg + Mausrad. Helles und dunkles Erscheinungsbild mit einstellbarer Akzentfarbe.

💾

Cache & Backup

Abgeschlossene Monate werden gecacht - die Jahresansicht lädt sofort. Jedes Speichern der Einstellungen legt eine rollierende Sicherung an.

Einrichtung

Ticket-Ansichten einrichten

Die Reiter Meine Tickets, Meine Aktivitäten und Mein Team gruppieren nicht nach Statusnamen, sondern nach der Frage wer ist am Zug. Weil jede Jira-Instanz ihre Status anders nennt, wird diese Zuordnung einmal eingetragen: Einstellungen (Strg+,), Seite Tickets. Bleiben die Felder leer, ordnet die Anwendung nach Jiras eigener Statuskategorie zu - das funktioniert sofort, ist aber grob.

GruppeWas dort hingehörtBeispiel
Ich bin dranDer Ball liegt bei Dir, es wird gerade gearbeitetIn Bearbeitung, Im Review
BacklogFertig verfeinert, wartet darauf, gezogen zu werdenBereit, Eingeplant
Andere sind dranWartet auf Freigabe durch jemand anderenWartet auf Freigabe
Live, wartet auf TestProduktiv gesetzt, muss auf PROD noch getestet werdenAusgeliefert, Zur Bewertung
ÜbergabeStatus, die Jira als fertig zählt, obwohl das Ticket noch auf die Live-Setzung wartetZur Übergabe, Deployment offen
AbgeschlossenWirklich fertig - reiner Kontrollblick, ohne HandlungsbedarfErledigt, Abgeschlossen

Das Feld Übergabe ist das wichtigste. Ein Status wie "Deployment offen" oder "Zur Übergabe" liegt in Jira in der Kategorie Done. Solche Tickets fallen durch jeden normalen Filter und werden ohne diesen Eintrag gar nicht erst abgefragt - sie fehlen dann vollständig, ohne dass es auffällt.

Gerechnet wird in Arbeitstagen (Mo-Fr, 8-18 Uhr), nicht in Kalendertagen. Ein Ticket, das über ein langes Wochenende liegt, ist nicht drei Tage vernachlässigt worden. Die Schwellen für den Pile of Shame sind eine Setzung, keine Messung: zu klein gewählt trifft der Hinweis alles und sagt dann nichts mehr.

Bedienung

Tastenkürzel

TasteAktion
F5Holt die sichtbare Ansicht und immer auch die Buchungen des Monats
Strg+FSuchfeld fokussieren
Strg+NManuelle Zeit erfassen
Strg+DTicket-Details anzeigen
Strg+Umschalt+ATicket-Analyse (interaktiver Bericht als HTML-Datei)
Strg+T / Strg+Umschalt+TNächstes / voriges Theme (wenn die Themes eingeschaltet sind)
Strg+EExport - Format (Excel, PDF, JSON, Markdown) wird im Speichern-Dialog gewählt
Strg+PDruckvorschau
Strg+LMeldungsfenster ein-/ausblenden
Strg +/- / 0Zoom rein / raus / zurücksetzen (auch Strg + Mausrad)
Strg+,Einstellungen
F1Info
Strg+QBeenden
Erste Schritte

Installation

💻

Windows (PowerShell)

irm https://raw.githubusercontent.com/michaelblaess/jira-timesheet-qt/main/install.ps1 | iex
🐧

Linux / macOS

curl -fsSL https://raw.githubusercontent.com/michaelblaess/jira-timesheet-qt/main/install.sh | bash

Oder das Archiv unter Releases herunterladen. Läuft unter Windows, macOS und Linux · jira-timesheet-qt --demo startet ohne Jira-Zugang mit Beispieldaten.

Bevor es losgeht

Was du aus Jira brauchst

Das Programm meldet sich mit deinem eigenen Konto an - kein Server, kein Konto beim Hersteller nötig. Drei Angaben: Adresse, Token, Kennung. Zum Ausprobieren genügt --demo, dafür braucht es gar keinen Zugang.

☁️

Jira Cloud

Token unter id.atlassian.com anlegen: Create API token, Name, Ablaufdatum (1 bis 365 Tage). Er wird nur einmal angezeigt. Als Kennung die Mailadresse des Atlassian-Kontos.

🏢

Data Center / Server

Avatar → ProfilePersonal access tokens (ab Jira 8.14). Kennung ist der Jira-Benutzername, und der Schalter Jira-Modus muss an sein. Hier ist ScriptRunner Pflicht - die Worklog-Suche läuft über dessen JQL-Funktion.

🎫

Optional: Budget und Status

Das Budget-Feld findet auf Cloud ein Klick selbst. Die Statuslisten der Ticket-Ansichten dürfen leer bleiben - dann sortiert das Programm nach der Statuskategorie, die Jira ohnehin vergibt.

Schritt für Schritt steht das in der README.

Technologie

Tech-Stack

Python 3.12+ PySide6 / Qt 6 qtawesome httpx openpyxl fpdf2 holidays
Rechtliches

Haftungshinweis beim ersten Start

Beim ersten Start erscheint ein Hinweis, der bestätigt werden muss - ohne Zustimmung beendet sich das Programm. Das Werkzeug liest über die Jira-REST-API Arbeitszeit-Buchungen aus einem fremden System; je nach Rechtevergabe gehören dazu auch Buchungen anderer Personen. Mit der Bestätigung erklärst Du, das Programm nur gegen dazu berechtigte Jira-Instanzen einzusetzen und nur Daten auszuwerten, zu deren Verarbeitung Du befugt bist. Die Zustimmung wird in ~/.jira-timesheet-qt/disclaimer.json festgehalten.

Die Software wird ohne jede Gewährleistung bereitgestellt ("as is"), wie in der Lizenz geregelt. Die Haftung des Autors (Michael Blaess) für Schäden aus der Nutzung ist im gesetzlich zulässigen Rahmen ausgeschlossen. Die Haftung für Vorsatz und grobe Fahrlässigkeit, für die Verletzung von Leben, Körper oder Gesundheit sowie nach zwingendem Produkthaftungsrecht bleibt unberührt.

Haftungshinweis: Dieses Projekt ist nicht von Atlassian entwickelt, unterstützt oder autorisiert. "Jira" und "Atlassian" sind eingetragene Markenzeichen von Atlassian Corporation. Dieses Werkzeug nutzt die öffentliche Jira REST API und steht in keiner Verbindung zu Atlassian.

Nutzungsbedingungen

Lizenz

Der Quelltext steht unter der Business Source License 1.1 - offen einsehbar, die kommerzielle Verwertung durch Dritte aber nicht gestattet.

🧑‍💻

Selbst bauen ist frei

Als Privatperson darfst Du den Quelltext lesen, bauen und benutzen - auch für Deine berufliche Arbeit. Repository klonen, uv sync, starten.

📦

Fertige Pakete kosten

Die gebauten Programmpakete für Windows, macOS und Linux gibt es gegen einen kleinen Betrag. Sie sind an den Erwerber gebunden und dürfen nicht weitergegeben werden.

🗓️

Wird später frei

Jede Version wird vier Jahre nach ihrer Veröffentlichung automatisch zur Mozilla Public License 2.0.