📦 CHANGELOG — v1.0.0-beta.1
Release Date: 2025-11-21
Status: Beta Release
This is the first public beta of plain-git, introducing the complete baseline architecture, CLI, managers, and test suite.
The release focuses on full interactive Git workflows powered by plain-English commands and a fully extensible manager-based system.
🚀 Highlights
- Brand-new interactive CLI with clean UX, categorized menus, colored output, and dynamic prompts.
- Complete Git operation abstraction through specialized managers.
- Fully implemented test suite (Vitest) for every manager.
- Internal system architecture finalized for beta stability.
- Ready for external contributors, issue tracking, and PR workflows.
🛠 Added
Core System
- Full CLI entrypoint with:
- ASCII banner
- Environment checks
- Dynamic command mapping
- Current-branch indicator
- Grouped menu categories
- Added HandleCommands core dispatcher.
- Implemented project-wide Logger with color-coded output.
Managers (Complete Feature Set)
RepositoryManager
- Init repository (standard / bare)
- Clone repo
- Show status (short / long)
- Show & set Git config
- Manage remotes (add / update / remove / list)
- Show repo info
- Repository integrity check (
git fsck) - GC / repository optimization
BranchManager
- Create branch
- Create & switch
- Switch existing branch
- Delete branch (safe & force)
- Rename branch
- List branches
- Show current branch
- Push & set upstream
CommitManager
- Stage all files
- Stage selected files
- Unstage selected files
- Commit changes
- Amend last commit
- Undo last commit (soft)
- Show last commit details
- Show log (graph, detailed, compact)
- Show diff (unstaged, staged)
RemoteManager
- List remotes
- Add / rename / remove remote
- Push (simple & upstream)
- Pull
- Fetch
- Show remote info
- Sync all remotes
StashManager
- Create stash (optionally with message)
- List stashes
- Apply stash
- Pop stash
- Drop stash
- Clear all stashes
TagManager
- List tags
- Create tag (lightweight & annotated)
- Show tag details
- Delete tag
- Push all tags
- Push single tag
MergeManager
- Merge selected branch
- Detect merge conflicts
- Show conflicting files
- Abort merge
- Continue merge
ConflictManager
- List files with conflict markers
- Inspect conflict markers inside selected file
- Open file in editor
- Show diff for conflicting file
- Conflict resolution guide
RebaseManager
- Start rebase
- Interactive rebase
- Continue / skip / abort
- Detect conflicts
HistoryManager
- Show history (multiple formats)
- Reflog
- Commit details
- Compare commits
- File diff
- File history
- Blame
- Author summary
ResetManager
- Undo last commit (soft / mixed / hard)
- Reset to specific commit
- Discard file changes
- Clean untracked files
- Interactive reset flow
🧰 Developer Tooling
- Completed Vitest test suites for all managers.
- Added mocks for:
inquirerexecSyncfsGitExecutor
- Sandbox-safe testing environment.
- Added path alias support (
@/...).
🧹 Changed / Improved
- Refactored GitExecutor to handle stdout/stderr cleanly.
- Improved command substitution handling.
- Added current-branch display in menu banner.
- Cleaner UX in grouped menu system.
- Updated internal mapping structure for dynamic command handlers.
- Normalized output logs across all managers.
🐛 Fixed
- Fixed issues with
git fsckoutput not showing. - Fixed terminal menu scrolling issue.
- Fixed sandbox repo accidentally being tracked.
- Fixed repeated menu rendering bug.
- Fixed incorrect placeholder replacements in command list.
🧪 Testing
Added test suites for:
- RepositoryManager
- BranchManager
- CommitManager
- RemoteManager
- StashManager
- TagManager
- MergeManager
- ConflictManager
- RebaseManager
- HistoryManager
- ResetManager
Ensured:
- Fully mocked STDIN/STDOUT
- No real Git operations
- No async timeouts
- Deterministic CI behavior
⚙️ Internal Architecture Finalized
The beta finalizes the stable core architecture for all future expansions:
- Git abstraction layer (GitExecutor)
- Manager registry
- Command handler dispatcher
- CLI lifecycle:
banner → environment check → menu → command execution - Test-ready modular design