Go to file
dimitar 0c9c07e8de feat: phase 4 — periodic scanning (watch mode) with change detection
Add the scheduling layer and the watch command so gitflow can rescan
repositories on an interval and surface state changes.

Scheduler (internal/scheduler):
- Scheduler runs a callback immediately and then on a time.Ticker until
  the context is cancelled; interval <= 0 means a single run
- Graceful shutdown: cancellation is never reported as an error (checked
  on the first run and after every run), so Ctrl-C / SIGTERM exit cleanly
- A non-cancellation run error stops the loop and is propagated

Change detection (pkg/status):
- Changed(prev, next) compares snapshots per repository path — status,
  branch, detached flag, ahead/behind, stash count, and file counts —
  and returns the repositories whose observable state differs, including
  repositories that newly appear

Watch command (cmd/gitflow):
- newWatchCmd validates that --interval is positive, prompts for the
  parent directory on a TTY when --dir is absent, and drives the
  scheduler with ScanOnce
- Each frame clears the screen on a terminal (or prints a RFC3339 header
  when output is piped, so watch doubles as a lightweight logger) and
  renders through the presenter
- Footer shows changed repositories since the previous frame ("▲ name:
  status") and the next scan time; JSON format emits one document per
  frame for scripting
- SIGINT/SIGTERM handled via signalContext for a clean stop

Testing:
- Scheduler: single run, periodic repetition, stop-on-error, pre-cancelled
  context, and cancellation-during-run (no error reported)
- status.Changed: unchanged repos ignored; status, file-count, and
  newly-appeared repos detected

Verified: go build, go vet, go test -race, gofmt clean; manual watch
smoke test over a scratch directory with 1s interval — frames render,
SIGINT and SIGTERM both exit 0 with no orphaned processes.
2026-08-02 08:44:29 +02:00
.github/workflows feat: phase 0 — project scaffolding and build tooling 2026-08-02 08:30:23 +02:00
cmd/gitflow feat: phase 4 — periodic scanning (watch mode) with change detection 2026-08-02 08:44:29 +02:00
internal feat: phase 4 — periodic scanning (watch mode) with change detection 2026-08-02 08:44:29 +02:00
pkg/status feat: phase 4 — periodic scanning (watch mode) with change detection 2026-08-02 08:44:29 +02:00
.gitignore feat: phase 0 — project scaffolding and build tooling 2026-08-02 08:30:23 +02:00
.golangci.yml feat: phase 0 — project scaffolding and build tooling 2026-08-02 08:30:23 +02:00
go.mod feat: phase 2 — CLI commands and configuration resolution 2026-08-02 08:38:55 +02:00
go.sum feat: phase 2 — CLI commands and configuration resolution 2026-08-02 08:38:55 +02:00
implementation.md docs 2026-08-02 08:25:09 +02:00
Makefile feat: phase 0 — project scaffolding and build tooling 2026-08-02 08:30:23 +02:00
readme.md docs 2026-08-02 08:25:09 +02:00

git flow is CLI app writen go.

App will explore [] all git repos leaving on our machine. it will ask for parent directory. will scan status of our repos and present it to the user. app will scan repos in set interval [and present findings, integrated ai agent will suggest next steps/actions]