Lightweight task/issue tracking tool with JSON Lines storage
Project description
Ticketlog
Lightweight task/issue tracking tool with JSON Lines storage. No daemon, no database - all operations in-memory.
Installation
cd ticketlog
uv sync
uv pip install -e .
This installs the tl command.
Usage
Create a task
tl create "Fix login bug" --type bug --priority 0
tl create "Add user profile" --type feature --priority 2 --assignee alice
tl create "Write docs" --type chore --labels "documentation,help-wanted"
List tasks
# Default: show open and in_progress tasks
tl list
# Show all tasks
tl list --all
# Filter by status
tl list --status closed
# Filter by type
tl list --type bug
# Filter by assignee
tl list --assignee alice
# Filter by label
tl list --label documentation
Show task details
tl show tl-1
Update a task
# Change status
tl update tl-1 --status in_progress
# Update multiple fields
tl update tl-1 --title "New title" --priority P1 --assignee bob
# Add/remove labels
tl update tl-1 --add-label urgent --add-label frontend
tl update tl-1 --remove-label old-label
# Add notes
tl update tl-1 --notes "Working on this, needs API changes"
Close tasks
# Close single task
tl close tl-1
# Close multiple tasks
tl close tl-1 tl-2 tl-3
Show tasks ready to work on
Lists tasks with status=open and no unresolved dependencies, sorted by priority.
tl ready
Manage dependencies
# Add dependency (tl-4 depends on tl-3, i.e., tl-3 blocks tl-4)
tl dep add tl-4 tl-3
# Remove dependency
tl dep remove tl-4 tl-3
# List dependencies for a task
tl dep list tl-4
JSON output
All commands support --json flag for machine-readable output:
tl list --json | jq .
tl show tl-1 --json
tl create "New task" --json
Data Model
Tasks are stored in ticketlog.jsonl (JSON Lines format) in the current directory.
Each task has:
id: Auto-incrementing ID (tl-1, tl-2, ...)title: Task titledescription: Detailed descriptiontype: task, bug, feature, epic, or chorestatus: open, in_progress, to_review, or closedpriority: 0-4 (0=highest/critical, 2=medium, 4=backlog)assignee: Username or nulllabels: List of label stringscreated_at,updated_at,closed_at: ISO 8601 timestampsdependencies: List of task IDs this task depends onnotes: Additional notes
Priority Levels
- P0 (0): Critical - Highest priority
- P1 (1): High priority
- P2 (2): Medium priority (default)
- P3 (3): Low priority
- P4 (4): Backlog
Accept both formats: --priority 0 or --priority P0
File Format
Tasks are stored in append-only JSON Lines format:
- One JSON object per line
- Updates append new versions
- Latest version is used when loading
- No compaction needed for normal use
Examples
# Create project tasks
tl create "Design API" --type feature --priority 1
tl create "Implement API" --type feature --priority 1
tl create "Write tests" --type task --priority 2
tl create "Deploy to staging" --type task --priority 2
# Set up dependencies
tl dep add tl-2 tl-1 # Implementation depends on design
tl dep add tl-3 tl-2 # Tests depend on implementation
tl dep add tl-4 tl-3 # Deploy depends on tests
# Check what's ready to work on
tl ready # Shows tl-1 (Design API)
# Start working on it
tl update tl-1 --status in_progress --assignee alice
# Complete it
tl close tl-1
# Check again
tl ready # Now shows tl-2 (Implement API)
Development
Project structure:
ticketlog/
├── pyproject.toml
├── README.md
└── src/
└── ticketlog/
├── __init__.py
├── __main__.py
├── cli.py # CLI argument parsing
├── models.py # Task data model
├── storage.py # JSON Lines storage
├── utils.py # Formatting helpers
└── commands/ # Command implementations
├── create.py
├── list.py
├── show.py
├── update.py
├── close.py
├── ready.py
└── dep.py
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ticketlog-0.1.0.tar.gz.
File metadata
- Download URL: ticketlog-0.1.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28f1dddc4b22c3414f3f1ca55c374af86fa8677e20283be2ddd1ab126fb197d8
|
|
| MD5 |
4c3462c2f976e7a979f4599505bc8aaf
|
|
| BLAKE2b-256 |
550c5929100b7022f5c06b909eef99c30a4b96334ad1a5b419b34d8b374ed3d0
|
Provenance
The following attestation bundles were made for ticketlog-0.1.0.tar.gz:
Publisher:
publish.yml on eliasdorneles/ticketlog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ticketlog-0.1.0.tar.gz -
Subject digest:
28f1dddc4b22c3414f3f1ca55c374af86fa8677e20283be2ddd1ab126fb197d8 - Sigstore transparency entry: 924884370
- Sigstore integration time:
-
Permalink:
eliasdorneles/ticketlog@913eae690e591eb9455bf3477f5a0c0ffbb16a3d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eliasdorneles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@913eae690e591eb9455bf3477f5a0c0ffbb16a3d -
Trigger Event:
release
-
Statement type:
File details
Details for the file ticketlog-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ticketlog-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7b09393bb8a93fe369bbdf2d20db6b759582b2730ddd16802f39a0a9213dd21
|
|
| MD5 |
e9a9046496e6b63869871ee8d6a1802a
|
|
| BLAKE2b-256 |
8796e1cf27d3259129077aff0bd1113144023a5589671aea4f4eb445b0060079
|
Provenance
The following attestation bundles were made for ticketlog-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on eliasdorneles/ticketlog
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ticketlog-0.1.0-py3-none-any.whl -
Subject digest:
b7b09393bb8a93fe369bbdf2d20db6b759582b2730ddd16802f39a0a9213dd21 - Sigstore transparency entry: 924884411
- Sigstore integration time:
-
Permalink:
eliasdorneles/ticketlog@913eae690e591eb9455bf3477f5a0c0ffbb16a3d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/eliasdorneles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@913eae690e591eb9455bf3477f5a0c0ffbb16a3d -
Trigger Event:
release
-
Statement type: