tasktree-manager 2.2.0__tar.gz → 2.3.0__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 (58) hide show
  1. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/CHANGELOG.md +9 -0
  2. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/PKG-INFO +1 -1
  3. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/docs/configuration.md +11 -9
  4. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/docs/user-guide.md +17 -7
  5. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/pyproject.toml +1 -1
  6. tasktree_manager-2.3.0/tasktree_manager/_version.py +24 -0
  7. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/app.py +377 -250
  8. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/claude_hooks.py +13 -0
  9. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/config.py +34 -43
  10. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/git_ops.py +125 -71
  11. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/models.py +10 -1
  12. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/task_manager.py +34 -14
  13. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/create_modal.py +29 -7
  14. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/status_panel.py +23 -20
  15. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/task_list.py +9 -3
  16. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_app.py +64 -1
  17. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_git_ops.py +142 -0
  18. tasktree_manager-2.2.0/tasktree_manager/_version.py +0 -34
  19. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/SKILL.md +0 -0
  20. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/assets/README.md +0 -0
  21. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/assets/dashboard_app.py +0 -0
  22. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/assets/data_viewer.py +0 -0
  23. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/assets/todo_app.py +0 -0
  24. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/assets/worker_demo.py +0 -0
  25. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/references/layouts.md +0 -0
  26. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/references/official-guides-index.md +0 -0
  27. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/references/styling.md +0 -0
  28. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.claude/skills/textual-tui/references/widgets.md +0 -0
  29. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.github/templates/CHANGELOG.md.j2 +0 -0
  30. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.github/workflows/ci.yml +0 -0
  31. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.github/workflows/release.yml +0 -0
  32. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/.gitignore +0 -0
  33. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/CONTRIBUTING.md +0 -0
  34. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/LICENSE +0 -0
  35. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/OPENSPEC.md +0 -0
  36. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/README.md +0 -0
  37. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/ROADMAP.md +0 -0
  38. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/docs/claude-code-integration-spec.md +0 -0
  39. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/docs/installation.md +0 -0
  40. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/docs/troubleshooting.md +0 -0
  41. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/mise.toml +0 -0
  42. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/scripts/bump_version.py +0 -0
  43. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/__init__.py +0 -0
  44. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/services/__init__.py +0 -0
  45. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/__init__.py +0 -0
  46. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/messages_panel.py +0 -0
  47. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/setup_modal.py +0 -0
  48. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tasktree_manager/widgets/worktree_list.py +0 -0
  49. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/__init__.py +0 -0
  50. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/conftest.py +0 -0
  51. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_config.py +0 -0
  52. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_integration_git.py +0 -0
  53. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_memory.py +0 -0
  54. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_messages_panel.py +0 -0
  55. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_modals.py +0 -0
  56. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_setup_modal.py +0 -0
  57. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_status_panel.py +0 -0
  58. {tasktree_manager-2.2.0 → tasktree_manager-2.3.0}/tests/test_task_manager.py +0 -0
@@ -15,6 +15,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
15
  - Git hooks support
16
16
  - Custom task metadata
17
17
 
