Skip to content

frankhildebrandt/StackriotApp

Repository files navigation

Stackriot

Stackriot ist eine native macOS-App (macOS 14+) für Entwickler, die mit mehreren Git-Branches gleichzeitig arbeiten. Sie kombiniert Git-Worktree-Management mit IDE-Integration, KI-Agenten, Node.js-Tooling und einer integrierten Run-Konsole – alles in einer übersichtlichen dreispaltigen Oberfläche.


Features

Git-Repository- & Worktree-Management

  • Klont Repositories als Bare-Repositories und verwaltet beliebig viele Git Worktrees pro Repository
  • Erstellt neue Worktrees inkl. Branch-Anlage direkt aus der App
  • Zeigt Worktree-Status: uncommitted changes, ahead/behind-Zähler, Konflikte
  • Erkennt Abweichungen zum Default-Branch und bietet Rebase/Merge-Workflows an
  • Integriert Worktrees zurück in den Default-Branch (inkl. Konflikt-Handling)
  • Löscht Worktrees inkl. lokalem Branch nach dem Mergen

Organisation

  • Repositories lassen sich in Namespaces und Projekte gruppieren
  • Mehrere Remotes pro Repository konfigurierbar (inkl. SSH-Key-Zuweisung pro Remote)
  • Auto-Refresh aller Repositories im Hintergrund (konfigurierbares Intervall)

IDE-Integration

  • Öffnet Worktrees direkt in Cursor, VS Code, Zed, Codex App, Xcode oder JetBrains-IDEs (IntelliJ IDEA, GoLand, PhpStorm, WebStorm)
  • Öffnet Worktrees in einem externen Terminal: Terminal.app, iTerm2 oder Ghostty
  • Zeigt den Worktree-Pfad im Finder an

Ticket- & Issue-Anbindung

  • GitHub: PRs und Remote-Metadaten über die GitHub CLI (gh)
  • Jira Cloud (optional): konfigurierbarer zweiter Ticket-Provider neben GitHub

KI-Agenten

  • Weist jedem Worktree einen AI-Agent zu: Claude Code, Codex, GitHub Copilot (CLI), Cursor CLI oder OpenCode
  • Startet den Agenten per AppleScript in einem Terminal.app-Fenster
  • Überwacht den laufenden Agenten-Prozess via PID-Polling
  • Zeigt laufende Agenten mit einem animierten lila Indikator in der Sidebar und in der Worktree-Liste

MCP-Server

  • Optionaler eingebauter MCP-Server (Model Context Protocol): in den Einstellungen aktivieren, Port und Zugriff steuern; externe Clients können sich per HTTP/SSE anbinden und registrierte Stackriot-Tools nutzen

Aktionen & Run-Konsole

  • Führt Aktionen in Worktrees aus: Make-Targets, npm/pnpm/yarn-Scripts, Dependency-Installation, Git-Operationen
  • Dev Containers: Anbindung an devcontainer / Docker-Workflows für containerisierte Umgebungen (siehe Einstellungen)
  • Zeigt die Ausgabe jeder Aktion in einem integrierten Terminal-Tab (Ziel-Engine: libghostty; die Bridge ist standardmäßig gelinkt, mit Metal-backed SwiftTerm-Fallback bis der native libghostty-Runtime-Build vendored ist)
  • Verwaltet mehrere Tabs pro Worktree mit Tab-Pinning und konfigurierbarem Retention-Modus
  • Speichert alle Runs mit Status (pending, running, succeeded, failed, cancelled) in SwiftData

Node.js-Tooling

  • Verwaltet eine nvm-kompatible Node.js-Runtime automatisch (lts/* als Standard)
  • Erkennt die benötigte Node-Version aus package.json (engines-Feld), .nvmrc oder .node-version
  • Unterstützt npm, pnpm und yarn inkl. Corepack
  • Automatische Runtime-Updates im Hintergrund

SSH-Key-Management

  • Generiert und importiert SSH-Keys, speichert sie sicher im Keychain
  • Konfiguriert die SSH-Umgebung für alle Git-Operationen automatisch

Architektur

Schicht Details
Plattform macOS 14+, Swift 6.3, SwiftUI, SwiftData
UI Dreispaltige NavigationSplitView: Sidebar → Repository-Detail → Run-Konsole
State AppModel (SwiftUI @Observable) als zentraler App-State
Services Kern: RepositoryManager, WorktreeManager, WorktreeStatusService, IDEManager, SSHKeyManager. Integrationen: GitHubCLIService, JiraCloudService, AIProviderService. Tooling: NodeToolingService, NodeRuntimeManager, MakeToolingService, RunConfigurationDiscoveryService, DevToolDiscoveryService, DevContainerService, LocalToolManager. Agenten: AIAgentManager, ACPAgentDiscoveryService, ACPAgentRunService, AgentRawLogArchiveService. Sonstiges: MCPServerManager, Benachrichtigungen, globale Hotkeys, Kontext-Erfassung für Quick-Intent
Persistenz SwiftData (Bare-Repository-Pfade, Worktrees, SSH-Keys, Runs, Action-Templates)
Terminal Interne Engine-Auswahl libghostty / SwiftTerm; GhosttyKit.xcframework wird aus Vendor/Ghostty gebaut und gelinkt, SwiftTerm bleibt Fallback solange das native Runtime-Artefakt fehlt

Voraussetzungen

  • macOS 14 (Sonoma) oder neuer
  • Swift 6.3 (siehe swift-tools-version im Package.swift) und eine Xcode-Version, die diese Toolchain mitliefert
  • Optionale CLI-Tools (je nach genutzter Funktion): git, gh, node/nvm, make, claude, codex, cursor/cursor-agent, copilot, opencode, docker, devcontainer oder npx

Build

Swift Package (Kommandozeile)

swift build
swift test

Xcode

Stackriot.xcodeproj öffnen und im Scheme Stackriot bauen oder ausführen.

Make-Ziele

make help listet alle Ziele. Wichtige Kurzform:

Ziel Zweck
make debug-run Debug-Build und Start der App (Caches unter build/)
make test swift test mit isoliertem TMPDIR/HOME unter build/
make production-build Release-App-Bundle nach build/DerivedData/Build/Products/Release/Stackriot.app
make production Wie production-build, plus portables App-Bundle und ZIP unter build/production/
make dmg DMG mit Drag-&-Drop-Hilfe, Hintergrundgrafik und dieser README.md unter build/dmg/Stackriot.dmg
make dmg-background Nur die DMG-Hintergrundgrafik erzeugen

Vendored libghostty

Ghostty ist als gepinnter Vendor unter Vendor/Ghostty eingebunden. Die nativen Artefakte werden aus diesem Source gebaut:

make vendor-libghostty

Das benötigt Zig 0.15.2 und erzeugt Vendor/Ghostty/macos/GhosttyKit.xcframework sowie Vendor/Ghostty/zig-out/lib/ghostty-vt.xcframework.


Lizenz

Dieses Projekt enthält keinen expliziten Lizenzeintrag.

About

Manage all your Git thingies, AI thingies, IDE thingies, and a lot of other thingies.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages