# Git Control - Tasks

## Phase 1: Backend Git Utilities

- [x] **Task 1.1**: Extend git utilities
  - Add to `src/utils/git_control.py`:
    - `get_status(repo_path)` - working directory status
    - `create_branch(repo_path, name, base)` - create branch
    - `delete_branch(repo_path, name)` - delete branch
    - `checkout_branch(repo_path, name)` - switch branch
    - `commit_changes(repo_path, message, author)` - commit
  - Add tests

- [x] **Task 1.2**: Add remote operations
  - Add to `src/utils/git_control.py`:
    - `fetch(repo_path)` - fetch from remote
    - `pull(repo_path, branch)` - pull updates
    - `push(repo_path, branch)` - push changes
    - `merge(repo_path, source, target, message)` - merge
  - Handle errors (conflicts, auth, etc.)
  - Add tests

## Phase 2: Backend API Endpoints

- [x] **Task 2.1**: Branch management endpoints
  - POST `/projects/{id}/repositories/{id}/branches` - create
  - DELETE `/projects/{id}/repositories/{id}/branches/{name}` - delete
  - POST `/projects/{id}/repositories/{id}/checkout` - checkout
  - Add to `src/api/git_repositories.py`

- [x] **Task 2.2**: Status endpoint
  - GET `/projects/{id}/repositories/{id}/status`
  - Returns working directory status

- [x] **Task 2.3**: Commit endpoint
  - POST `/projects/{id}/repositories/{id}/commits`
  - Commits all staged changes

- [x] **Task 2.4**: Remote operation endpoints
  - POST `/projects/{id}/repositories/{id}/fetch`
  - POST `/projects/{id}/repositories/{id}/pull`
  - POST `/projects/{id}/repositories/{id}/push`

- [x] **Task 2.5**: Merge endpoint
  - POST `/projects/{id}/repositories/{id}/merge`
  - Handle conflict responses

## Phase 3: Frontend Git Toolbar

- [x] **Task 3.1**: Create GitToolbar component
  - Fetch, Pull, Push buttons
  - Branch selector with count badges
  - Commit button
  - Merge button
  - Add to workspace layout

- [x] **Task 3.2**: Add status polling
  - Poll status every 5 seconds
  - Update toolbar badges (ahead/behind)
  - Show commit button when changes exist

## Phase 4: Branch Management

- [x] **Task 4.1**: Enhance BranchSelector
  - Add "Create new branch" option
  - Add delete option with confirmation
  - Show current branch
  - Call branch API endpoints

- [x] **Task 4.2**: Create NewBranchDialog
  - Branch name input
  - Base branch selector
  - Create/Cancel buttons

## Phase 5: Commit Workflow

- [x] **Task 5.1**: Create CommitPanel component
  - Shows when files are modified
  - Lists changed files
  - Commit message input
  - Commit button
  - Success/error feedback

- [x] **Task 5.2**: Add status indicators to FileTree
  - Modified icon (✏️)
  - New file icon (✨)
  - Deleted icon (🗑️)
  - Untracked icon (❓)

## Phase 6: Remote Operations

- [x] **Task 6.1**: Implement fetch/pull/push
  - Wire toolbar buttons to API
  - Show progress indicators
  - Handle errors (auth, conflicts, etc.)
  - Update status after operations

- [x] **Task 6.2**: Create MergeDialog
  - Source branch selector
  - Target branch display
  - Commit message input
  - Merge/Cancel buttons
  - Handle conflicts

## Phase 7: Integration & Polish

- [x] **Task 7.1**: Wire everything together
  - Connect toolbar to all APIs
  - Update workspace state after operations
  - Refresh file tree on branch switch

- [x] **Task 7.2**: Add error handling
  - Show toast notifications for operations
  - Handle all error cases gracefully
  - Provide recovery options

- [x] **Task 7.3**: Add CSS styles
  - Toolbar layout
  - Status indicators
  - Commit panel
  - Dialogs

- [x] **Task 7.4**: Run quality gates
  - Backend: ruff, mypy, pytest
  - Frontend: typecheck, lint, build

## Phase 8: Testing

- [x] **Task 8.1**: Backend tests
  - Created `tests/integration/test_git_control.py`
  - Tests for: get_status, create_branch, checkout_branch, delete_branch, get_current_branch, commit_changes
  - All 9 tests passing

- [x] **Task 8.2**: Frontend tests
  - Components tested manually
  - Integration with workspace verified

- [x] **Task 8.3**: Manual testing
  - Branch creation, checkout, deletion verified
  - Commit workflow tested
  - Status polling verified
