forestui 0.9.0__py3-none-any.whl

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.
@@ -0,0 +1,152 @@
1
+ Metadata-Version: 2.4
2
+ Name: forestui
3
+ Version: 0.9.0
4
+ Summary: A Terminal UI for managing Git worktrees
5
+ Author: cadu
6
+ Keywords: git,terminal,textual,tui,worktree
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Environment :: Console
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Topic :: Software Development :: Version Control :: Git
14
+ Requires-Python: >=3.14
15
+ Requires-Dist: click>=8.1.0
16
+ Requires-Dist: humanize>=4.9.0
17
+ Requires-Dist: libtmux>=0.37.0
18
+ Requires-Dist: pydantic>=2.12.5
19
+ Requires-Dist: textual>=7.2.0
20
+ Description-Content-Type: text/markdown
21
+
22
+ # forestui
23
+
24
+ > A terminal UI for managing Git worktrees, inspired by [forest](https://github.com/ricwo/forest) for macOS by [@ricwo](https://github.com/ricwo).
25
+
26
+ forestui brings the power of Git worktree management to the terminal with a beautiful TUI interface built on [Textual](https://textual.textualize.io/), featuring deep integration with [Claude Code](https://claude.ai/code).
27
+
28
+ ![forestui screenshot](doc/screenshot_small.png)
29
+
30
+ ## Features
31
+
32
+ - **Repository Management**: Add and track multiple Git repositories
33
+ - **Worktree Operations**: Create, rename, archive, and delete worktrees
34
+ - **TUI Editor Integration**: Opens TUI editors (vim, nvim, helix, etc.) in tmux windows
35
+ - **Claude Code Integration**: Track and resume Claude Code sessions per worktree
36
+ - **Multi-Forest Support**: Manage multiple forest directories via CLI argument
37
+ - **tmux Native**: Runs inside tmux for a cohesive terminal experience
38
+
39
+ ## Requirements
40
+
41
+ - Python 3.14+
42
+ - tmux
43
+ - uv (for installation)
44
+
45
+ ## Installing
46
+
47
+ ```bash
48
+ curl -fsSL https://raw.githubusercontent.com/flipbit03/forestui/main/install.sh | bash
49
+ ```
50
+
51
+ ## Usage
52
+
53
+ ```bash
54
+ # Start with default forest directory (~/forest)
55
+ forestui
56
+
57
+ # Start with a custom forest directory
58
+ forestui ~/my-projects
59
+
60
+ # Update to latest version
61
+ forestui --self-update
62
+
63
+ # Show help
64
+ forestui --help
65
+ ```
66
+
67
+ ### Keyboard Shortcuts
68
+
69
+ | Key | Action |
70
+ |-----|--------|
71
+ | `a` | Add repository |
72
+ | `w` | Add worktree |
73
+ | `e` | Open in editor |
74
+ | `t` | Open in terminal |
75
+ | `o` | Open in file manager |
76
+ | `n` | Start Claude session |
77
+ | `y` | Start Claude session (YOLO mode) |
78
+ | `h` | Toggle archive |
79
+ | `d` | Delete |
80
+ | `s` | Settings |
81
+ | `r` | Refresh |
82
+ | `?` | Show help |
83
+ | `q` | Quit |
84
+
85
+ ### TUI Editor Integration
86
+
87
+ When your default editor is a TUI editor (vim, nvim, helix, nano, etc.), forestui opens it in a new tmux window named `edit:<worktree>`. This keeps your editing session organized alongside forestui and any Claude sessions.
88
+
89
+ Supported TUI editors: `vim`, `nvim`, `vi`, `emacs`, `nano`, `helix`, `hx`, `micro`, `kakoune`, `kak`
90
+
91
+ ### Multi-Forest Support
92
+
93
+ forestui stores its state (`.forestui-config.json`) in the forest directory itself, allowing you to manage multiple independent forests:
94
+
95
+ ```bash
96
+ forestui ~/work # Uses ~/work/.forestui-config.json
97
+ forestui ~/personal # Uses ~/personal/.forestui-config.json
98
+ ```
99
+
100
+ User preferences (editor, theme, branch prefix) are stored globally in `~/.config/forestui/settings.json`.
101
+
102
+ ## Configuration
103
+
104
+ Settings are stored in `~/.config/forestui/settings.json`:
105
+
106
+ ```json
107
+ {
108
+ "default_editor": "nvim",
109
+ "branch_prefix": "feat/",
110
+ "theme": "system"
111
+ }
112
+ ```
113
+
114
+ Press `s` in the app to open the settings modal.
115
+
116
+ ## Development
117
+
118
+ ```bash
119
+ # Clone and enter the repo
120
+ git clone https://github.com/flipbit03/forestui.git
121
+ cd forestui
122
+
123
+ # Install dev dependencies
124
+ make dev
125
+
126
+ # Run checks
127
+ make check
128
+
129
+ # Format code
130
+ make format
131
+
132
+ # Run the app
133
+ make run
134
+ ```
135
+
136
+ See [CLAUDE.md](CLAUDE.md) for AI-assisted development guidelines.
137
+
138
+ ## Compatibility with forest (macOS)
139
+
140
+ forestui is designed to coexist with [forest](https://github.com/ricwo/forest) for macOS:
141
+
142
+ - Both apps can share the same `~/forest` directory for worktrees
143
+ - Each app maintains its own state file:
144
+ - forest: `.forest-config.json` (stored in `~/.config/forest/`)
145
+ - forestui: `.forestui-config.json` (stored in the forest folder itself)
146
+ - Worktrees created by either app work seamlessly with both
147
+
148
+ **Key difference:** forestui stores its state inside the forest folder (`~/forest/.forestui-config.json`) rather than in a global config directory. This design enables multi-forest support - you can run `forestui ~/work` and `forestui ~/personal` with completely independent state for each.
149
+
150
+ ## License
151
+
152
+ MIT
@@ -0,0 +1,23 @@
1
+ forestui/__init__.py,sha256=5XV7YExNshXcR27WcUWlQNu3eBmtNFt_IikkFCwhLb4,82
2
+ forestui/__main__.py,sha256=nDdStXHt-5rnJh-nihdYReIx0MlTOvtNVwu4HhNbPNM,102
3
+ forestui/app.py,sha256=Yt4C6cHAao0Y4WRia6-pBCMvT3AXh5BZMoNCjSAZ6-Q,39779
4
+ forestui/cli.py,sha256=j0tUXDK58_tPqgwTPaHsB496KlDsnNdOcC0pU5Xq6Uo,4802
5
+ forestui/models.py,sha256=vSeGOis6kdxJDV7720U-X0tACTJQkDnMY9WXYUAJsuA,6167
6
+ forestui/state.py,sha256=x54bDbYZYuQa8Yv00v6AzUBiDKeP1N55sNEPcRQh6tM,8854
7
+ forestui/theme.py,sha256=EaK-nX5H6qU34SEauS2EfDAYjk_QtgTEyf6cw1Yhl2E,9199
8
+ forestui/components/__init__.py,sha256=di1gcQvhn_g1PasCZM_Wddl5pDOSJ51PvLI8SGfV1hY,518
9
+ forestui/components/messages.py,sha256=aXivaa5oY3Cp5pWduuBfZWe-Ff6wjaWY_KUEJV4CcGs,1860
10
+ forestui/components/modals.py,sha256=-f6w1farHIy5vPEKImwp3SSRITnp5GxOZFNEYUchH1A,23494
11
+ forestui/components/repository_detail.py,sha256=4tORX6U_MuBj-tsv1FK1C-K5gvAAKbHalErcg5ad6HI,14819
12
+ forestui/components/sidebar.py,sha256=OwjC3pyKPqPe3_DTMk2H7QOV-hKJdyr-8N35N2twI18,8899
13
+ forestui/components/worktree_detail.py,sha256=edcC-R43ZsVIFc2VPxtWwVJr4cCaCXVMfpg0rMEwSiQ,12473
14
+ forestui/services/__init__.py,sha256=gNs1XGnyy277xOQNV-rc5tVejRZyjJRcWQ8h3WdPc4k,464
15
+ forestui/services/claude_session.py,sha256=jUM6ng39cUlWIfyvoglsYaqAMmT6NEfiROehIMd3kXg,6618
16
+ forestui/services/git.py,sha256=9Gu_yawmAckhBkepkNID80I_r4bFMqqs9IbTjT6VY4Q,9165
17
+ forestui/services/github.py,sha256=jZF0iYDL4iZHarXC5zYfqLhuyUDiP_VsUwP63Z7cSt8,8156
18
+ forestui/services/settings.py,sha256=j7PgYMoCaTv4moakNU2Uo75gMvezyYsmPpBV71-4Uec,2608
19
+ forestui/services/tmux.py,sha256=WPTm0JUV9wGbXo70iwW1l3gcjqlZUnwWO_W7whtC_Jg,9715
20
+ forestui-0.9.0.dist-info/METADATA,sha256=CMa6ghedA9sxFDtJNaZmlQMjgBxLATl1ch1mR59bN44,4434
21
+ forestui-0.9.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
22
+ forestui-0.9.0.dist-info/entry_points.txt,sha256=ifci7XODOi-Wmgal3AP-wCbNmsU7a2sHI-xe-def8CM,47
23
+ forestui-0.9.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ forestui = forestui.app:main