18
+ ## [2.3.0] - 2026-06-10
19
+
20
+ ### Added
21
+ - Add task cloning, worktree deletion, and non-blocking git ops (#4)
22
+
23
+ ### Fixed
24
+ - Honor git timeout, real status codes, non-blocking delete (#5)
25
+
26
+
18
27
  ## [2.2.0] - 2026-03-06
19
28
 
20
29
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tasktree-manager
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: TUI application for managing worktree-based tasks
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
@@ -166,8 +166,8 @@ pull_all = "P" # Pull all worktrees in current task (shift+p)
166
166
  refresh = "r" # Refresh git status
167
167
 
168
168
  # Claude Code integration
169
- open_claude_resume = "c" # Resume Claude Code session in task directory
170
- open_claude_new = "C" # Start new Claude Code session (shift+c)
169
+ open_claude_resume = "c" # Open Claude CLI (resume if a session exists, else new)
170
+ open_claude_gui_code = "C" # Open Claude desktop on Code page in task folder (shift+c)
171
171
 
172
172
  # Messages panel
173
173
  toggle_messages = "m" # Show/hide the activity messages panel
@@ -294,7 +294,8 @@ refresh_interval = 15 # Refresh every 15 seconds
294
294
  - Most users should use manual push (`p` key) for control
295
295
 
296
296
  **`timeout`:**
297
- - Timeout for git commands (clone, fetch, push, pull)
297
+ - Timeout for git commands that touch the network (fetch, push, pull) and worktree creation
298
+ - Local status queries use a fixed short timeout (5s) and are not affected
298
299
  - Increase for slow networks or large repositories
299
300
  - Set to `60` or higher for very large repos
300
301
 
@@ -417,7 +418,7 @@ blocklist = ["*"]
417
418
 
418
419
  ## Keybindings Reference
419
420
 
420
- All 21 customizable keybindings with descriptions:
421
+ All 22 customizable keybindings with descriptions:
421
422
 
422
423
  ### Application Control
423
424
 
@@ -431,6 +432,7 @@ All 21 customizable keybindings with descriptions:
431
432
  | Action | Default | Description | Customization Example |
432
433
  |---------------|---------|----------------------------------------|----------------------------|
433
434
  | `new_task` | `n` | Create a new task | `new_task = "ctrl+n"` |
435
+ | `clone_task` | `y` | Clone current task (same repos, new name) | `clone_task = "ctrl+y"` |
434
436
  | `add_repo` | `a` | Add repository to current task | `add_repo = "ctrl+a"` |
435
437
  | `delete_task` | `d` | Delete/finish current task | `delete_task = "delete"` |
436
438
 
@@ -448,11 +450,11 @@ All 21 customizable keybindings with descriptions:
448
450
 
449
451
  ### Claude Code Integration
450
452
 
451
- | Action | Default | Description | Customization Example |
452
- |----------------------|---------|------------------------------------------|--------------------------------------|
453
- | `open_claude_resume` | `c` | Resume Claude Code session in task dir | `open_claude_resume = "ctrl+c"` |
454
- | `open_claude_new` | `C` | Start new Claude Code session | `open_claude_new = "ctrl+shift+c"` |
455
- | `toggle_messages` | `m` | Show/hide activity messages panel | `toggle_messages = "ctrl+m"` |
453
+ | Action | Default | Description | Customization Example |
454
+ |-----------------------|---------|------------------------------------------------------|--------------------------------------|
455
+ | `open_claude_resume` | `c` | Open Claude CLI (resume if session exists, else new) | `open_claude_resume = "ctrl+c"` |
456
+ | `open_claude_gui_code`| `C` | Open Claude desktop on Code page in task folder | `open_claude_gui_code = "ctrl+shift+c"` |
457
+ | `toggle_messages` | `m` | Show/hide activity messages panel | `toggle_messages = "ctrl+m"` |
456
458
 
457
459
  ### Navigation
458
460
 
@@ -285,6 +285,7 @@ All keybindings can be customized in [`config.toml`](configuration.md).
285
285
  | Key | Action | Description |
286
286
  |-----|------------------|-----------------------------------------------------------|
287
287
  | `n` | New task | Create a new task with selected repositories |
288
+ | `y` | Clone task | Create a new task pre-populated with the current task's repos |
288
289
  | `a` | Add repository | Add additional repositories to the current task |
289
290
  | `d` | Delete/finish | Delete current task and remove worktrees |
290
291
 
@@ -296,6 +297,14 @@ All keybindings can be customized in [`config.toml`](configuration.md).
296
297
  5. Select repos with `Space` (can select multiple)
297
298
  6. Tab to "Create" button, press `Enter`
298
299
 
300
+ **Clone task workflow:**
301
+ Useful when you're spinning up several similar tasks that share the same set of repos.
302
+
303
+ 1. Highlight the source task in the left panel
304
+ 2. Press `y`
305
+ 3. The modal opens with the source task's repos already selected — just enter a new task name
306
+ 4. Adjust the repo selection or base branch if needed, then press `Enter`
307
+
299
308
  **Task deletion workflow:**
300
309
  1. Highlight task in left panel
301
310
  2. Press `d`
@@ -333,15 +342,16 @@ All keybindings can be customized in [`config.toml`](configuration.md).
333
342
 
334
343
  ### Claude Code Integration
335
344
 
336
- | Key | Action | Description |
337
- |---------|-------------------------|----------------------------------------------|
338
- | `c` | Open Claude (resume) | Resume Claude Code session in task directory |
339
- | `C` | Open Claude (new) | Start new Claude Code session in task directory |
345
+ | Key | Action | Description |
346
+ |---------|-------------------------|------------------------------------------------------------|
347
+ | `c` | Open Claude CLI | Resume the task's Claude Code session if one exists, otherwise start a new one |
348
+ | `C` | Open Claude desktop | Open the Claude desktop app on the Code page at the task folder |
340
349
 
341
350
  **How it works:**
342
- - Opens Claude Code in a new Ghostty terminal tab at the task directory
343
- - Generates `CLAUDE.md` files with task/worktree context
344
- - Installs hooks that report session status back to tasktree-manager
351
+ - `c` opens Claude Code CLI in a new Ghostty terminal tab at the task directory.
352
+ - If `~/.claude/projects/<task-folder>/` already has session transcripts, runs `claude -r` to pick from them; otherwise runs `claude` to start fresh.
353
+ - `C` opens the Claude desktop app via the `claude://code/new?folder=<task-folder>` URL scheme.
354
+ - The CLI variant (`c`) generates `CLAUDE.md` files with task/worktree context and installs hooks that report session status back to tasktree-manager.
345
355
  - Session status (`⟳` running, `!` waiting, `✓` ended) appears next to the task name
346
356
 
347
357
  ### General
@@ -70,7 +70,7 @@ version-file = "tasktree_manager/_version.py"
70
70
  # Semantic Release Configuration
71
71
  [tool.semantic_release]
72
72
  version_toml = ["pyproject.toml:tool.semantic_release.version"]
73
- version = "2.2.0"
73
+ version = "2.3.0"
74
74
  tag_format = "v{version}"
75
75
  branch = "main"
76
76
  commit_message = "chore(release): {version} [skip ci]"
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '2.3.0'
22
+ __version_tuple__ = version_tuple = (2, 3, 0)
23
+
24
+ __commit_id__ = commit_id = None