octotui 0.1.7__tar.gz
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.
Potentially problematic release.
This version of octotui might be problematic. Click here for more details.
- octotui-0.1.7/.gitignore +22 -0
- octotui-0.1.7/PKG-INFO +207 -0
- octotui-0.1.7/README.md +180 -0
- octotui-0.1.7/octotui/__init__.py +1 -0
- octotui-0.1.7/octotui/__main__.py +6 -0
- octotui-0.1.7/octotui/commit_graph.py +698 -0
- octotui-0.1.7/octotui/custom_figlet_widget.py +0 -0
- octotui-0.1.7/octotui/diff_markdown.py +187 -0
- octotui-0.1.7/octotui/gac_config_modal.py +369 -0
- octotui-0.1.7/octotui/gac_integration.py +183 -0
- octotui-0.1.7/octotui/gac_provider_registry.py +199 -0
- octotui-0.1.7/octotui/git_diff_viewer.py +1451 -0
- octotui-0.1.7/octotui/git_status_sidebar.py +1010 -0
- octotui-0.1.7/octotui/graph_actions.py +426 -0
- octotui-0.1.7/octotui/graph_data.py +248 -0
- octotui-0.1.7/octotui/graph_layout.py +275 -0
- octotui-0.1.7/octotui/main.py +15 -0
- octotui-0.1.7/octotui/octotui_logo.py +52 -0
- octotui-0.1.7/octotui/style.tcss +431 -0
- octotui-0.1.7/octotui/syntax_utils.py +0 -0
- octotui-0.1.7/pyproject.toml +52 -0
octotui-0.1.7/.gitignore
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv
|
|
11
|
+
|
|
12
|
+
.coverage
|
|
13
|
+
|
|
14
|
+
# Session memory
|
|
15
|
+
.puppy_session_memory.json
|
|
16
|
+
|
|
17
|
+
# Pytest cache
|
|
18
|
+
.pytest_cache/
|
|
19
|
+
|
|
20
|
+
dummy_path
|
|
21
|
+
|
|
22
|
+
.idea/
|
octotui-0.1.7/PKG-INFO
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: octotui
|
|
3
|
+
Version: 0.1.7
|
|
4
|
+
Summary: A blazing-fast TUI replacement for GitKraken - manage your Git repos with style!
|
|
5
|
+
Project-URL: Repository, https://github.com/never-use-gui/octotui
|
|
6
|
+
Project-URL: Homepage, https://github.com/never-use-gui/octotui
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/never-use-gui/octotui/issues
|
|
8
|
+
Author-email: Michael Pfaffenberger <michael@pfaffenberger.dev>
|
|
9
|
+
License: MIT
|
|
10
|
+
Keywords: git,gitkraken,terminal,textual,tui,version-control
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
20
|
+
Classifier: Topic :: Terminals
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Requires-Dist: gac>=2.7.3
|
|
23
|
+
Requires-Dist: gitpython>=3.1.42
|
|
24
|
+
Requires-Dist: pyfiglet>=1.0.2
|
|
25
|
+
Requires-Dist: textual>=6.1.0
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
<div align="center">
|
|
29
|
+
|
|
30
|
+
<img src="cute-octo.png" alt="OctoTUI Logo" width="300">
|
|
31
|
+
|
|
32
|
+
# 🐙 OctoTUI
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
[](https://pypi.org/project/octotui/)
|
|
36
|
+
[](https://pypi.org/project/octotui/)
|
|
37
|
+
[](https://opensource.org/licenses/MIT)
|
|
38
|
+
[](https://github.com/astral-sh/ruff)
|
|
39
|
+
[](http://makeapullrequest.com)
|
|
40
|
+
|
|
41
|
+
**A Textual TUI For GitKraken Lovers**
|
|
42
|
+
|
|
43
|
+
[Installation](#-installation) • [AI Commits](#-ai-powered-commits) • [Keybindings](#️-keybindings)
|
|
44
|
+
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🚀 OctoTUI
|
|
50
|
+

|
|
51
|
+
> **We love GitKraken so much, we wanted to bring that beautiful experience to the terminal!**
|
|
52
|
+
|
|
53
|
+
GitKraken is amazing - it's gorgeous, intuitive, and makes Git feel approachable. But as terminal enthusiasts, we found ourselves constantly context-switching between our editor and GitKraken. We wanted that same delightful experience without ever leaving the command line.
|
|
54
|
+
|
|
55
|
+
**OctoTUI is our love letter to both GitKraken and the terminal.**
|
|
56
|
+
|
|
57
|
+
### 💙 What We Kept from GitKraken
|
|
58
|
+
- ✅ Beautiful, intuitive visual diffs
|
|
59
|
+
- ✅ Hunk-level staging control
|
|
60
|
+
- ✅ Branch visualization and management
|
|
61
|
+
- ✅ Commit history browsing
|
|
62
|
+
|
|
63
|
+
### 🎯 What We Added for Terminal Lovers
|
|
64
|
+
- 🤖 AI-powered commit messages (via GAC)
|
|
65
|
+
- 🆓 100% free and open source
|
|
66
|
+
- 🏠 Never leave your terminal flow
|
|
67
|
+
|
|
68
|
+
## 📦 Installation
|
|
69
|
+
|
|
70
|
+
### Quick Start (Recommended)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Using uvx (isolated, recommended)
|
|
74
|
+
uvx octotui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### From Source (For Contributors)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git clone https://github.com/never-use-gui/octotui.git
|
|
81
|
+
cd octotui
|
|
82
|
+
uv run octotui
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### System Requirements
|
|
86
|
+
|
|
87
|
+
- 🐍 Python 3.11+
|
|
88
|
+
- 🔧 Git
|
|
89
|
+
- 💻 Any terminal with 256+ colors
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
### First-Time Workflow
|
|
93
|
+
|
|
94
|
+
1. **Review Changes**: See your diffs in beautiful color
|
|
95
|
+
2. **Stage Hunks**: Click or use `s` to stage individual changes
|
|
96
|
+
3. **Generate Commit**: Press `g` for AI-powered message (optional)
|
|
97
|
+
4. **Commit**: Press `c` to commit with your message
|
|
98
|
+
5. **Push**: Press `p` to push to remote
|
|
99
|
+
|
|
100
|
+
**Pro tip**: Press `h` anytime to see all available keybindings! 🚀
|
|
101
|
+
|
|
102
|
+
## 🤖 AI-Powered Commits
|
|
103
|
+
|
|
104
|
+
### Setup (Optional but Awesome)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Install GAC (Git Auto Commit)
|
|
108
|
+
uv pip install 'gac>=0.18.0'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Configuration
|
|
112
|
+
|
|
113
|
+
1. Press `Ctrl+G` in OctoTUI
|
|
114
|
+
2. Choose your provider (we recommend **Cerebras** for free tier)
|
|
115
|
+
3. Select your model
|
|
116
|
+
4. Paste your API key
|
|
117
|
+
5. Save & enjoy AI commit messages!
|
|
118
|
+
|
|
119
|
+
## ⌨️ Keybindings
|
|
120
|
+
|
|
121
|
+
### 📁 Navigation
|
|
122
|
+
| Key | Action |
|
|
123
|
+
|-----|--------|
|
|
124
|
+
| `↑/↓` | Navigate files/hunks |
|
|
125
|
+
| `Enter` | Select file |
|
|
126
|
+
| `Tab` / `Shift+Tab` | Cycle through UI elements |
|
|
127
|
+
| `1` / `Ctrl+1` | Switch to Unstaged tab |
|
|
128
|
+
| `2` / `Ctrl+2` | Switch to Staged tab |
|
|
129
|
+
|
|
130
|
+
### 🔄 Git Operations
|
|
131
|
+
| Key | Action |
|
|
132
|
+
|-----|--------|
|
|
133
|
+
| `s` | Stage selected file |
|
|
134
|
+
| `u` | Unstage selected file |
|
|
135
|
+
| `a` | Stage ALL unstaged changes |
|
|
136
|
+
| `x` | Unstage ALL staged changes |
|
|
137
|
+
| `c` | Commit staged changes |
|
|
138
|
+
|
|
139
|
+
### 🌿 Branch & Remote
|
|
140
|
+
| Key | Action |
|
|
141
|
+
|-----|--------|
|
|
142
|
+
| `b` | Switch branch |
|
|
143
|
+
| `r` | Refresh status |
|
|
144
|
+
| `p` | Push to remote |
|
|
145
|
+
| `o` | Pull from remote |
|
|
146
|
+
|
|
147
|
+
### 🤖 AI Features
|
|
148
|
+
| Key | Action |
|
|
149
|
+
|-----|--------|
|
|
150
|
+
| `g` | Generate AI commit message |
|
|
151
|
+
| `Ctrl+G` | Configure GAC settings |
|
|
152
|
+
|
|
153
|
+
### ⚙️ Application
|
|
154
|
+
| Key | Action |
|
|
155
|
+
|-----|--------|
|
|
156
|
+
| `h` | Show help modal |
|
|
157
|
+
| `q` | Quit application |
|
|
158
|
+
| `Ctrl+D` | Toggle dark mode |
|
|
159
|
+
|
|
160
|
+
## 🎨 Git Status Colors
|
|
161
|
+
|
|
162
|
+
| Color | Meaning |
|
|
163
|
+
|-------|----------|
|
|
164
|
+
| 🟢 **Green** | Staged files (ready to commit) |
|
|
165
|
+
| 🟡 **Yellow** | Modified files (unstaged) |
|
|
166
|
+
| 🔵 **Blue** | Directories |
|
|
167
|
+
| 🟣 **Purple** | Untracked files |
|
|
168
|
+
| 🔴 **Red** | Deleted files |
|
|
169
|
+
|
|
170
|
+
### Code Quality Standards
|
|
171
|
+
|
|
172
|
+
- ✅ Follow the Zen of Python
|
|
173
|
+
- ✅ DRY (Don't Repeat Yourself)
|
|
174
|
+
- ✅ YAGNI (You Aren't Gonna Need It)
|
|
175
|
+
- ✅ SOLID principles
|
|
176
|
+
- ✅ Keep files under 600 lines
|
|
177
|
+
- ✅ Write tests for new features
|
|
178
|
+
- ✅ Pass `ruff check` with zero errors
|
|
179
|
+
|
|
180
|
+
## 📚 Tech Stack
|
|
181
|
+
|
|
182
|
+
- **[Textual](https://textual.textualize.io/)**: Modern TUI framework
|
|
183
|
+
- **[GitPython](https://gitpython.readthedocs.io/)**: Git operations
|
|
184
|
+
- **[GAC](https://github.com/cellwebb/gac)**: AI commit generation
|
|
185
|
+
- **[Ruff](https://github.com/astral-sh/ruff)**: Lightning-fast Python linter
|
|
186
|
+
|
|
187
|
+
## 📜 License
|
|
188
|
+
|
|
189
|
+
MIT License - see [LICENSE](LICENSE) for details
|
|
190
|
+
|
|
191
|
+
## 🙏 Acknowledgments
|
|
192
|
+
|
|
193
|
+
- Built with ❤️ using [Textual](https://textual.textualize.io/)
|
|
194
|
+
- AI commits powered by [GAC](https://github.com/cellwebb/gac)
|
|
195
|
+
|
|
196
|
+
## 💬 Community
|
|
197
|
+
|
|
198
|
+
- 🐛 **Issues**: [GitHub Issues](https://github.com/never-use-gui/octotui/issues)
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
<div align="center">
|
|
202
|
+
|
|
203
|
+
### 🌟 If you like OctoTUI, give us a star! 🌟
|
|
204
|
+
|
|
205
|
+
[⬆ Back to Top](#-octotui)
|
|
206
|
+
|
|
207
|
+
</div>
|
octotui-0.1.7/README.md
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="cute-octo.png" alt="OctoTUI Logo" width="300">
|
|
4
|
+
|
|
5
|
+
# 🐙 OctoTUI
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
[](https://pypi.org/project/octotui/)
|
|
9
|
+
[](https://pypi.org/project/octotui/)
|
|
10
|
+
[](https://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://github.com/astral-sh/ruff)
|
|
12
|
+
[](http://makeapullrequest.com)
|
|
13
|
+
|
|
14
|
+
**A Textual TUI For GitKraken Lovers**
|
|
15
|
+
|
|
16
|
+
[Installation](#-installation) • [AI Commits](#-ai-powered-commits) • [Keybindings](#️-keybindings)
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 🚀 OctoTUI
|
|
23
|
+

|
|
24
|
+
> **We love GitKraken so much, we wanted to bring that beautiful experience to the terminal!**
|
|
25
|
+
|
|
26
|
+
GitKraken is amazing - it's gorgeous, intuitive, and makes Git feel approachable. But as terminal enthusiasts, we found ourselves constantly context-switching between our editor and GitKraken. We wanted that same delightful experience without ever leaving the command line.
|
|
27
|
+
|
|
28
|
+
**OctoTUI is our love letter to both GitKraken and the terminal.**
|
|
29
|
+
|
|
30
|
+
### 💙 What We Kept from GitKraken
|
|
31
|
+
- ✅ Beautiful, intuitive visual diffs
|
|
32
|
+
- ✅ Hunk-level staging control
|
|
33
|
+
- ✅ Branch visualization and management
|
|
34
|
+
- ✅ Commit history browsing
|
|
35
|
+
|
|
36
|
+
### 🎯 What We Added for Terminal Lovers
|
|
37
|
+
- 🤖 AI-powered commit messages (via GAC)
|
|
38
|
+
- 🆓 100% free and open source
|
|
39
|
+
- 🏠 Never leave your terminal flow
|
|
40
|
+
|
|
41
|
+
## 📦 Installation
|
|
42
|
+
|
|
43
|
+
### Quick Start (Recommended)
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Using uvx (isolated, recommended)
|
|
47
|
+
uvx octotui
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### From Source (For Contributors)
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git clone https://github.com/never-use-gui/octotui.git
|
|
54
|
+
cd octotui
|
|
55
|
+
uv run octotui
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### System Requirements
|
|
59
|
+
|
|
60
|
+
- 🐍 Python 3.11+
|
|
61
|
+
- 🔧 Git
|
|
62
|
+
- 💻 Any terminal with 256+ colors
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### First-Time Workflow
|
|
66
|
+
|
|
67
|
+
1. **Review Changes**: See your diffs in beautiful color
|
|
68
|
+
2. **Stage Hunks**: Click or use `s` to stage individual changes
|
|
69
|
+
3. **Generate Commit**: Press `g` for AI-powered message (optional)
|
|
70
|
+
4. **Commit**: Press `c` to commit with your message
|
|
71
|
+
5. **Push**: Press `p` to push to remote
|
|
72
|
+
|
|
73
|
+
**Pro tip**: Press `h` anytime to see all available keybindings! 🚀
|
|
74
|
+
|
|
75
|
+
## 🤖 AI-Powered Commits
|
|
76
|
+
|
|
77
|
+
### Setup (Optional but Awesome)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Install GAC (Git Auto Commit)
|
|
81
|
+
uv pip install 'gac>=0.18.0'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Configuration
|
|
85
|
+
|
|
86
|
+
1. Press `Ctrl+G` in OctoTUI
|
|
87
|
+
2. Choose your provider (we recommend **Cerebras** for free tier)
|
|
88
|
+
3. Select your model
|
|
89
|
+
4. Paste your API key
|
|
90
|
+
5. Save & enjoy AI commit messages!
|
|
91
|
+
|
|
92
|
+
## ⌨️ Keybindings
|
|
93
|
+
|
|
94
|
+
### 📁 Navigation
|
|
95
|
+
| Key | Action |
|
|
96
|
+
|-----|--------|
|
|
97
|
+
| `↑/↓` | Navigate files/hunks |
|
|
98
|
+
| `Enter` | Select file |
|
|
99
|
+
| `Tab` / `Shift+Tab` | Cycle through UI elements |
|
|
100
|
+
| `1` / `Ctrl+1` | Switch to Unstaged tab |
|
|
101
|
+
| `2` / `Ctrl+2` | Switch to Staged tab |
|
|
102
|
+
|
|
103
|
+
### 🔄 Git Operations
|
|
104
|
+
| Key | Action |
|
|
105
|
+
|-----|--------|
|
|
106
|
+
| `s` | Stage selected file |
|
|
107
|
+
| `u` | Unstage selected file |
|
|
108
|
+
| `a` | Stage ALL unstaged changes |
|
|
109
|
+
| `x` | Unstage ALL staged changes |
|
|
110
|
+
| `c` | Commit staged changes |
|
|
111
|
+
|
|
112
|
+
### 🌿 Branch & Remote
|
|
113
|
+
| Key | Action |
|
|
114
|
+
|-----|--------|
|
|
115
|
+
| `b` | Switch branch |
|
|
116
|
+
| `r` | Refresh status |
|
|
117
|
+
| `p` | Push to remote |
|
|
118
|
+
| `o` | Pull from remote |
|
|
119
|
+
|
|
120
|
+
### 🤖 AI Features
|
|
121
|
+
| Key | Action |
|
|
122
|
+
|-----|--------|
|
|
123
|
+
| `g` | Generate AI commit message |
|
|
124
|
+
| `Ctrl+G` | Configure GAC settings |
|
|
125
|
+
|
|
126
|
+
### ⚙️ Application
|
|
127
|
+
| Key | Action |
|
|
128
|
+
|-----|--------|
|
|
129
|
+
| `h` | Show help modal |
|
|
130
|
+
| `q` | Quit application |
|
|
131
|
+
| `Ctrl+D` | Toggle dark mode |
|
|
132
|
+
|
|
133
|
+
## 🎨 Git Status Colors
|
|
134
|
+
|
|
135
|
+
| Color | Meaning |
|
|
136
|
+
|-------|----------|
|
|
137
|
+
| 🟢 **Green** | Staged files (ready to commit) |
|
|
138
|
+
| 🟡 **Yellow** | Modified files (unstaged) |
|
|
139
|
+
| 🔵 **Blue** | Directories |
|
|
140
|
+
| 🟣 **Purple** | Untracked files |
|
|
141
|
+
| 🔴 **Red** | Deleted files |
|
|
142
|
+
|
|
143
|
+
### Code Quality Standards
|
|
144
|
+
|
|
145
|
+
- ✅ Follow the Zen of Python
|
|
146
|
+
- ✅ DRY (Don't Repeat Yourself)
|
|
147
|
+
- ✅ YAGNI (You Aren't Gonna Need It)
|
|
148
|
+
- ✅ SOLID principles
|
|
149
|
+
- ✅ Keep files under 600 lines
|
|
150
|
+
- ✅ Write tests for new features
|
|
151
|
+
- ✅ Pass `ruff check` with zero errors
|
|
152
|
+
|
|
153
|
+
## 📚 Tech Stack
|
|
154
|
+
|
|
155
|
+
- **[Textual](https://textual.textualize.io/)**: Modern TUI framework
|
|
156
|
+
- **[GitPython](https://gitpython.readthedocs.io/)**: Git operations
|
|
157
|
+
- **[GAC](https://github.com/cellwebb/gac)**: AI commit generation
|
|
158
|
+
- **[Ruff](https://github.com/astral-sh/ruff)**: Lightning-fast Python linter
|
|
159
|
+
|
|
160
|
+
## 📜 License
|
|
161
|
+
|
|
162
|
+
MIT License - see [LICENSE](LICENSE) for details
|
|
163
|
+
|
|
164
|
+
## 🙏 Acknowledgments
|
|
165
|
+
|
|
166
|
+
- Built with ❤️ using [Textual](https://textual.textualize.io/)
|
|
167
|
+
- AI commits powered by [GAC](https://github.com/cellwebb/gac)
|
|
168
|
+
|
|
169
|
+
## 💬 Community
|
|
170
|
+
|
|
171
|
+
- 🐛 **Issues**: [GitHub Issues](https://github.com/never-use-gui/octotui/issues)
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
<div align="center">
|
|
175
|
+
|
|
176
|
+
### 🌟 If you like OctoTUI, give us a star! 🌟
|
|
177
|
+
|
|
178
|
+
[⬆ Back to Top](#-octotui)
|
|
179
|
+
|
|
180
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.1.0"
|