forestui 0.9.3__tar.gz → 0.9.5__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 (31) hide show
  1. {forestui-0.9.3 → forestui-0.9.5}/PKG-INFO +1 -1
  2. {forestui-0.9.3 → forestui-0.9.5}/forestui/app.py +17 -17
  3. {forestui-0.9.3 → forestui-0.9.5}/pyproject.toml +1 -1
  4. {forestui-0.9.3 → forestui-0.9.5}/.github/workflows/publish.yml +0 -0
  5. {forestui-0.9.3 → forestui-0.9.5}/.gitignore +0 -0
  6. {forestui-0.9.3 → forestui-0.9.5}/.pre-commit-config.yaml +0 -0
  7. {forestui-0.9.3 → forestui-0.9.5}/.python-version +0 -0
  8. {forestui-0.9.3 → forestui-0.9.5}/CLAUDE.md +0 -0
  9. {forestui-0.9.3 → forestui-0.9.5}/Makefile +0 -0
  10. {forestui-0.9.3 → forestui-0.9.5}/README.md +0 -0
  11. {forestui-0.9.3 → forestui-0.9.5}/doc/screenshot_small.png +0 -0
  12. {forestui-0.9.3 → forestui-0.9.5}/forestui/__init__.py +0 -0
  13. {forestui-0.9.3 → forestui-0.9.5}/forestui/__main__.py +0 -0
  14. {forestui-0.9.3 → forestui-0.9.5}/forestui/cli.py +0 -0
  15. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/__init__.py +0 -0
  16. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/messages.py +0 -0
  17. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/modals.py +0 -0
  18. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/repository_detail.py +0 -0
  19. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/sidebar.py +0 -0
  20. {forestui-0.9.3 → forestui-0.9.5}/forestui/components/worktree_detail.py +0 -0
  21. {forestui-0.9.3 → forestui-0.9.5}/forestui/models.py +0 -0
  22. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/__init__.py +0 -0
  23. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/claude_session.py +0 -0
  24. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/git.py +0 -0
  25. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/github.py +0 -0
  26. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/settings.py +0 -0
  27. {forestui-0.9.3 → forestui-0.9.5}/forestui/services/tmux.py +0 -0
  28. {forestui-0.9.3 → forestui-0.9.5}/forestui/state.py +0 -0
  29. {forestui-0.9.3 → forestui-0.9.5}/forestui/theme.py +0 -0
  30. {forestui-0.9.3 → forestui-0.9.5}/install.sh +0 -0
  31. {forestui-0.9.3 → forestui-0.9.5}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forestui
3
- Version: 0.9.3
3
+ Version: 0.9.5
4
4
  Summary: A Terminal UI for managing Git worktrees
5
5
  Author: cadu
6
6
  Keywords: git,terminal,textual,tui,worktree
@@ -178,15 +178,16 @@ class ForestApp(App[None]):
178
178
  def _auto_update(self) -> None:
179
179
  """Auto-update via PyPI with status in title bar.
180
180
 
181
- Uses `uv tool install forestui --force --upgrade` to check PyPI for updates.
181
+ Uses `uv tool upgrade forestui` to check PyPI for updates.
182
182
 
183
- IMPORTANT: We use `install --force --upgrade` instead of `upgrade` because
184
- `uv tool upgrade` rebuilds from the original install source. For users who
185
- installed via the old git-clone method, that would rebuild from the local
186
- ~/.forestui-install directory instead of fetching from PyPI.
183
+ Output on successful update:
184
+ Updated forestui v0.9.3 -> v0.9.4
185
+ - forestui==0.9.3
186
+ + forestui==0.9.4
187
+ Installed 1 executable: forestui
187
188
 
188
- The `--upgrade` flag ensures we only reinstall if a newer version exists.
189
- The `--force` flag ensures we overwrite the existing installation.
189
+ Output when already up to date:
190
+ Nothing to upgrade
190
191
  """
191
192
  import os
192
193
  import re
@@ -197,23 +198,22 @@ class ForestApp(App[None]):
197
198
  try:
198
199
  self._set_title_suffix("checking for updates...")
199
200
 
200
- # Install from PyPI if newer version available
201
- # MUST use "install --force --upgrade", NOT "upgrade"
202
- # See docstring for explanation
203
201
  result = subprocess.run(
204
- ["uv", "tool", "install", "forestui", "--force", "--upgrade"],
202
+ ["uv", "tool", "upgrade", "forestui"],
205
203
  capture_output=True,
206
204
  text=True,
207
205
  timeout=120,
208
206
  )
209
207
 
210
208
  if result.returncode == 0:
209
+ output = result.stdout + result.stderr
211
210
  # Check if we actually upgraded (vs already up to date)
212
- # Output contains "Installed forestui v0.9.1" when installed/upgraded
213
- # Output contains "forestui is already installed" when up to date
214
- if "Installed" in result.stdout or "Upgraded" in result.stdout:
215
- # Try to extract version from output
216
- match = re.search(r"v(\d+\.\d+\.\d+)", result.stdout)
211
+ # "Nothing to upgrade" means already on latest
212
+ if "Nothing to upgrade" in output:
213
+ self._set_title_suffix(None)
214
+ elif "Updated" in output:
215
+ # Extract version from "+ forestui==X.Y.Z" line
216
+ match = re.search(r"\+ forestui==(\d+\.\d+\.\d+)", output)
217
217
  if match:
218
218
  new_version = match.group(1)
219
219
  self._set_title_suffix(
@@ -222,7 +222,7 @@ class ForestApp(App[None]):
222
222
  else:
223
223
  self._set_title_suffix("updated - restart to apply")
224
224
  else:
225
- # Already up to date
225
+ # Unknown output format, assume no update
226
226
  self._set_title_suffix(None)
227
227
  else:
228
228
  # Command failed - might not be on PyPI yet or network issue
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "forestui"
3
- version = "0.9.3"
3
+ version = "0.9.5"
4
4
  description = "A Terminal UI for managing Git worktrees"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
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
File without changes
File without changes
File without changes
File without changes