This document defines the product scope, UX principles, and implementation roadmap for the Git section in the Context Pane.
Deliver a simple, reliable Git experience inside CopilotForge so users can:
- see repository status quickly,
- review file-level changes,
- create quality commits (with optional Copilot message generation),
- view recent history without leaving the app.
- Full Git client parity (rebase/cherry-pick/stash UI).
- Complex merge conflict resolution UI.
- Advanced graph interactions (drag, re-layout, branch compare matrix).
- Fast status first: Always show branch + clean/dirty state immediately.
- Single-pane workflow: Status, changes, commit, history in one scrollable panel.
- Safe defaults: Disable destructive actions when invalid; show clear errors.
- Low cognitive load: Keep actions obvious and labels explicit.
- Progressive complexity: MVP first, advanced controls later.
- Repository status header
- Working tree changes list
- Commit composer
- Recent history list + mini graph
- P0 Status + Init
- Branch and clean/dirty status shown in panel header.
Init Gitflow works and refreshes state immediately.- Status refresh now triggers on panel open, project switch, and chat completion.
- P1 Change Summary (core)
- File changes grouped by
A / M / D. - Per-file
+added / -deleteddisplayed. - Added-file text fallback counts lines when git numstat returns
0/0.
- File changes grouped by
- P2 Commit Workflow (adapted)
- Commit composer exists with auto-generated message when left empty.
- Empty-message generation now uses Copilot prompt flow with selected user model.
- Commit operation stages all changes internally before commit.
- Added cooldown after AI connection failure to avoid repeated sidecar errors/log noise.
- P3 History (minimal)
- Recent commit list (message, short SHA, author, relative time) is live.
- Recent commits section is capped to 3 visible rows with scroll for more.
- P3 Graph lane
- Vertical commit graph lane (dots/lines) not implemented yet.
- P4 Quality-of-Life
- Amend, branch create/switch, ahead/behind, push/pull actions.
- Removed
All / Staged / Unstagedtabs from the panel (always shows all changes). - Removed
Stage All / Unstage Allbuttons from UI. - Commit now stages all changes automatically to keep flow single-action.
These decisions were made intentionally during implementation to keep the panel minimal and reduce user friction.
User value: Know repo state at a glance.
Scope:
- Show current branch.
- Show status badge:
CleanorN files changed. - Show repository path summary.
- Show “Init Git” if no repository exists.
Acceptance criteria:
- Status loads on panel open and project switch.
Init Gitcreates repository and refreshes status.- Errors are surfaced with actionable text.
User value: Understand what changed before committing.
Scope:
- List changed files grouped by state (
A,M,D). - Display per-file
+added/-deletedline counts. - Add quick filter tabs:
All,Staged,Unstaged.
Acceptance criteria:
- Counts reflect git diff output accurately.
- Empty state shown when no changes exist.
User value: Make commits without terminal usage.
Scope:
- Commit message input field.
Stage All/Unstage Allactions.Commitaction with disabled state when invalid.Auto Generatemessage button (Copilot-assisted from staged diff).
Acceptance criteria:
- Commit succeeds only when there are staged changes and non-empty message.
- If message is empty and user taps
Auto Generate, message is inserted, not auto-committed. - User-edited message is never overwritten implicitly.
User value: See what happened recently.
Scope:
- Show last 10–20 commits (message, author, relative time, short SHA).
- Add lightweight vertical commit graph lane (simple dots/lines).
Acceptance criteria:
- History renders in under 500ms for typical repos.
- Graph is stable and readable; no interactive complexity required.
User value: Reduce context switches.
Scope:
- Amend last commit.
- Create/switch branch.
- Ahead/behind indicator.
- Push/Pull status + actions.
Acceptance criteria:
- Branch and remote operations show clear success/failure messages.
- Loading/progress states prevent duplicate requests.
- Input: staged diff summary + changed file names.
- Output: concise, actionable commit message.
- Optional style toggle:
- Plain sentence (default)
- Conventional commits (
feat:,fix:,chore:)
- No auto-commit side effects from generation.
- Distinguish:
Not a git repositoryGit executable missingPermission deniedNothing to commit
- Provide recoverable actions where possible (
Init Git,Retry,Open folder).
- Repository status refresh target: < 300ms median.
- History load target: < 500ms median.
- All git operations off main thread.
git_panel_openedgit_status_refreshed(latency + result)git_commit_generated_messagegit_commit_success/git_commit_failed
- ✅ Stabilize status + init flow.
- ✅ Add changed-file summary + line stats.
- ✅ Add commit composer (adapted single-action flow).
- ⏳ Add history list + mini graph (list done, graph pending).
- ⏳ Add QoL branch/remote features.
- Existing implementation now includes status, grouped changes, commit composer, AI-assisted empty-message generation, and minimal recent history list.
- Remaining milestones are graph visualization and branch/remote quality-of-life actions.