sb-tracker 0.1.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.
- sb_tracker-0.1.0/LICENSE +21 -0
- sb_tracker-0.1.0/MANIFEST.in +3 -0
- sb_tracker-0.1.0/PKG-INFO +294 -0
- sb_tracker-0.1.0/README.md +265 -0
- sb_tracker-0.1.0/pyproject.toml +43 -0
- sb_tracker-0.1.0/setup.cfg +4 -0
- sb_tracker-0.1.0/setup.py +34 -0
- sb_tracker-0.1.0/src/sb_tracker/__init__.py +11 -0
- sb_tracker-0.1.0/src/sb_tracker/cli.py +552 -0
- sb_tracker-0.1.0/src/sb_tracker.egg-info/PKG-INFO +294 -0
- sb_tracker-0.1.0/src/sb_tracker.egg-info/SOURCES.txt +12 -0
- sb_tracker-0.1.0/src/sb_tracker.egg-info/dependency_links.txt +1 -0
- sb_tracker-0.1.0/src/sb_tracker.egg-info/entry_points.txt +2 -0
- sb_tracker-0.1.0/src/sb_tracker.egg-info/top_level.txt +1 -0
sb_tracker-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Simple Beads Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sb-tracker
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A minimal, standalone issue tracker for individuals. No git hooks, no complex dependencies, just one JSON file.
|
|
5
|
+
Home-page: https://github.com/sirius-cc-wu/sb-tracker
|
|
6
|
+
Author: Simple Beads Contributors
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/sirius-cc-wu/sb-tracker
|
|
9
|
+
Project-URL: Documentation, https://github.com/sirius-cc-wu/sb-tracker#readme
|
|
10
|
+
Keywords: task-tracker,issues,simple,standalone
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Requires-Python: >=3.7
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Dynamic: home-page
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
|
|
30
|
+
# SB Tracker - Simple Beads
|
|
31
|
+
|
|
32
|
+
A lightweight, standalone task tracker that stores state in a local `.sb.json` file. Perfect for individuals and agents to maintain context and track long-running or multi-step tasks without external dependencies.
|
|
33
|
+
|
|
34
|
+
## Features
|
|
35
|
+
|
|
36
|
+
- **Zero Dependencies**: Pure Python, uses only stdlib (json, os, sys, datetime)
|
|
37
|
+
- **Standalone**: One JSON file stores all state locally
|
|
38
|
+
- **Hierarchical Tasks**: Support for sub-tasks with parent-child relationships
|
|
39
|
+
- **Priority Levels**: Tasks support P0-P3 priority levels
|
|
40
|
+
- **Task Status Tracking**: Open/closed status with timestamps
|
|
41
|
+
- **Dependencies**: Link tasks with blocking dependencies
|
|
42
|
+
- **Audit Log**: Track all changes to each task with timestamps
|
|
43
|
+
- **JSON Export**: Machine-readable output for integration
|
|
44
|
+
- **Compaction**: Archive closed tasks to keep context efficient
|
|
45
|
+
|
|
46
|
+
## Installation
|
|
47
|
+
|
|
48
|
+
### From PyPI (when published)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install sb-tracker
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### From Source
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git clone https://github.com/sirius-cc-wu/sb-tracker.git
|
|
58
|
+
cd sb-tracker
|
|
59
|
+
pip install -e .
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Quick Start
|
|
63
|
+
|
|
64
|
+
Initialize a new task tracker:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
sb init
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Add a task:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
sb add "My first task"
|
|
74
|
+
sb add "High priority task" 0 "This is urgent"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
List tasks:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
sb list # Show open tasks
|
|
81
|
+
sb list --all # Show all tasks
|
|
82
|
+
sb list --json # Machine-readable output
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Complete a task:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
sb done sb-1
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Commands
|
|
92
|
+
|
|
93
|
+
### Create and Modify
|
|
94
|
+
|
|
95
|
+
- **`init`**: Initialize `.sb.json` in the current git repository root
|
|
96
|
+
- **`add <title> [priority] [description] [parent_id]`**
|
|
97
|
+
- Example: `sb add "Setup database" 1 "Configure PostgreSQL" sb-1`
|
|
98
|
+
- **`update <id> [field=value ...]`**
|
|
99
|
+
- Fields: `title`, `desc`, `p` (priority), `parent`
|
|
100
|
+
- Example: `sb update sb-1 p=0 desc="New description"`
|
|
101
|
+
- **`dep <child_id> <parent_id>`**: Add a blocking dependency
|
|
102
|
+
- Example: `sb dep sb-2 sb-1` (sb-2 blocked by sb-1)
|
|
103
|
+
|
|
104
|
+
### List and Search
|
|
105
|
+
|
|
106
|
+
- **`list [--all] [--json]`**: Show open (or all) tasks with hierarchy
|
|
107
|
+
- **`ready [--json]`**: Show tasks with no open blockers
|
|
108
|
+
- **`search <keyword> [--json]`**: Search titles and descriptions
|
|
109
|
+
|
|
110
|
+
### Reporting and Maintenance
|
|
111
|
+
|
|
112
|
+
- **`show <id> [--json]`**: Display task details with audit log
|
|
113
|
+
- **`promote <id>`**: Generate Markdown summary of task and sub-tasks
|
|
114
|
+
- **`stats`**: Overview of progress and priority breakdown
|
|
115
|
+
- **`compact`**: Archive closed tasks to save space
|
|
116
|
+
- **`done <id>`**: Mark task as closed
|
|
117
|
+
- **`rm <id>`**: Permanently delete task
|
|
118
|
+
|
|
119
|
+
## Workflow
|
|
120
|
+
|
|
121
|
+
### For Individual Sessions
|
|
122
|
+
|
|
123
|
+
1. **Breakdown**: Create tasks with hierarchies for complex work
|
|
124
|
+
```bash
|
|
125
|
+
sb add "Implement feature X" # Creates sb-1
|
|
126
|
+
sb add "Write unit tests" 1 "" sb-1 # Creates sb-1.1
|
|
127
|
+
sb add "Write integration tests" 1 "" sb-1 # Creates sb-1.2
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
2. **Execute**: Focus on high-priority ready tasks
|
|
131
|
+
```bash
|
|
132
|
+
sb ready # Show tasks with no blockers
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
3. **Track Progress**: Update as you complete steps
|
|
136
|
+
```bash
|
|
137
|
+
sb done sb-1.1
|
|
138
|
+
sb done sb-1.2
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
4. **Report**: Generate summary when handing off
|
|
142
|
+
```bash
|
|
143
|
+
sb promote sb-1
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Task ID Format
|
|
147
|
+
|
|
148
|
+
- **Root tasks**: `sb-1`, `sb-2`, etc.
|
|
149
|
+
- **Sub-tasks**: `sb-1.1`, `sb-1.2`, `sb-1.1.1`, etc.
|
|
150
|
+
- **Parent relationship**: Use parent ID in `add` or `update`
|
|
151
|
+
|
|
152
|
+
## Priority Levels
|
|
153
|
+
|
|
154
|
+
- **P0**: Critical, blocking everything
|
|
155
|
+
- **P1**: High priority, do soon
|
|
156
|
+
- **P2**: Normal priority (default)
|
|
157
|
+
- **P3**: Low priority, nice to have
|
|
158
|
+
|
|
159
|
+
## Database Format
|
|
160
|
+
|
|
161
|
+
Tasks are stored in `.sb.json` (found in git repository root) with this schema:
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"issues": [
|
|
166
|
+
{
|
|
167
|
+
"id": "sb-1",
|
|
168
|
+
"title": "Task title",
|
|
169
|
+
"description": "Optional description",
|
|
170
|
+
"priority": 1,
|
|
171
|
+
"status": "open",
|
|
172
|
+
"depends_on": ["sb-2"],
|
|
173
|
+
"parent": "sb-1",
|
|
174
|
+
"created_at": "2026-02-04T18:40:10.692Z",
|
|
175
|
+
"closed_at": "2026-02-04T19:40:10.692Z",
|
|
176
|
+
"events": [
|
|
177
|
+
{
|
|
178
|
+
"type": "created",
|
|
179
|
+
"timestamp": "2026-02-04T18:40:10.692Z",
|
|
180
|
+
"title": "Task title"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
"compaction_log": []
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Examples
|
|
190
|
+
|
|
191
|
+
### Hierarchical Task Breakdown
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
$ sb add "Build authentication system"
|
|
195
|
+
Created sb-1: Build authentication system (P2)
|
|
196
|
+
|
|
197
|
+
$ sb add "Design schema" 1 "" sb-1
|
|
198
|
+
Created sb-1.1: Design schema (P1)
|
|
199
|
+
|
|
200
|
+
$ sb add "Implement login endpoint" 1 "" sb-1
|
|
201
|
+
Created sb-1.2: Implement login endpoint (P1)
|
|
202
|
+
|
|
203
|
+
$ sb add "Write tests" 2 "" sb-1
|
|
204
|
+
Created sb-1.3: Write tests (P2)
|
|
205
|
+
|
|
206
|
+
$ sb list
|
|
207
|
+
ID P Status Deps Title
|
|
208
|
+
sb-1 2 open Build authentication system
|
|
209
|
+
sb-1.1 1 open Design schema
|
|
210
|
+
sb-1.2 1 open Implement login endpoint
|
|
211
|
+
sb-1.3 2 open Write tests
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Blocking Dependencies
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
$ sb add "Deploy to production" 1
|
|
218
|
+
Created sb-2: Deploy to production (P1)
|
|
219
|
+
|
|
220
|
+
$ sb dep sb-2 sb-1
|
|
221
|
+
Linked sb-2 -> depends on -> sb-1
|
|
222
|
+
|
|
223
|
+
$ sb ready
|
|
224
|
+
No issues found matching criteria.
|
|
225
|
+
|
|
226
|
+
$ sb done sb-1.1
|
|
227
|
+
Updated sb-1.1 status to closed
|
|
228
|
+
|
|
229
|
+
$ sb done sb-1.2
|
|
230
|
+
Updated sb-1.2 status to closed
|
|
231
|
+
|
|
232
|
+
$ sb done sb-1.3
|
|
233
|
+
Updated sb-1.3 status to closed
|
|
234
|
+
|
|
235
|
+
$ sb done sb-1
|
|
236
|
+
Updated sb-1 status to closed
|
|
237
|
+
|
|
238
|
+
$ sb ready
|
|
239
|
+
ID P Status Deps Title
|
|
240
|
+
sb-2 1 open Deploy to production
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Task Reporting
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
$ sb promote sb-1
|
|
247
|
+
### [sb-1] Build authentication system
|
|
248
|
+
**Status:** closed | **Priority:** P2
|
|
249
|
+
|
|
250
|
+
#### Sub-tasks
|
|
251
|
+
- [x] sb-1.1: Design schema
|
|
252
|
+
- [x] sb-1.2: Implement login endpoint
|
|
253
|
+
- [x] sb-1.3: Write tests
|
|
254
|
+
|
|
255
|
+
#### Activity Log
|
|
256
|
+
- 2026-02-04: Created
|
|
257
|
+
- 2026-02-04: Status: open -> closed
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## License
|
|
261
|
+
|
|
262
|
+
MIT License - See LICENSE file for details
|
|
263
|
+
|
|
264
|
+
## Contributing
|
|
265
|
+
|
|
266
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
267
|
+
|
|
268
|
+
## Troubleshooting
|
|
269
|
+
|
|
270
|
+
### `.sb.json` not found
|
|
271
|
+
|
|
272
|
+
The tracker looks for `.sb.json` starting from the current directory and walking up the directory tree until it finds a `.git` directory (to keep data project-local). If not found, it creates `.sb.json` in the current working directory.
|
|
273
|
+
|
|
274
|
+
To initialize:
|
|
275
|
+
```bash
|
|
276
|
+
cd /your/project
|
|
277
|
+
sb init
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Task not found error
|
|
281
|
+
|
|
282
|
+
Make sure you're using the correct task ID:
|
|
283
|
+
```bash
|
|
284
|
+
$ sb list --json # See all task IDs
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Compaction
|
|
288
|
+
|
|
289
|
+
Archive old tasks to reduce token context:
|
|
290
|
+
```bash
|
|
291
|
+
sb compact
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
This moves all closed tasks to a `compaction_log` and keeps them accessible via `list --all` or `list --json`.
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# SB Tracker - Simple Beads
|
|
2
|
+
|
|
3
|
+
A lightweight, standalone task tracker that stores state in a local `.sb.json` file. Perfect for individuals and agents to maintain context and track long-running or multi-step tasks without external dependencies.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Zero Dependencies**: Pure Python, uses only stdlib (json, os, sys, datetime)
|
|
8
|
+
- **Standalone**: One JSON file stores all state locally
|
|
9
|
+
- **Hierarchical Tasks**: Support for sub-tasks with parent-child relationships
|
|
10
|
+
- **Priority Levels**: Tasks support P0-P3 priority levels
|
|
11
|
+
- **Task Status Tracking**: Open/closed status with timestamps
|
|
12
|
+
- **Dependencies**: Link tasks with blocking dependencies
|
|
13
|
+
- **Audit Log**: Track all changes to each task with timestamps
|
|
14
|
+
- **JSON Export**: Machine-readable output for integration
|
|
15
|
+
- **Compaction**: Archive closed tasks to keep context efficient
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
### From PyPI (when published)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pip install sb-tracker
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### From Source
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
git clone https://github.com/sirius-cc-wu/sb-tracker.git
|
|
29
|
+
cd sb-tracker
|
|
30
|
+
pip install -e .
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
Initialize a new task tracker:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
sb init
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Add a task:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
sb add "My first task"
|
|
45
|
+
sb add "High priority task" 0 "This is urgent"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
List tasks:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
sb list # Show open tasks
|
|
52
|
+
sb list --all # Show all tasks
|
|
53
|
+
sb list --json # Machine-readable output
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Complete a task:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
sb done sb-1
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Commands
|
|
63
|
+
|
|
64
|
+
### Create and Modify
|
|
65
|
+
|
|
66
|
+
- **`init`**: Initialize `.sb.json` in the current git repository root
|
|
67
|
+
- **`add <title> [priority] [description] [parent_id]`**
|
|
68
|
+
- Example: `sb add "Setup database" 1 "Configure PostgreSQL" sb-1`
|
|
69
|
+
- **`update <id> [field=value ...]`**
|
|
70
|
+
- Fields: `title`, `desc`, `p` (priority), `parent`
|
|
71
|
+
- Example: `sb update sb-1 p=0 desc="New description"`
|
|
72
|
+
- **`dep <child_id> <parent_id>`**: Add a blocking dependency
|
|
73
|
+
- Example: `sb dep sb-2 sb-1` (sb-2 blocked by sb-1)
|
|
74
|
+
|
|
75
|
+
### List and Search
|
|
76
|
+
|
|
77
|
+
- **`list [--all] [--json]`**: Show open (or all) tasks with hierarchy
|
|
78
|
+
- **`ready [--json]`**: Show tasks with no open blockers
|
|
79
|
+
- **`search <keyword> [--json]`**: Search titles and descriptions
|
|
80
|
+
|
|
81
|
+
### Reporting and Maintenance
|
|
82
|
+
|
|
83
|
+
- **`show <id> [--json]`**: Display task details with audit log
|
|
84
|
+
- **`promote <id>`**: Generate Markdown summary of task and sub-tasks
|
|
85
|
+
- **`stats`**: Overview of progress and priority breakdown
|
|
86
|
+
- **`compact`**: Archive closed tasks to save space
|
|
87
|
+
- **`done <id>`**: Mark task as closed
|
|
88
|
+
- **`rm <id>`**: Permanently delete task
|
|
89
|
+
|
|
90
|
+
## Workflow
|
|
91
|
+
|
|
92
|
+
### For Individual Sessions
|
|
93
|
+
|
|
94
|
+
1. **Breakdown**: Create tasks with hierarchies for complex work
|
|
95
|
+
```bash
|
|
96
|
+
sb add "Implement feature X" # Creates sb-1
|
|
97
|
+
sb add "Write unit tests" 1 "" sb-1 # Creates sb-1.1
|
|
98
|
+
sb add "Write integration tests" 1 "" sb-1 # Creates sb-1.2
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
2. **Execute**: Focus on high-priority ready tasks
|
|
102
|
+
```bash
|
|
103
|
+
sb ready # Show tasks with no blockers
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
3. **Track Progress**: Update as you complete steps
|
|
107
|
+
```bash
|
|
108
|
+
sb done sb-1.1
|
|
109
|
+
sb done sb-1.2
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
4. **Report**: Generate summary when handing off
|
|
113
|
+
```bash
|
|
114
|
+
sb promote sb-1
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Task ID Format
|
|
118
|
+
|
|
119
|
+
- **Root tasks**: `sb-1`, `sb-2`, etc.
|
|
120
|
+
- **Sub-tasks**: `sb-1.1`, `sb-1.2`, `sb-1.1.1`, etc.
|
|
121
|
+
- **Parent relationship**: Use parent ID in `add` or `update`
|
|
122
|
+
|
|
123
|
+
## Priority Levels
|
|
124
|
+
|
|
125
|
+
- **P0**: Critical, blocking everything
|
|
126
|
+
- **P1**: High priority, do soon
|
|
127
|
+
- **P2**: Normal priority (default)
|
|
128
|
+
- **P3**: Low priority, nice to have
|
|
129
|
+
|
|
130
|
+
## Database Format
|
|
131
|
+
|
|
132
|
+
Tasks are stored in `.sb.json` (found in git repository root) with this schema:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"issues": [
|
|
137
|
+
{
|
|
138
|
+
"id": "sb-1",
|
|
139
|
+
"title": "Task title",
|
|
140
|
+
"description": "Optional description",
|
|
141
|
+
"priority": 1,
|
|
142
|
+
"status": "open",
|
|
143
|
+
"depends_on": ["sb-2"],
|
|
144
|
+
"parent": "sb-1",
|
|
145
|
+
"created_at": "2026-02-04T18:40:10.692Z",
|
|
146
|
+
"closed_at": "2026-02-04T19:40:10.692Z",
|
|
147
|
+
"events": [
|
|
148
|
+
{
|
|
149
|
+
"type": "created",
|
|
150
|
+
"timestamp": "2026-02-04T18:40:10.692Z",
|
|
151
|
+
"title": "Task title"
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"compaction_log": []
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Examples
|
|
161
|
+
|
|
162
|
+
### Hierarchical Task Breakdown
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
$ sb add "Build authentication system"
|
|
166
|
+
Created sb-1: Build authentication system (P2)
|
|
167
|
+
|
|
168
|
+
$ sb add "Design schema" 1 "" sb-1
|
|
169
|
+
Created sb-1.1: Design schema (P1)
|
|
170
|
+
|
|
171
|
+
$ sb add "Implement login endpoint" 1 "" sb-1
|
|
172
|
+
Created sb-1.2: Implement login endpoint (P1)
|
|
173
|
+
|
|
174
|
+
$ sb add "Write tests" 2 "" sb-1
|
|
175
|
+
Created sb-1.3: Write tests (P2)
|
|
176
|
+
|
|
177
|
+
$ sb list
|
|
178
|
+
ID P Status Deps Title
|
|
179
|
+
sb-1 2 open Build authentication system
|
|
180
|
+
sb-1.1 1 open Design schema
|
|
181
|
+
sb-1.2 1 open Implement login endpoint
|
|
182
|
+
sb-1.3 2 open Write tests
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Blocking Dependencies
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
$ sb add "Deploy to production" 1
|
|
189
|
+
Created sb-2: Deploy to production (P1)
|
|
190
|
+
|
|
191
|
+
$ sb dep sb-2 sb-1
|
|
192
|
+
Linked sb-2 -> depends on -> sb-1
|
|
193
|
+
|
|
194
|
+
$ sb ready
|
|
195
|
+
No issues found matching criteria.
|
|
196
|
+
|
|
197
|
+
$ sb done sb-1.1
|
|
198
|
+
Updated sb-1.1 status to closed
|
|
199
|
+
|
|
200
|
+
$ sb done sb-1.2
|
|
201
|
+
Updated sb-1.2 status to closed
|
|
202
|
+
|
|
203
|
+
$ sb done sb-1.3
|
|
204
|
+
Updated sb-1.3 status to closed
|
|
205
|
+
|
|
206
|
+
$ sb done sb-1
|
|
207
|
+
Updated sb-1 status to closed
|
|
208
|
+
|
|
209
|
+
$ sb ready
|
|
210
|
+
ID P Status Deps Title
|
|
211
|
+
sb-2 1 open Deploy to production
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Task Reporting
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
$ sb promote sb-1
|
|
218
|
+
### [sb-1] Build authentication system
|
|
219
|
+
**Status:** closed | **Priority:** P2
|
|
220
|
+
|
|
221
|
+
#### Sub-tasks
|
|
222
|
+
- [x] sb-1.1: Design schema
|
|
223
|
+
- [x] sb-1.2: Implement login endpoint
|
|
224
|
+
- [x] sb-1.3: Write tests
|
|
225
|
+
|
|
226
|
+
#### Activity Log
|
|
227
|
+
- 2026-02-04: Created
|
|
228
|
+
- 2026-02-04: Status: open -> closed
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## License
|
|
232
|
+
|
|
233
|
+
MIT License - See LICENSE file for details
|
|
234
|
+
|
|
235
|
+
## Contributing
|
|
236
|
+
|
|
237
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
238
|
+
|
|
239
|
+
## Troubleshooting
|
|
240
|
+
|
|
241
|
+
### `.sb.json` not found
|
|
242
|
+
|
|
243
|
+
The tracker looks for `.sb.json` starting from the current directory and walking up the directory tree until it finds a `.git` directory (to keep data project-local). If not found, it creates `.sb.json` in the current working directory.
|
|
244
|
+
|
|
245
|
+
To initialize:
|
|
246
|
+
```bash
|
|
247
|
+
cd /your/project
|
|
248
|
+
sb init
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Task not found error
|
|
252
|
+
|
|
253
|
+
Make sure you're using the correct task ID:
|
|
254
|
+
```bash
|
|
255
|
+
$ sb list --json # See all task IDs
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Compaction
|
|
259
|
+
|
|
260
|
+
Archive old tasks to reduce token context:
|
|
261
|
+
```bash
|
|
262
|
+
sb compact
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
This moves all closed tasks to a `compaction_log` and keeps them accessible via `list --all` or `list --json`.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=45", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "sb-tracker"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "A minimal, standalone issue tracker for individuals. No git hooks, no complex dependencies, just one JSON file."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
authors = [
|
|
12
|
+
{name = "Simple Beads Contributors"}
|
|
13
|
+
]
|
|
14
|
+
keywords = ["task-tracker", "issues", "simple", "standalone"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Environment :: Console",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"License :: OSI Approved :: MIT License",
|
|
20
|
+
"Operating System :: OS Independent",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.7",
|
|
23
|
+
"Programming Language :: Python :: 3.8",
|
|
24
|
+
"Programming Language :: Python :: 3.9",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
28
|
+
]
|
|
29
|
+
requires-python = ">=3.7"
|
|
30
|
+
dependencies = []
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://github.com/sirius-cc-wu/sb-tracker"
|
|
34
|
+
Documentation = "https://github.com/sirius-cc-wu/sb-tracker#readme"
|
|
35
|
+
|
|
36
|
+
[project.scripts]
|
|
37
|
+
sb = "sb_tracker.cli:main"
|
|
38
|
+
|
|
39
|
+
[tool.setuptools]
|
|
40
|
+
package-dir = {"" = "src"}
|
|
41
|
+
|
|
42
|
+
[tool.setuptools.packages]
|
|
43
|
+
find = {where = ["src"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from setuptools import setup, find_packages
|
|
2
|
+
|
|
3
|
+
setup(
|
|
4
|
+
name="sb-tracker",
|
|
5
|
+
version="0.1.0",
|
|
6
|
+
package_dir={"": "src"},
|
|
7
|
+
packages=find_packages(where="src"),
|
|
8
|
+
python_requires=">=3.7",
|
|
9
|
+
entry_points={
|
|
10
|
+
"console_scripts": [
|
|
11
|
+
"sb=sb_tracker.cli:main",
|
|
12
|
+
],
|
|
13
|
+
},
|
|
14
|
+
author="Simple Beads Contributors",
|
|
15
|
+
description="A minimal, standalone issue tracker for individuals",
|
|
16
|
+
long_description=open("README.md").read(),
|
|
17
|
+
long_description_content_type="text/markdown",
|
|
18
|
+
url="https://github.com/sirius-cc-wu/sb-tracker",
|
|
19
|
+
license="MIT",
|
|
20
|
+
classifiers=[
|
|
21
|
+
"Development Status :: 4 - Beta",
|
|
22
|
+
"Environment :: Console",
|
|
23
|
+
"Intended Audience :: Developers",
|
|
24
|
+
"License :: OSI Approved :: MIT License",
|
|
25
|
+
"Operating System :: OS Independent",
|
|
26
|
+
"Programming Language :: Python :: 3",
|
|
27
|
+
"Programming Language :: Python :: 3.7",
|
|
28
|
+
"Programming Language :: Python :: 3.8",
|
|
29
|
+
"Programming Language :: Python :: 3.9",
|
|
30
|
+
"Programming Language :: Python :: 3.10",
|
|
31
|
+
"Programming Language :: Python :: 3.11",
|
|
32
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
33
|
+
],
|
|
34
|
+
)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Simple Beads (sb) - A minimal, standalone issue tracker for individuals.
|
|
3
|
+
No git hooks, no complex dependencies, just one JSON file.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
__version__ = "0.1.0"
|
|
7
|
+
__author__ = "Simple Beads Contributors"
|
|
8
|
+
|
|
9
|
+
from .cli import main
|
|
10
|
+
|
|
11
|
+
__all__ = ["main"]
|