Task Terminal - A local-first developer tool for generating and tracking task IDs
Project description
Task Terminal (tt)
A local-first developer tool for generating and tracking task IDs that seamlessly link to GitHub PRs.
Task Terminal (tt) is a polished terminal application that helps developers maintain a monotonically increasing, globally unique sequence of task IDs across all their projects, with automatic GitHub PR detection and linking.
✨ Features
- 🎯 Global Task IDs - Monotonically increasing IDs (tt-1, tt-2, tt-3...) that never reset
- 💾 Local SQLite Storage - All data stored locally in
~/.tt/tasks.db - 🔗 GitHub PR Integration - Automatic detection and linking of PRs via GitHub CLI
- 🚀 Cross-Project - One global sequence across all your repositories
- 🔍 PR Management - View, link, and open PRs directly from the terminal
📦 Installation
Prerequisites
- Python 3.9 or higher
- GitHub CLI (optional, for PR features)
Install from Source
git clone https://github.com/yourusername/TerminalTask.git
cd TerminalTask
pip install -e .
Setup GitHub CLI (Optional)
For PR detection and linking features:
# Windows
winget install --id GitHub.cli
# macOS
brew install gh
# Authenticate
gh auth login
Quick Start
-
Install tt globally
pip install -e .
-
Navigate to your project
cd ~/projects/your-repo
-
Launch Task Terminal
tt
-
Create your first task
- Navigate to "Create Task" with arrow keys
- Press Enter or 'g' to generate a task ID
- The ID (e.g.,
tt-1) is copied to your clipboard
-
Use the task ID in your workflow
git checkout -b feature/tt-1-implement-auth # Make your changes git push origin feature/tt-1-implement-auth
-
Link the PR
- Create a PR on GitHub
- Open tt and navigate to "PR Inbox"
- Select your PR and press Enter or 'a' to attach
📖 Usage Guide
Main Menu
Navigate with arrow keys and select with Enter:
- Create Task - Generate a new task ID
- Tasks - View all tasks and their status
- PR Inbox - Detect and link PRs to tasks
- Settings - Coming soon
- Quit - Exit the application
Shortcuts: q or Escape to quit
Create Task Screen
Shortcuts:
Enterorg- Generate a new task IDEscape- Go back to main menu
The generated task ID is automatically copied to your clipboard for immediate use.
Tasks Screen
View all your tasks with their status, creation date, and linked PRs.
Shortcuts:
Arrow keys- Navigate tasksd- Delete the highlighted tasko- Open the linked PR in your browserr- Refresh the task listEscape- Go back to main menu
PR Inbox Screen
Automatically scans for PRs in the current repository that match your open task IDs.
Shortcuts:
Arrow keys- Navigate PRsEnterora- Attach highlighted PR to its taski- Ignore the highlighted PR (session only)r- Refresh and rescan for PRsEscape- Go back to main menu
🎯 Workflow Example
# 1. Start in your project directory
cd ~/projects/my-api
# 2. Generate a task ID
tt
# Navigate to "Create Task", press Enter
# Result: tt-42 (copied to clipboard)
# 3. Create a branch with the task ID
git checkout -b feature/tt-42-add-authentication
# 4. Implement your feature
# ... make changes ...
git add .
git commit -m "Add JWT authentication for API"
git push origin feature/tt-42-add-authentication
# 5. Create a PR on GitHub
gh pr create --title "tt-42: Add authentication" --body "Implements JWT auth"
# 6. Link the PR in tt
tt
# Navigate to "PR Inbox"
# Select the PR with arrow keys
# Press Enter to attach
# 7. View your tasks
# Navigate to "Tasks"
# See tt-42 status: linked, with PR #123
# Press 'o' to open the PR in your browser
🔧 Development
Setup Development Environment
# Clone the repository
git clone https://github.com/suamnthaka/TerminalTask.git
cd TerminalTask
# Create a virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"
Code Style
# Format code
ruff format
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built with Textual - An amazing TUI framework
- Inspired by the need for simple, local-first developer tools
- GitHub CLI integration powered by gh
📞 Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
🗺️ Roadmap
- Task search and filtering
- Export tasks to JSON/CSV
- Multi-PR support per task
Project details
Release history Release notifications | RSS feed
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 task_terminal-0.1.1.tar.gz.
File metadata
- Download URL: task_terminal-0.1.1.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df8d38ddaf936364aede1d22c765bd25530eeb3d566b33270d5bf5eb25470c6a
|
|
| MD5 |
6ebd645a640e080a1a7f05834faf3f74
|
|
| BLAKE2b-256 |
638e7f28cc285a1b897c5458a9d8e7170577ba27a2e648900ff090db684e73bf
|
File details
Details for the file task_terminal-0.1.1-py3-none-any.whl.
File metadata
- Download URL: task_terminal-0.1.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec588b38c970547f50a274501f4e19e15eb99d48a9b1d5d77dd6997be5407201
|
|
| MD5 |
3d3c756347ff33800f09b51472ef7b7f
|
|
| BLAKE2b-256 |
1a05bdd8ad964b6b7ccf1de0e425851dc36610d9751411de79be12ee7f8b0d37
|