plain-git Changelog
[1.0.0-alpha] — Phase 1 Core Setup (2025-11-09)
✨ Added
- CLI entry point with figlet banner and interactive menu (
src/cli/index.ts) - Git environment detection (
src/core/GitDetector.ts) - Git command executor (
src/core/GitExecutor.ts) - Logger utility for styled console output (
src/utils/Logger.ts)
⚙️ Configuration
- Configured TypeScript (CommonJS, ES2020 target)
- Added npm scripts for build, dev, and clean
- Added cross-platform dependency setup (chalk, inquirer, figlet)
📦 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 ExperienceTooling
- Auto-detects missing Git installations
- Prompts to initialize repo if
.gitfolder missing - Clean console output with emojis and colored text
- Global CLI executable (
plain-git) via npm bin
🟢 Status: Phase 1 complete
🧩 Next: Phase 2 – Add RepositoryManager, BranchManager, CommitManager
- 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
0 commit comments