forestui 0.9.0__tar.gz → 0.9.2__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.
Files changed (32) hide show
  1. {forestui-0.9.0 → forestui-0.9.2}/CLAUDE.md +11 -19
  2. {forestui-0.9.0 → forestui-0.9.2}/PKG-INFO +22 -4
  3. {forestui-0.9.0 → forestui-0.9.2}/README.md +21 -3
  4. forestui-0.9.2/forestui/__init__.py +9 -0
  5. {forestui-0.9.0 → forestui-0.9.2}/forestui/cli.py +3 -0
  6. {forestui-0.9.0 → forestui-0.9.2}/pyproject.toml +1 -1
  7. {forestui-0.9.0 → forestui-0.9.2}/uv.lock +1 -1
  8. forestui-0.9.0/forestui/__init__.py +0 -3
  9. {forestui-0.9.0 → forestui-0.9.2}/.github/workflows/publish.yml +0 -0
  10. {forestui-0.9.0 → forestui-0.9.2}/.gitignore +0 -0
  11. {forestui-0.9.0 → forestui-0.9.2}/.pre-commit-config.yaml +0 -0
  12. {forestui-0.9.0 → forestui-0.9.2}/.python-version +0 -0
  13. {forestui-0.9.0 → forestui-0.9.2}/Makefile +0 -0
  14. {forestui-0.9.0 → forestui-0.9.2}/doc/screenshot_small.png +0 -0
  15. {forestui-0.9.0 → forestui-0.9.2}/forestui/__main__.py +0 -0
  16. {forestui-0.9.0 → forestui-0.9.2}/forestui/app.py +0 -0
  17. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/__init__.py +0 -0
  18. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/messages.py +0 -0
  19. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/modals.py +0 -0
  20. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/repository_detail.py +0 -0
  21. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/sidebar.py +0 -0
  22. {forestui-0.9.0 → forestui-0.9.2}/forestui/components/worktree_detail.py +0 -0
  23. {forestui-0.9.0 → forestui-0.9.2}/forestui/models.py +0 -0
  24. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/__init__.py +0 -0
  25. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/claude_session.py +0 -0
  26. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/git.py +0 -0
  27. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/github.py +0 -0
  28. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/settings.py +0 -0
  29. {forestui-0.9.0 → forestui-0.9.2}/forestui/services/tmux.py +0 -0
  30. {forestui-0.9.0 → forestui-0.9.2}/forestui/state.py +0 -0
  31. {forestui-0.9.0 → forestui-0.9.2}/forestui/theme.py +0 -0
  32. {forestui-0.9.0 → forestui-0.9.2}/install.sh +0 -0
@@ -160,31 +160,23 @@ Currently no test suite. When adding tests:
160
160
 
161
161
  ## Versioning
162
162
 
163
- Version is defined in **both** `forestui/__init__.py` and `pyproject.toml`:
164
- ```python
165
- __version__ = "0.1.0"
166
- ```
167
-
168
- **IMPORTANT:** The `main` branch represents the release. Every feature, fix, or change merged to `main` **must** include a version bump in both files:
169
- - **Patch** (0.0.X): Bug fixes, dead code removal, minor cleanup
170
- - **Minor** (0.X.0): New features, enhancements
171
- - **Major** (X.0.0): Breaking changes
163
+ Version is `0.0.0` in source code. Actual versions are derived from git tags at release time.
172
164
 
173
- This is required for `--self-update` to work correctly - it compares the local version against the remote to detect updates. If you forget to bump the version, users won't see the update.
165
+ ### Development
174
166
 
175
- ### Workflow: Test Before Commit
167
+ 1. Create a branch, make changes
168
+ 2. Run `make check` and test locally
169
+ 3. Open a PR and merge to `main`
176
170
 
177
- **Do NOT bump the version, commit, or push until the user has tested and approved the changes.**
171
+ Running from source (`uv run forestui`) shows version `0.0.0` and auto-enables dev mode.
178
172
 
179
- Every commit to `main` with a bumped version is an actual release that will propagate to all users via `--self-update`. The workflow should be:
173
+ ### Releasing
180
174
 
