Add YouTrack pull/push sync with project settings and time tracking.
CI / test-and-build (push) Failing after 1m19s
CI / demo (push) Skipped

Wire manual Y menu and CLI sync for issues and work items, persist
per-project credentials, and keep local edits until an explicit push.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-24 00:17:51 +02:00
co-authored by Cursor
parent 19ae1f1b62
commit 98d2253f44
23 changed files with 2874 additions and 44 deletions
+18
View File
@@ -15,6 +15,7 @@ Offline-first Terminal-Taskmanager (`tm`) — Kanban-Board, Markdown-Tickets, Ch
- Report mit Group-by (Ticket / Tag)
- Undo / Redo über eine Command-History
- Vim-Style Keybindings
- YouTrack Pull/Push (manuell; Remote-URL, Token, Project-Key pro Projekt)
## Install
@@ -32,6 +33,9 @@ make build # → ./bin/tm
```bash
tm # TUI starten
tm sync pull # Issues von YouTrack holen
tm sync push # lokale Änderungen nach YouTrack
tm sync pull -p inbox # anderes Projekt
tm version # Build-Version (Git-Hash)
tm help
```
@@ -62,6 +66,8 @@ Daten landen standardmäßig unter `~/.local/share/task-master`, Config unter `~
| `l` | Board-Filter |
| `/` | Suche |
| `p`/`P` | Projekt / Ticket verschieben |
| `e` | Ticket bzw. Projekt editieren (in Projektliste: YouTrack) |
| `Y` | YouTrack-Menü: Pull / Push |
| `t`/`T` | Timer / Zeit buchen |
| `m` | Zeiteinträge |
| `r` | Report |
@@ -71,6 +77,18 @@ Daten landen standardmäßig unter `~/.local/share/task-master`, Config unter `~
Checklisten im Preview: `J`/`K` + `Space`.
### YouTrack
1. `p` → Projekt wählen → `e`
2. Remote-URL, Permanent Token und Project-Key setzen (gespeichert in `projects/<id>/meta.json`, Mode `0600`)
3. Lokal arbeiten (Anlegen/Edit/Status bleiben lokal)
4. `Y` → **Pull** (Issues + Work Items) oder **Push** (Tickets + Zeiteinträge)
CLI: `tm sync pull` / `tm sync push`
Zeit: lokale Einträge ohne `externalId` werden als YouTrack-Work-Items gepusht; remote Work Items landen lokal beim Pull.
Status-Mapping Richtung YouTrack: OPEN→`Open`, WIP→`In Progress`, DONE→`Fixed` (Workflow-Namen können projektspezifisch abweichen).
## Entwicklung
```bash