git-cvnty 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/LICENSE +21 -0
- package/README.md +202 -0
- package/dist/cli.js +1296 -0
- package/package.json +58 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to git-cvnty will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [1.1.0] - 2026-03-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Changelog Viewer** — integrated tabbed interface inspired by `jdeniau/changelog-view`
|
|
15
|
+
- Browse local `CHANGELOG.md` with per-version sidebar navigation
|
|
16
|
+
- Fetch changelogs for npm packages and GitHub repositories
|
|
17
|
+
- Terminal markdown rendering (headings, bullets, code spans)
|
|
18
|
+
- Inline package query: `package@version` or `owner/repo`
|
|
19
|
+
- Stash Manager action (push, pop, drop)
|
|
20
|
+
- `ink-spinner` loading indicator during network fetches
|
|
21
|
+
- `semver` + `find-versions` for robust version parsing
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Upgraded to `ink-select-input@5` and `ink-text-input@5` for Ink 4 compatibility
|
|
26
|
+
- Changelog source can be `local` (repo file) or `package` (remote npm/GitHub)
|
|
27
|
+
- Footer keyboard hints now include PageUp/PageDown for content scrolling
|
|
28
|
+
- esbuild now compiles `.js` files as JSX (`loader: { '.js': 'jsx' }`)
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- Corrected import paths in all component files (`../../src/git.js` → `../git.js`)
|
|
33
|
+
- Removed duplicate shebang line from bundled output
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## [1.0.0] - 2026-03-14
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- Initial release of **git-cvnty** — a modern, sleek CLI git management tool
|
|
42
|
+
- Built with [Ink 4](https://github.com/vadimdemedes/ink) (React 18 + ESM)
|
|
43
|
+
- Gradient ASCII logo header using `ink-big-text` + `ink-gradient`
|
|
44
|
+
- Live status panel (unstaged / staged changes) with color-coded file flags
|
|
45
|
+
- Commit graph panel (`git log --all --graph`) using `ink-big-text`
|
|
46
|
+
- Action menu with horizontal navigation:
|
|
47
|
+
- Stage Changes (individual or all files)
|
|
48
|
+
- Commit Changes
|
|
49
|
+
- Push / Pull
|
|
50
|
+
- Checkout / Create Branch
|
|
51
|
+
- Delete Branch
|
|
52
|
+
- Cyan + magenta theme with round border styling
|
|
53
|
+
- Keyboard hint footer (Tab, ↑↓, Enter, Esc, Ctrl+C)
|
|
54
|
+
- `src/theme.js` for centralized style configuration
|
|
55
|
+
- `src/git.js` with typed git utility functions (status, branch, graph, push, pull, commit, stash, diff)
|
|
56
|
+
- `build.js` esbuild bundler with JSX transpilation
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Val Alexander
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# git-cvnty
|
|
2
|
+
|
|
3
|
+
A **modern, sleek CLI git management tool** — a complete reimagining of [GitGud](https://github.com/GitGud-org/GitGud) built with [Ink 4](https://github.com/vadimdemedes/ink) (React 18 + ESM), a built-in Changelog Viewer inspired by [changelog-view](https://github.com/jdeniau/changelog-view), and a polished cyan/magenta terminal aesthetic.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
█▀▀ █ ▀█▀ ▄▄ █▀▀ █ █ █▄ █ ▀█▀
|
|
7
|
+
█▄█ █ █ █▄▄ ▀▄▀ █ ▀█ █
|
|
8
|
+
|
|
9
|
+
⎇ Branch: main
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- **Status Panels** — color-coded unstaged / staged file changes (`●` modified · `✚` added · `✖` deleted · `»` renamed)
|
|
17
|
+
- **Commit Graph** — live `git log --all --graph` visualization
|
|
18
|
+
- **Stage Changes** — toggle individual files or all at once
|
|
19
|
+
- **Commit** — enter a commit message inline without quoting
|
|
20
|
+
- **Push / Pull** — push or pull the current branch with one keypress
|
|
21
|
+
- **Checkout / Create Branch** — switch to existing branch or create a new one
|
|
22
|
+
- **Delete Branch** — force-delete a local branch with safety confirmation
|
|
23
|
+
- **Stash Manager** — push (with optional message), pop, and drop stashes
|
|
24
|
+
- **📋 Changelog Viewer** — browse changelogs right in your terminal:
|
|
25
|
+
- **Local** — reads `CHANGELOG.md` / `HISTORY.md` from your repo root, parses Keep-a-Changelog format into per-version sections
|
|
26
|
+
- **Remote** — fetch changelogs for npm packages or GitHub repos (e.g. `react`, `react@18.0.0`, `facebook/react`)
|
|
27
|
+
- Tabbed version sidebar (left) + scrollable markdown content (right)
|
|
28
|
+
- Terminal markdown rendering: headings, bullets, code spans, separators
|
|
29
|
+
- Loading spinner for network fetches
|
|
30
|
+
- **Keyboard-first navigation** — Tab · ↑↓ · Enter · Esc · PageUp/PageDown
|
|
31
|
+
- **Configurable theme** — edit `src/theme.js` to change colors, border style, logo visibility
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Requirements
|
|
36
|
+
|
|
37
|
+
- **Node.js ≥ 18**
|
|
38
|
+
- **Git ≥ 2.23** (for `git restore --staged` support)
|
|
39
|
+
- npm ≥ 7
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npm install --global git-cvnty
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or run without installing:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx git-cvnty
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Usage
|
|
58
|
+
|
|
59
|
+
Navigate to any directory that contains a `.git` folder and run:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
git-cvnty
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Options
|
|
66
|
+
|
|
67
|
+
| Flag | Description |
|
|
68
|
+
|------|-------------|
|
|
69
|
+
| `--no-logo` | Hide the ASCII logo at startup |
|
|
70
|
+
|
|
71
|
+
### Navigation
|
|
72
|
+
|
|
73
|
+
| Key | Action |
|
|
74
|
+
|-----|--------|
|
|
75
|
+
| `↑` / `↓` | Move between menu items |
|
|
76
|
+
| `Enter` | Select / confirm |
|
|
77
|
+
| `Esc` | Go back to main menu |
|
|
78
|
+
| `Ctrl+C` | Quit |
|
|
79
|
+
|
|
80
|
+
### Changelog Viewer — additional keys
|
|
81
|
+
|
|
82
|
+
| Key | Action |
|
|
83
|
+
|-----|--------|
|
|
84
|
+
| `Tab` or `Shift+↑↓` | Switch between version entries |
|
|
85
|
+
| `↑` / `↓` | Scroll changelog content |
|
|
86
|
+
| `PageUp` / `PageDown` | Fast-scroll content |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Changelog Viewer
|
|
91
|
+
|
|
92
|
+
The **View Changelog** action provides two modes:
|
|
93
|
+
|
|
94
|
+
### 1. Local CHANGELOG.md
|
|
95
|
+
|
|
96
|
+
Reads the first changelog file found in your git repo root:
|
|
97
|
+
|
|
98
|
+
> `CHANGELOG.md` · `HISTORY.md` · `CHANGES.md` · `ChangeLog.md` · …
|
|
99
|
+
|
|
100
|
+
Parses any [Keep a Changelog](https://keepachangelog.com/) format:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## [1.2.0] - 2024-03-01
|
|
104
|
+
### Added
|
|
105
|
+
- New feature
|
|
106
|
+
|
|
107
|
+
## [1.1.0] - 2024-01-15
|
|
108
|
+
### Fixed
|
|
109
|
+
- Bug fix
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 2. Remote package / GitHub repo
|
|
113
|
+
|
|
114
|
+
Enter a query string in any of these formats:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
react # auto-detects version from node_modules
|
|
118
|
+
react@18.0.0 # shows changes since 18.0.0
|
|
119
|
+
facebook/react # GitHub owner/repo
|
|
120
|
+
facebook/react@18.0.0 # GitHub repo + filter version
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
git-cvnty checks `CHANGELOG.md`, `HISTORY.md`, and GitHub Releases in order, then renders the changelog in your terminal with filtered versions.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Building from source
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
git clone https://github.com/BunsDev/git-cvnty
|
|
131
|
+
cd git-cvnty
|
|
132
|
+
npm install
|
|
133
|
+
npm run build # compiles src/ → dist/ with esbuild
|
|
134
|
+
node dist/cli.js
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
To watch for changes during development:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npm run dev
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Customization
|
|
146
|
+
|
|
147
|
+
Edit `src/theme.js` to change the look and feel:
|
|
148
|
+
|
|
149
|
+
```js
|
|
150
|
+
const theme = {
|
|
151
|
+
accent: 'cyan', // border/heading color
|
|
152
|
+
highlight: 'magenta', // secondary accent
|
|
153
|
+
staged: 'green', // staged file indicator
|
|
154
|
+
unstaged: 'yellow', // unstaged file indicator
|
|
155
|
+
border: 'round', // 'single' | 'double' | 'round' | 'bold'
|
|
156
|
+
showLogo: true, // show/hide the ASCII header
|
|
157
|
+
};
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Project Structure
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
git-cvnty/
|
|
166
|
+
├── cli.js # Entry point (ESM, JSX via esbuild)
|
|
167
|
+
├── build.js # esbuild bundler config
|
|
168
|
+
├── CHANGELOG.md # This project's changelog
|
|
169
|
+
├── src/
|
|
170
|
+
│ ├── app.js # Main app component + action router + horizontal action menu
|
|
171
|
+
│ ├── git.js # All git operations (status, commit, push, …)
|
|
172
|
+
│ ├── changelog.js # Changelog parsing + GitHub/npm fetching
|
|
173
|
+
│ ├── theme.js # Centralized color/style config
|
|
174
|
+
│ └── components/
|
|
175
|
+
│ ├── Header.js # Logo + current branch display
|
|
176
|
+
│ ├── StatusPanel.js # Unstaged/staged file panels
|
|
177
|
+
│ ├── BranchPanel.js # git log --graph visualization
|
|
178
|
+
│ ├── Footer.js # Keyboard hint bar
|
|
179
|
+
│ ├── CommitDialog.js # Commit message prompt
|
|
180
|
+
│ ├── CheckoutDialog.js # Branch checkout/create
|
|
181
|
+
│ ├── DeleteDialog.js # Branch deletion
|
|
182
|
+
│ ├── StageDialog.js # File staging toggle
|
|
183
|
+
│ ├── StashDialog.js # Stash push/pop/drop
|
|
184
|
+
│ ├── PushPullStatus.js # Push/pull result banner
|
|
185
|
+
│ └── ChangelogDialog.js# Tabbed changelog viewer ← inspired by changelog-view
|
|
186
|
+
└── dist/
|
|
187
|
+
└── cli.js # Compiled output (auto-generated by npm run build)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Credits
|
|
193
|
+
|
|
194
|
+
- Inspired by [GitGud](https://github.com/GitGud-org/GitGud) by GitGud-org
|
|
195
|
+
- Changelog viewer interface inspired by [changelog-view](https://github.com/jdeniau/changelog-view) by Julien Deniau
|
|
196
|
+
- Built with [Ink](https://github.com/vadimdemedes/ink) by Vadim Demedes
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## License
|
|
201
|
+
|
|
202
|
+
MIT
|