181
- 1. Make code changes
182
- 2. Run `make check` to verify lint/typecheck pass (do this BEFORE bumping version - if linter reformats code, you don't want to bump twice)
183
- 3. **Ask the user to test the changes** before proceeding
184
- 4. Bump version in both `forestui/__init__.py` and `pyproject.toml`
185
- 5. Commit and push
175
+ ```bash
176
+ gh release create v0.9.1 --generate-notes
177
+ ```
186
178
 
187
- This keeps a human in the loop for quality control before releasing.
179
+ This triggers the publish workflow which builds and publishes to PyPI.
188
180
 
189
181
  ## Git Commits
190
182
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forestui
3
- Version: 0.9.0
3
+ Version: 0.9.2
4
4
  Summary: A Terminal UI for managing Git worktrees
5
5
  Author: cadu
6
6
  Keywords: git,terminal,textual,tui,worktree
@@ -41,13 +41,34 @@ forestui brings the power of Git worktree management to the terminal with a beau
41
41
  - Python 3.14+
42
42
  - tmux
43
43
  - uv (for installation)
44
+ - [gh](https://cli.github.com/) (optional, for GitHub integration)
44
45
 
45
46
  ## Installing
46
47
 
48
+ ### Quick Install (recommended)
49
+
50
+ Installs [uv](https://github.com/astral-sh/uv) automatically if not present. No Python installation required.
51
+
47
52
  ```bash
48
53
  curl -fsSL https://raw.githubusercontent.com/flipbit03/forestui/main/install.sh | bash
49
54
  ```
50
55
 
56
+ ### Install via uv
57
+
58
+ If you already have [uv](https://github.com/astral-sh/uv) installed:
59
+
60
+ ```bash
61
+ uv tool install forestui
62
+ ```
63
+
64
+ ### Updating
65
+
66
+ forestui auto-updates on startup. To manually update:
67
+
68
+ ```bash
69
+ uv tool upgrade forestui
70
+ ```
71
+
51
72
  ## Usage
52
73
 
53
74
  ```bash
@@ -57,9 +78,6 @@ forestui
57
78
  # Start with a custom forest directory
58
79
  forestui ~/my-projects
59
80
 
60
- # Update to latest version
61
- forestui --self-update
62
-
63
81
  # Show help
64
82
  forestui --help
65
83
  ```
@@ -20,13 +20,34 @@ forestui brings the power of Git worktree management to the terminal with a beau
20
20
  - Python 3.14+
21
21
  - tmux
22
22
  - uv (for installation)
23
+ - [gh](https://cli.github.com/) (optional, for GitHub integration)
23
24
 
24
25
  ## Installing
25
26
 
27
+ ### Quick Install (recommended)
28
+
29
+ Installs [uv](https://github.com/astral-sh/uv) automatically if not present. No Python installation required.
30
+
26
31
  ```bash
27
32
  curl -fsSL https://raw.githubusercontent.com/flipbit03/forestui/main/install.sh | bash
28
33
  ```
29
34
 
35
+ ### Install via uv
36
+
37
+ If you already have [uv](https://github.com/astral-sh/uv) installed:
38
+
39
+ ```bash
40
+ uv tool install forestui
41
+ ```
42
+
43
+ ### Updating
44
+
45
+ forestui auto-updates on startup. To manually update:
46
+
47
+ ```bash
48
+ uv tool upgrade forestui
49
+ ```
50
+
30
51
  ## Usage
31
52
 
32
53
  ```bash
@@ -36,9 +57,6 @@ forestui
36
57
  # Start with a custom forest directory
37
58
  forestui ~/my-projects
38
59
 
39
- # Update to latest version
40
- forestui --self-update
41
-
42
60
  # Show help
43
61
  forestui --help
44
62
  ```
@@ -0,0 +1,9 @@
1
+ """forestui - A Terminal UI for managing Git worktrees."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ try:
6
+ __version__ = version("forestui")
7
+ except PackageNotFoundError:
8
+ # Package not installed (running from source without install)
9
+ __version__ = "0.0.0"
@@ -147,6 +147,9 @@ def main(
147
147
 
148
148
  FOREST_PATH: Optional path to forest directory (default: ~/forest)
149
149
  """
150
+ # Auto-enable dev mode when running from source (version 0.0.0)
151
+ dev_mode = dev_mode or __version__ == "0.0.0"
152
+
150
153
  ensure_tmux(forest_path, debug_mode, no_self_update, dev_mode)
151
154
 
152
155
  if debug_mode:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "forestui"
3
- version = "0.9.0"
3
+ version = "0.9.2"
4
4
  description = "A Terminal UI for managing Git worktrees"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
@@ -155,7 +155,7 @@ wheels = [
155
155
 
156
156
  [[package]]
157
157
  name = "forestui"
158
- version = "0.9.0"
158
+ version = "0.0.0"
159
159
  source = { editable = "." }
160
160
  dependencies = [
161
161
  { name = "click" },
@@ -1,3 +0,0 @@
1
- """forestui - A Terminal UI for managing Git worktrees."""
2
-
3
- __version__ = "0.9.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes