Dev seed now issues write tokens and writes local taskmaster meta under TASK_MASTER_HOME, so make run-dev can sync without manual setup. Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
task-master
Offline-first Terminal-Taskmanager (tm) — Kanban-Board, Markdown-Tickets, Checklisten, Zeiterfassung und Reports. Gebaut mit Bubble Tea.
Demo wird aus
demo.tapeerzeugt (make demo). Ohne GIF lokal: siehe Demo aufnehmen.
Features
- Projekte & Tickets lokal als JSON (kein Server) — Binary
tm - Web-Server
tm_servermit eingebettetem Svelte-UI, SQLite, Auth und Rechte pro Projekt - Board-Filter: All / Backlog / In Progress / Done
- Tickets in
$EDITORbearbeiten (Markdown + Checklisten) - Timer, manuelle Zeitbuchungen, Zeiteinträge verwalten
- Report mit Group-by (Ticket / Tag)
- Undo / Redo über eine Command-History (TUI)
- Vim-Style Keybindings (TUI)
- YouTrack Pull/Push (manuell; Remote-URL, Token, Project-Key pro Projekt)
- Server: Sync-Backend pro Projekt, Projekt-Tokens für die TUI, Ticket-Revisionen
Install
Voraussetzung: Go (siehe go.mod). Für tm_server zusätzlich Node.js (Frontend-Build).
git clone git@git.aloxdrim.de:skruecken/task-master.git
cd task-master
make install # → $(go env GOPATH)/bin/tm
# oder nur bauen:
make build # → ./bin/tm
make build-server # Frontend + → ./bin/tm_server
Nutzung
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
Web-Server (tm_server)
# Dev/Test gegen lokales tm_server (kein YouTrack): seedet Projekte + verdrahtet TUI
make run-server-dev # :8080, Data unter ./.dev-home, Login admin/admin
make run-dev # TUI: Projekte „Test“ + „Website Relaunch“ schon mit Token connected
# Produktion / manuell:
export TM_ADMIN_USER=admin
export TM_ADMIN_PASSWORD='change-me'
export TASK_MASTER_SECRET='long-random-secret' # verschlüsselt Remote-Tokens
./bin/tm_server -listen :8080
# JSON-Daten der TUI einmalig importieren:
./bin/tm_server import-json -owner admin
UI: http://localhost:8080 — Dashboard, Board, Report, Members, Settings (Tokens), Users (Admin), Ticket-Zeit & History.
Das Test-Environment (run-server-dev) spricht nur mit diesem Backend; YouTrack ist dort nicht verdrahtet.
Beim Seed werden für Test und Website Relaunch Write-Tokens erzeugt und unter .dev-home als lokale TUI-Projekte (backend=taskmaster) hinterlegt — danach make run-dev und Sync (Y → Pull).
Dev-Frontend (Vite, API-Proxy): cd web && npm run dev parallel zu tm_server.
Sandbox ohne echte Config/Daten:
make run-dev # nutzt ./.dev-home
# oder:
TASK_MASTER_HOME=/tmp/tm-sandbox tm
Daten landen standardmäßig unter ~/.local/share/task-master, Config unter ~/.config/task-master.
| Variable | Wirkung |
|---|---|
TASK_MASTER_HOME |
Basis für Config + Daten (Dev/Demo) |
TASK_MASTER_DATA_DIR |
Nur Datenverzeichnis überschreiben |
Keybindings (Auszug)
| Taste | Aktion |
|---|---|
j/k |
Navigieren |
n |
Neues Ticket/Projekt |
e |
Ticket im Editor |
s |
Status ändern |
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 |
x/X |
Löschen / Force-Delete |
u/U |
Undo / Redo |
q |
Beenden |
Checklisten im Preview: J/K + Space.
YouTrack
p→ Projekt wählen →e- Remote-URL, Permanent Token und Project-Key setzen (gespeichert in
projects/<id>/meta.json, Mode0600) - Lokal arbeiten (Anlegen/Edit/Status bleiben lokal)
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
make test
make build
make version
Demo aufnehmen
Die Walkthrough-Aufnahme steckt in demo.tape (VHS):
# einmalig: vhs + ttyd/ffmpeg (siehe VHS-Docs)
make demo # schreibt demo.gif (+ demo.mp4)
Die Pipeline erzeugt das GIF ebenfalls und lädt es als Artifact hoch.
Lizenz
Privat / eigener Use — siehe Repository-Einstellungen auf Gitea.
