tasktree-manager 2.2.0__tar.gz → 2.4.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.
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/CHANGELOG.md +15 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/PKG-INFO +1 -1
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/docs/configuration.md +11 -9
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/docs/user-guide.md +23 -7
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/pyproject.toml +1 -1
- tasktree_manager-2.4.0/tasktree_manager/_version.py +24 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/app.py +428 -276
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/claude_hooks.py +13 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/config.py +34 -43
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/git_ops.py +125 -71
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/models.py +10 -1
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/task_manager.py +34 -14
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/create_modal.py +29 -7
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/status_panel.py +23 -20
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/task_list.py +24 -4
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/worktree_list.py +14 -1
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_app.py +157 -1
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_git_ops.py +142 -0
- tasktree_manager-2.2.0/tasktree_manager/_version.py +0 -34
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/SKILL.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/assets/README.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/assets/dashboard_app.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/assets/data_viewer.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/assets/todo_app.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/assets/worker_demo.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/references/layouts.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/references/official-guides-index.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/references/styling.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.claude/skills/textual-tui/references/widgets.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.github/templates/CHANGELOG.md.j2 +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.github/workflows/ci.yml +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.github/workflows/release.yml +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/.gitignore +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/CONTRIBUTING.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/LICENSE +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/OPENSPEC.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/README.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/ROADMAP.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/docs/claude-code-integration-spec.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/docs/installation.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/docs/troubleshooting.md +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/mise.toml +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/scripts/bump_version.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/__init__.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/services/__init__.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/__init__.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/messages_panel.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tasktree_manager/widgets/setup_modal.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/__init__.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/conftest.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_config.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_integration_git.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_memory.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_messages_panel.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_modals.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_setup_modal.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_status_panel.py +0 -0
- {tasktree_manager-2.2.0 → tasktree_manager-2.4.0}/tests/test_task_manager.py +0 -0
|
@@ -15,6 +15,21 @@ 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.4.0] - 2026-06-10
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Context-sensitive footer showing the focused panel's keys (#6)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## [2.3.0] - 2026-06-10
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- Add task cloning, worktree deletion, and non-blocking git ops (#4)
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Honor git timeout, real status codes, non-blocking delete (#5)
|
|
31
|
+
|
|
32
|
+
|
|
18
33
|
## [2.2.0] - 2026-03-06
|
|
19
34
|
|
|
20
35
|
### Added
|
|
@@ -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" #
|
|
170
|
-
|
|
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 (
|
|
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
|
|
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
|
|
452
|
-
|
|
453
|
-
| `open_claude_resume`
|
|
454
|
-
| `
|
|
455
|
-
| `toggle_messages`
|
|
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
|
|
|
@@ -246,6 +246,12 @@ Shows detailed git status for the selected worktree:
|
|
|
246
246
|
|
|
247
247
|
All keybindings can be customized in [`config.toml`](configuration.md).
|
|
248
248
|
|
|
249
|
+
The footer is context-sensitive, lazygit-style: it shows the actions for the
|
|
250
|
+
focused panel (task actions in the Task List, worktree/git actions in the
|
|
251
|
+
Worktree List) plus the always-available `r` Refresh, `?` Help, and `q` Quit.
|
|
252
|
+
Every key works regardless of which panel has focus — the footer only changes
|
|
253
|
+
what is displayed. Press `?` for the full reference at any time.
|
|
254
|
+
|
|
249
255
|
### Navigation
|
|
250
256
|
|
|
251
257
|
| Key | Action | Description |
|
|
@@ -285,6 +291,7 @@ All keybindings can be customized in [`config.toml`](configuration.md).
|
|
|
285
291
|
| Key | Action | Description |
|
|
286
292
|
|-----|------------------|-----------------------------------------------------------|
|
|
287
293
|
| `n` | New task | Create a new task with selected repositories |
|
|
294
|
+
| `y` | Clone task | Create a new task pre-populated with the current task's repos |
|
|
288
295
|
| `a` | Add repository | Add additional repositories to the current task |
|
|
289
296
|
| `d` | Delete/finish | Delete current task and remove worktrees |
|
|
290
297
|
|
|
@@ -296,6 +303,14 @@ All keybindings can be customized in [`config.toml`](configuration.md).
|
|
|
296
303
|
5. Select repos with `Space` (can select multiple)
|
|
297
304
|
6. Tab to "Create" button, press `Enter`
|
|
298
305
|
|
|
306
|
+
**Clone task workflow:**
|
|
307
|
+
Useful when you're spinning up several similar tasks that share the same set of repos.
|
|
308
|
+
|
|
309
|
+
1. Highlight the source task in the left panel
|
|
310
|
+
2. Press `y`
|
|
311
|
+
3. The modal opens with the source task's repos already selected — just enter a new task name
|
|
312
|
+
4. Adjust the repo selection or base branch if needed, then press `Enter`
|
|
313
|
+
|
|
299
314
|
**Task deletion workflow:**
|
|
300
315
|
1. Highlight task in left panel
|
|
301
316
|
2. Press `d`
|
|
@@ -333,15 +348,16 @@ All keybindings can be customized in [`config.toml`](configuration.md).
|
|
|
333
348
|
|
|
334
349
|
### Claude Code Integration
|
|
335
350
|
|
|
336
|
-
| Key | Action | Description
|
|
337
|
-
|
|
338
|
-
| `c` | Open Claude
|
|
339
|
-
| `C` | Open Claude
|
|
351
|
+
| Key | Action | Description |
|
|
352
|
+
|---------|-------------------------|------------------------------------------------------------|
|
|
353
|
+
| `c` | Open Claude CLI | Resume the task's Claude Code session if one exists, otherwise start a new one |
|
|
354
|
+
| `C` | Open Claude desktop | Open the Claude desktop app on the Code page at the task folder |
|
|
340
355
|
|
|
341
356
|
**How it works:**
|
|
342
|
-
-
|
|
343
|
-
-
|
|
344
|
-
-
|
|
357
|
+
- `c` opens Claude Code CLI in a new Ghostty terminal tab at the task directory.
|
|
358
|
+
- If `~/.claude/projects/<task-folder>/` already has session transcripts, runs `claude -r` to pick from them; otherwise runs `claude` to start fresh.
|
|
359
|
+
- `C` opens the Claude desktop app via the `claude://code/new?folder=<task-folder>` URL scheme.
|
|
360
|
+
- The CLI variant (`c`) generates `CLAUDE.md` files with task/worktree context and installs hooks that report session status back to tasktree-manager.
|
|
345
361
|
- Session status (`⟳` running, `!` waiting, `✓` ended) appears next to the task name
|
|
346
362
|
|
|
347
363
|
### 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.
|
|
73
|
+
version = "2.4.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.4.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 4, 0)
|
|
23
|
+
|
|
24
|
+
__commit_id__ = commit_id = None
|