gdx 0.3.0 → 0.4.1

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.
Files changed (3) hide show
  1. package/README.md +300 -271
  2. package/dist/index.js +544 -442
  3. package/package.json +79 -74
package/README.md CHANGED
@@ -1,271 +1,300 @@
1
- # gdx (Git Developer Experience)
2
-
3
- **The git CLI wrapper that treats you like a human, not a compiler.**
4
-
5
- ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Status](https://img.shields.io/badge/status-experimental-orange.svg)
6
-
7
- > [!WARNING]
8
- > **⚠️ ALPHA WARNING:** This project is currently in a "trial phase" (i.e., I'm dogfooding it daily). Expect breaking changes, missing features, and the occasional hiccup.
9
-
10
- ---
11
-
12
- ## What is gdx?
13
-
14
- `gdx` is a drop-in wrapper for the Git CLI. It doesn't replace Git; it just makes it less... unpleasant.
15
-
16
- It wraps standard git commands with intelligent shorthands and adds powerful new capabilities that Git is missing like safety rails for destructive actions (undoable `reset --hard`), introduces new workflows for parallel editing and local analytics.
17
-
18
- **Why gdx?**
19
-
20
- - **👍 Convenience:** Type less, do more. `git status`? how about `gdx s`?, `git reset HEAD~3`? why not `gdx res ~3`?
21
- - **🛡️ Safety:** `gdx clear` wipes your directory but saves a backup patch. No more "oops" moments.
22
- - **🧠 Logic:** Handles the things Git makes hard, like dropping a range of stashes (`drop 2..6`).
23
- - **📊 Local-First Stats:** Beautiful TrueColor graphs and stats generated from your local history.
24
- - **🤖 AI Integration:** Generate commit messages and roast your history with local or cloud LLMs.
25
-
26
- ## Installation
27
-
28
- <details expanded>
29
- <summary><strong>With NPM</strong></summary>
30
-
31
- ### Default (Recommended)
32
-
33
- Uses the bundled JS version. Works everywhere Node.js 18+ is installed.
34
- This is the easiest way to get started and ensures maximum compatibility.
35
-
36
- ```bash
37
- npm i -g gdx
38
- ```
39
-
40
- ### Prebuilt Binary
41
-
42
- Downloads a precompiled native binary. No runtime dependency on Node/Bun for execution.
43
-
44
- ```bash
45
- GDX_USE_PREBUILT=1 npm i -g gdx # bash / zsh
46
- # or
47
- $env:GDX_USE_PREBUILT='1'; npm i -g gdx # powershell / fish
48
- ```
49
-
50
- ### Build Locally
51
-
52
- Compiles a native binary on your machine during install. Requires [Bun](https://bun.sh) to be installed.
53
-
54
- ```bash
55
- GDX_BUILD_NATIVE=1 npm i -g gdx # bash / zsh
56
- # or
57
- $env:GDX_BUILD_NATIVE='1'; npm i -g gdx # powershell / fish
58
- ```
59
-
60
- > [!NOTE] If your environment sets `ignore-scripts=true`, the installation will succeed but default to the Node.js fallback.
61
- > Run `gdx doctor` to verify your installation status.
62
-
63
- </details>
64
-
65
- <details>
66
- <summary><strong>Download Manually</strong></summary>
67
-
68
- Prebuilt stand-alone binaries are available on the [Releases](https://github.com/Type-Delta/gdx/releases/download) page.
69
-
70
- </details>
71
-
72
- <details>
73
- <summary><strong>Build it yourself</strong></summary>
74
-
75
- Requires [Bun](https://bun.sh) to be installed.
76
-
77
- ```bash
78
- git clone https://github.com/Type-Delta/gdx.git --depth 1
79
- cd gdx
80
- bun install
81
- bun run build
82
- ```
83
-
84
- Your compiled binary will be in `./dist/` folder.
85
-
86
- </details>
87
-
88
- ### Optional: Shell Integration
89
-
90
- To enable features like `gdx parallel switch` (auto-cd into worktrees) and **tab completion**, you need to add shell integration.
91
-
92
- Shell integration provides:
93
-
94
- - **Auto-cd support**: Allows `gdx parallel switch` to change directories
95
- - **Tab completion**: Intelligent completion for gdx commands, shorthands, and git subcommands
96
- - **Git fallback**: Falls back to native git completion when gdx has no suggestions (git fallback requires you to install git's completion scripts separately)
97
-
98
- To add shell integration, add the following line to the **End** of your shell profile (`~/.bashrc`, `~/.zshrc`, etc.):
99
-
100
- #### For bash and zsh:
101
-
102
- ```bash
103
- eval "$(gdx --init bash)" # for bash
104
- eval "$(gdx --init zsh)" # for zsh
105
- ```
106
-
107
- #### For fish:
108
-
109
- ```fish
110
- gdx --init fish | source
111
- ```
112
-
113
- #### For PowerShell:
114
-
115
- To find your profile path, run `$PROFILE` in PowerShell.
116
-
117
- ```powershell
118
- Invoke-Expression (& { (gdx --init pwsh | Out-String) })
119
- ```
120
-
121
- > [!TIP]
122
- > You can add `--cmd` to the `gdx --init` command to create custom aliases.
123
- > For example, `gdx --init zsh --cmd g` will create `g` as an alias for `gdx`.
124
-
125
- ## Core Features
126
-
127
- ### 1. Intelligent Shorthands
128
-
129
- `gdx` isn't just a list of static aliases. It understands partial commands and expands them smartly.
130
-
131
- ```bash
132
- gdx s # -> git status
133
- gdx lg # -> git log --oneline --graph --all --decorate
134
- gdx lg export # -> Exports git log to a markdown file
135
- gdx pl -au # -> git pull --allow-unrelated-histories
136
- gdx ps -fl # -> git push --force-with-lease
137
- gdx reset ~2 # -> git reset HEAD~2
138
- ```
139
-
140
- > [!NOTE]
141
- > This wrapper forwards unrecognized commands directly to `git`, so you can use it as a full git replacement.
142
- >
143
- > If GDX still gets in your way, just run `gdx --bypass <git-commands>` to skip gdx intervention altogether.
144
-
145
- ### 2. Smart Linting
146
-
147
- Catch issues before they reach the remote. `gdx lint` checks for:
148
-
149
- - Spelling errors in commit messages
150
- - Conflict markers left in code
151
- - Sensitive content (keys, tokens)
152
- - Large files
153
-
154
- You can configure `gdx` to run this automatically before every push.
155
-
156
- ### 3. The Safety Net: `clear` vs `reset`
157
-
158
- We've all accidentally reset files we meant to keep. `gdx clear` is the solution.
159
-
160
- - **`gdx clear`**: Creates a timestamped patch backup in a temp folder, then effectively runs `reset --hard` & `clean -fd`.
161
- - **`gdx clear pardon`**: "Wait, I didn't mean to do that." Applies the backup patch and restores your changes.
162
-
163
- ### 4. Parallel Worktrees (Experimental)
164
-
165
- Need to work on the **same branch** in multiple isolated environments without checking out new branches?
166
-
167
- ```bash
168
- # Manage forked worktrees for the current branch
169
- gdx parallel fork # Create a new temp-backed fork
170
- gdx parallel list # See where your forks are
171
- gdx parallel switch # Switch between forks (requires shell integration)
172
- gdx parallel open # Open any fork in your default editor
173
- gdx parallel join # Merge changes from a fork back to main
174
- ```
175
-
176
- Additionally, `gdx parallel fork` can auto-initialize submodules and
177
- install dependencies using detected package managers (currently supports npm, pnpm, bun, and uv)
178
- if configured (see `parallel.init` config for options),
179
- getting the fork ready for work in no time.
180
-
181
- ### 5. Advanced Stash Management
182
-
183
- Git stash is great until you need to clean it up.
184
-
185
- ```bash
186
- gdx sta l # git stash list
187
- gdx sta d 2..6 # Drops stashes 2 through 6.
188
- # (Drops high->low to prevent index shifting)
189
- gdx sta d pardon # Restores the last dropped stash.
190
- ```
191
-
192
- ### 6. AI-Powered Commits
193
-
194
- Struggling to come up with a commit message? Let `gdx` do it for you.
195
-
196
- ```bash
197
- gdx commit auto # Generates a commit message based on staged changes, then commits them.
198
- # or
199
- # Generates a commit message based on staged changes, but does not commit them.
200
- # `--copy` also copies the message to clipboard.
201
- gdx commit auto --no-commit --copy
202
- # You can also configure which LLM to use with `gdx-config`
203
- ```
204
-
205
- ### 7. Fun & Analytics
206
-
207
- Tools to help you feel productive without leaving the terminal.
208
-
209
- - **`gdx stats`**: Shows fun contribution statistics and metrics for your current repo.
210
- - **`gdx graph`**: Renders a GitHub-style contribution heatmap in your terminal using TrueColor.
211
- - **`gdx nocap`**: Uses AI to roast your latest commit message.
212
-
213
- ## Command Reference
214
-
215
- | Command | Expansion / Function |
216
- | :----------- | :----------------------------------------------------------------- |
217
- | `s`, `stat` | `git status` (use `-r` recursively run "status" on all submodules) |
218
- | `lg`, `lo` | `git log --oneline --graph --all --decorate` |
219
- | `sw`, `swit` | `git switch` |
220
- | `br`, `bra` | `git branch` |
221
- | `cmi`, `com` | `git commit` (Try `gdx cmi auto` for AI messages!) |
222
- | `res` | `git reset` (supports `res ~3`, `res -h` expansion) |
223
- | `sta`, `st` | `git stash` |
224
- | `lint` | Run pre-push checks (spelling, secrets, etc.) |
225
- | `gdx-config` | Manage gdx configuration |
226
-
227
- _Run `gdx ghelp` to see the full list of expansions._
228
-
229
- ## Development
230
-
231
- This project uses **Bun** for development because it's fast and the developer experience is great.
232
-
233
- 1. Clone the repo
234
- 2. Prepare the development environment:
235
- ```bash
236
- bun run prepare-dev
237
- ```
238
- 3. Run in dev mode:
239
-
240
- ```bash
241
- bun start -- # your gdx commands here
242
-
243
- # for example:
244
- bun start -- s # runs `gdx s` (git status)
245
- ```
246
-
247
- ## Roadmap
248
-
249
- Since this is currently a solo "scratch your own itch" project, the roadmap is fluid, but here is what is on the horizon:
250
-
251
- - [x] **Configurability:** Allow users to define their own shorthands in a `.gdxrc.toml` file (default: `~/.gdx/.gdxrc.toml`).
252
- - [x] **Shell Integration:** Auto-completion scripts for Zsh/Bash/Fish/Powershell with git fallback.
253
- - [x] **Quick linting before push:** `gdx lint` to run following checks before pushing:
254
- - commit message spelling
255
- - env or sensitive content scanning
256
- - conflict markers
257
- - abnormal file sizes
258
- with an option to automatically run lint before every push (bypass with `gdx push --no-lint`)
259
- - [x] **Undoable stash drop**
260
- - [x] **Parallel worktree switching** `gdx parallel switch` Jump between forks (auto-cd) (requires shell integration with `gdx --init`)
261
- - [ ] **Seamless Integration with fzf and cloc**
262
- automatically detect and use fzf and/or cloc if installed for:
263
- - Interactive fuzzy search for branches, commits, stash, log and files instead of `less`
264
- - Code line statistics in `gdx stats` using `cloc`
265
- - [x] **gdx clear Untracked files support**: `gdx clear` now automatically backs up untracked files in the patch.
266
- - [ ] **gdx migrate**: move dirty changes to another branch/worktree without committing.
267
- - [x] **Recursive status for submodules** with `gdx status --recursive` or `gdx s -r`
268
-
269
- ## License
270
-
271
- MIT © Type-Delta
1
+ # gdx (Git Developer Experience)
2
+
3
+ **The git CLI wrapper that treats you like a human, not a compiler.**
4
+
5
+ ![License](https://img.shields.io/badge/license-MIT-blue.svg) ![Status](https://img.shields.io/badge/status-experimental-orange.svg)
6
+
7
+ > [!WARNING]
8
+ > **⚠️ ALPHA WARNING:** This project is currently in a "trial phase" (i.e., I'm dogfooding it daily). Expect breaking changes, missing features, and the occasional hiccup.
9
+
10
+ ---
11
+
12
+ ## What is gdx?
13
+
14
+ `gdx` is a drop-in wrapper for the Git CLI. It doesn't replace Git; it just makes it less... unpleasant.
15
+
16
+ It wraps standard git commands with intelligent shorthands and adds powerful new capabilities that Git is missing like safety rails for destructive actions (undoable `reset --hard`), introduces new workflows for parallel editing and local analytics.
17
+
18
+ **Why gdx?**
19
+
20
+ - **👍 Convenience:** Type less, do more. `git status`? how about `gdx s`?, `git reset HEAD~3`? why not `gdx res ~3`?
21
+ - **🛡️ Safety:** `gdx clear` wipes your directory but saves a backup patch. No more "oops" moments.
22
+ - **🧠 Logic:** Handles the things Git makes hard, like dropping a range of stashes (`drop 2..6`).
23
+ - **📊 Local-First Stats:** Beautiful TrueColor graphs and stats generated from your local history.
24
+ - **🤖 AI Integration:** Generate commit messages and roast your history with local or cloud LLMs.
25
+
26
+ ## Installation
27
+
28
+ <details expanded>
29
+ <summary><strong>With NPM</strong></summary>
30
+
31
+ ### Default (Recommended)
32
+
33
+ Uses the bundled JS version. Works everywhere Node.js 18+ is installed.
34
+ This is the easiest way to get started and ensures maximum compatibility.
35
+
36
+ ```bash
37
+ npm i -g gdx
38
+ ```
39
+
40
+ ### Prebuilt Binary
41
+
42
+ Downloads a precompiled native binary. No runtime dependency on Node/Bun for execution.
43
+
44
+ ```bash
45
+ GDX_USE_PREBUILT=1 npm i -g gdx # bash / zsh
46
+ # or
47
+ $env:GDX_USE_PREBUILT='1'; npm i -g gdx # powershell / fish
48
+ ```
49
+
50
+ ### Build Locally
51
+
52
+ Compiles a native binary on your machine during install. Requires [Bun](https://bun.sh) to be installed.
53
+
54
+ ```bash
55
+ GDX_BUILD_NATIVE=1 npm i -g gdx # bash / zsh
56
+ # or
57
+ $env:GDX_BUILD_NATIVE='1'; npm i -g gdx # powershell / fish
58
+ ```
59
+
60
+ > [!NOTE] If your environment sets `ignore-scripts=true`, the installation will succeed but default to the Node.js fallback.
61
+ > Run `gdx doctor` to verify your installation status.
62
+
63
+ </details>
64
+
65
+ <details>
66
+ <summary><strong>Download Manually</strong></summary>
67
+
68
+ Prebuilt stand-alone binaries are available on the [Releases](https://github.com/Type-Delta/gdx/releases/download) page.
69
+
70
+ </details>
71
+
72
+ <details>
73
+ <summary><strong>Build it yourself</strong></summary>
74
+
75
+ Requires [Bun](https://bun.sh) to be installed.
76
+
77
+ ```bash
78
+ git clone https://github.com/Type-Delta/gdx.git --depth 1
79
+ cd gdx
80
+ bun install
81
+ bun run build
82
+ ```
83
+
84
+ Your compiled binary will be in `./dist/` folder.
85
+
86
+ </details>
87
+
88
+ ### Optional: Shell Integration
89
+
90
+ To enable features like `gdx parallel switch` (auto-cd into worktrees) and **tab completion**, you need to add shell integration.
91
+
92
+ Shell integration provides:
93
+
94
+ - **Auto-cd support**: Allows `gdx parallel switch` to change directories
95
+ - **Tab completion**: Intelligent completion for gdx commands, shorthands, and git subcommands
96
+ - **Git fallback**: Falls back to native git completion when gdx has no suggestions (git fallback requires you to install git's completion scripts separately)
97
+
98
+ To add shell integration, add the following line to the **End** of your shell profile (`~/.bashrc`, `~/.zshrc`, etc.):
99
+
100
+ #### For bash and zsh:
101
+
102
+ ```bash
103
+ eval "$(gdx --init bash)" # for bash
104
+ eval "$(gdx --init zsh)" # for zsh
105
+ ```
106
+
107
+ #### For fish:
108
+
109
+ ```fish
110
+ gdx --init fish | source
111
+ ```
112
+
113
+ #### For PowerShell:
114
+
115
+ To find your profile path, run `$PROFILE` in PowerShell.
116
+
117
+ ```powershell
118
+ Invoke-Expression (& { (gdx --init pwsh | Out-String) })
119
+ ```
120
+
121
+ > [!TIP]
122
+ > You can add `--cmd` to the `gdx --init` command to create custom aliases.
123
+ > For example, `gdx --init zsh --cmd g` will create `g` as an alias for `gdx`.
124
+
125
+ ## Core Features
126
+
127
+ ### 1. Intelligent Shorthands
128
+
129
+ `gdx` isn't just a list of static aliases. It understands partial commands and expands them smartly.
130
+
131
+ ```bash
132
+ gdx s # -> git status
133
+ gdx lg # -> git log --oneline --graph --all --decorate
134
+ gdx lg export # -> Exports git log to a markdown file
135
+ gdx pl -au # -> git pull --allow-unrelated-histories
136
+ gdx ps -fl # -> git push --force-with-lease
137
+ gdx reset ~2 # -> git reset HEAD~2
138
+ ```
139
+
140
+ > [!NOTE]
141
+ > This wrapper forwards unrecognized commands directly to `git`, so you can use it as a full git replacement.
142
+ >
143
+ > If GDX still gets in your way, just run `gdx --bypass <git-commands>` to skip gdx intervention altogether.
144
+
145
+ ### 2. Smart Linting
146
+
147
+ Catch issues before they reach the remote. `gdx lint` checks for:
148
+
149
+ - Spelling errors in commit messages
150
+ - Conflict markers left in code
151
+ - Sensitive content (keys, tokens)
152
+ - Large files
153
+
154
+ You can configure `gdx` to run this automatically before every push.
155
+
156
+ ### 3. The Safety Net: `clear` vs `reset`
157
+
158
+ We've all accidentally reset files we meant to keep. `gdx clear` is the solution.
159
+
160
+ - **`gdx clear`**: Creates a timestamped patch backup in a temp folder, then effectively runs `reset --hard` & `clean -fd`.
161
+ - **`gdx clear pardon`**: "Wait, I didn't mean to do that." Applies the backup patch and restores your changes.
162
+
163
+ ### 4. Parallel Worktrees (Experimental)
164
+
165
+ Need to work on the **same branch** in multiple isolated environments without checking out new branches?
166
+
167
+ ```bash
168
+ # Manage forked worktrees for the current branch
169
+ gdx parallel fork # Create a new temp-backed fork
170
+ gdx parallel list # See where your forks are
171
+ gdx parallel switch # Switch between forks (requires shell integration)
172
+ gdx parallel open # Open any fork in your default editor
173
+ gdx parallel join # Merge changes from a fork back to main
174
+ ```
175
+
176
+ Additionally, `gdx parallel fork` can auto-initialize submodules and
177
+ install dependencies using detected package managers (currently supports npm, pnpm, bun, and uv)
178
+ if configured (see `parallel.init` config for options),
179
+ getting the fork ready for work in no time.
180
+
181
+ ### 5. Git Output for Human (Experimental)
182
+
183
+ Admit it, Git's default output isn't exactly designed for readability.
184
+ `gdx` enhances the output of some commands with better formatting to make it more enjoyable and less "git" to read.
185
+
186
+ Currently, we only support enhanced formatting for `gdx diff` and `gdx show`,
187
+ but more commands will be added in the future. (feel free to request what commands you'd like to see enhanced!)
188
+
189
+ #### Example: `gdx diff`
190
+
191
+ ![diff example](https://github.com/Type-Delta/gdx/raw/main/resources/images/gdx-diff-enhance.png)
192
+
193
+ > [!NOTE]
194
+ > The enhanced output is only enabled when the output is TTY (i.e., in the terminal) plus other conditions based on the command (e.g., `diff` must be run without `--name-only`).
195
+ > If you pipe the output to a file or another command, it will fall back to the standard Git output.
196
+ >
197
+ > If you want to disable the enhanced output altogether, you can set `enhancedOutput` to `false` in the config.
198
+
199
+ ### 6. Advanced Stash Management
200
+
201
+ Git stash is great until you need to clean it up.
202
+
203
+ ```bash
204
+ gdx sta l # git stash list
205
+ gdx sta drop 2..6 # Drops stashes 2 through 6.
206
+ # (Drops high->low to prevent index shifting)
207
+ gdx stash d pardon # Restores the last dropped stash.
208
+ ```
209
+
210
+ ### 7. Commits Message Generation
211
+
212
+ Struggling to come up with a commit message? Let `gdx` do it for you.
213
+
214
+ ```bash
215
+ gdx commit auto # Generates a commit message based on staged changes, then commits them.
216
+ # or
217
+ # Generates a commit message based on staged changes, but does not commit them.
218
+ # `--copy` also copies the message to clipboard.
219
+ gdx cmi auto --no-commit --copy
220
+ # You can also configure which LLM to use with `gdx-config`
221
+ ```
222
+
223
+ ### 8. Fun & Analytics
224
+
225
+ Tools to help you feel productive without leaving the terminal.
226
+
227
+ - **`gdx stats`**: Shows fun contribution statistics and metrics for your current repo.
228
+ - **`gdx graph`**: Renders a GitHub-style contribution heatmap in your terminal using TrueColor.
229
+ - **`gdx nocap`**: Uses AI to roast your latest commit message.
230
+
231
+ #### Example: `gdx stats`
232
+
233
+ ![stats example](https://github.com/Type-Delta/gdx/raw/main/resources/images/gdx-stats.png)
234
+
235
+ ## Command Reference
236
+
237
+ | Command | Expansion / Function |
238
+ | :----------- | :----------------------------------------------------------------- |
239
+ | `s`, `stat` | `git status` (use `-r` recursively run "status" on all submodules) |
240
+ | `lg`, `lo` | `git log --oneline --graph --all --decorate` |
241
+ | `sw`, `swit` | `git switch` |
242
+ | `br`, `bra` | `git branch` |
243
+ | `cmi`, `com` | `git commit` (Try `gdx cmi auto` for AI messages!) |
244
+ | `res` | `git reset` (supports `res ~3`, `res -h` expansion) |
245
+ | `dif` | `git diff` (supports `dif ~3`, `dif origin ~2` expansion) |
246
+ | `sho` | `git show` (supports `sho ~3`, `sho origin ~2` expansion) |
247
+ | `sta`, `st` | `git stash` |
248
+ | `lint` | Run pre-push checks (spelling, secrets, etc.) |
249
+ | `gdx-config` | Manage gdx configuration |
250
+
251
+ _Run `gdx ghelp` to see the full list of expansions._
252
+
253
+ ## Development
254
+
255
+ This project uses **Bun** for development because it's fast and the developer experience is great.
256
+
257
+ 1. Clone the repo
258
+ 2. Prepare the development environment:
259
+ ```bash
260
+ bun run prepare-dev
261
+ ```
262
+ 3. Run in dev mode:
263
+
264
+ ```bash
265
+ bun start -- # your gdx commands here
266
+
267
+ # for example:
268
+ bun start -- s # runs `gdx s` (git status)
269
+ ```
270
+
271
+ ## Roadmap
272
+
273
+ Since this is currently a solo "scratch your own itch" project, the roadmap is fluid, but here is what is on the horizon:
274
+
275
+ - [x] **Configurability:** Allow users to define their own shorthands in a `.gdxrc.toml` file (default: `~/.gdx/.gdxrc.toml`).
276
+ - [x] **Shell Integration:** Auto-completion scripts for Zsh/Bash/Fish/Powershell with git fallback.
277
+ - [x] **Quick linting before push:** `gdx lint` to run following checks before pushing:
278
+ - commit message spelling
279
+ - env or sensitive content scanning
280
+ - conflict markers
281
+ - abnormal file sizes
282
+ with an option to automatically run lint before every push (bypass with `gdx push --no-lint`)
283
+ - [x] **Undoable stash drop**
284
+ - [x] **Parallel worktree switching** `gdx parallel switch` Jump between forks (auto-cd) (requires shell integration with `gdx --init`)
285
+ - [ ] **Seamless Integration with fzf and cloc**
286
+ automatically detect and use fzf and/or cloc if installed for:
287
+ - Interactive fuzzy search for branches, commits, stash, log and files instead of `less`
288
+ - Code line statistics in `gdx stats` using `cloc`
289
+ - [x] **gdx clear Untracked files support**: `gdx clear` now automatically backs up untracked files in the patch.
290
+ - [x] **Recursive status for submodules** with `gdx status --recursive` or `gdx s -r`
291
+ - [x] **Submodule dir switching**: extension of `git submodule`, `gdx submodule switch` to jump into a submodule's directory from the parent repo (requires shell integration)
292
+ - [ ] **Snapshot**: `gdx snap` to create snapshot of current state of your working directory (including uncommitted changes, untracked files) that can be easily switched back to later (similar to a lightweight, temporary branch that doesn't clutter your branch list)
293
+ - [ ] **Enhanced output for more commands**: Extend the "Git Output for Humans"
294
+ - [ ] **Undo and Redo**: `gdx undo` and `gdx redo` to step backward and forward through git actions (reset, commit, stash, etc.) with safety nets.
295
+ - [ ] **Edit commit history**: `gdx hist` for an intuitive interface to amend, reorder, squash commits without needing to remember complex rebase commands.
296
+ - [x] **Edit commit messages**: `gdx reword` to quickly reword the last commit message or a specific commit without needing to do an interactive rebase.
297
+
298
+ ## License
299
+
300
+ MIT © Type-Delta