fc28033fe8
runGitInDir had no context: a hanging remote parked the sync goroutine in cmd.Run(), the doSync defer never ran, `syncing` stayed true, and every manual + periodic sync was refused with "Szinkronizálás már folyamatban" until a controller restart. Each git command now runs under exec.CommandContext with a fresh per-command gitCmdTimeout (120s); the deadline error names the timeout and the (masked) git args. Debounce and failed-sync-arms-debounce unchanged. Tests: T-C1 cancelled-context kills the subprocess promptly (red-proof: pre-fix exec.Command shape runs to completion → test FAILS); T-C2 failed sync releases `syncing` and a post-debounce retry EXECUTES. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6