Skip to content

feat: unified Bubbletea progress UI for sync command#2

Merged
jung-thomas merged 7 commits intomainfrom
feature/sync-progress-ui
Apr 20, 2026
Merged

feat: unified Bubbletea progress UI for sync command#2
jung-thomas merged 7 commits intomainfrom
feature/sync-progress-ui

Conversation

@jung-thomas
Copy link
Copy Markdown
Contributor

Summary

  • Replaces silent sync phases with a unified Bubbletea inline progress display showing a phase status list and animated progress bar throughout the entire sap-devs sync lifecycle
  • Adds non-TTY fallback with plain text progress lines for CI, pipes, and inject --sync
  • Integrates marker expansion sub-items as indented rows under the markers phase, removing the standalone Bubbletea program

Design

  • Single syncModel in internal/ui/sync_progress.go with hand-rolled spinner + progress bar (no bubbles dependency)
  • SAP Fiori Horizon Evening color palette via local lipgloss v1 constants
  • cmd/sync.go refactored: buildSyncPlan pre-checks staleness → syncWorker goroutine sends typed messages → Bubbletea renders inline
  • TTY detection gates Bubbletea vs PrintPlainProgress fallback
  • "Up to date" fast path when all phases are fresh (no Bubbletea launched)

Test plan

  • go build ./... && go vet ./... passes clean
  • 12 unit tests for syncModel transitions and view rendering
  • sync --force shows all phases with ✓/✗ status
  • sync --force | cat produces clean plain text (no ANSI artifacts)
  • sync --force --category events shows only archive block + events phase
  • sync (after fresh sync) prints "up to date" with no progress bar

Adds RunSyncProgress() which constructs a syncModel and wraps it in a
tea.Program for use by cmd/sync.go, and PrintPlainProgress() which
writes formatted non-TTY output lines for done/failed/skipped phases.
…ilure reporting, restore company https check
@jung-thomas jung-thomas merged commit 69ebc84 into main Apr 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant