Skip to main content

Task Terminal - A local-first developer tool for generating and tracking task IDs

Project description

Task Terminal (tt)

License: MIT Python 3.9+

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

  1. Install tt globally

    pip install -e .
    
  2. Navigate to your project

    cd ~/projects/your-repo
    
  3. Launch Task Terminal

    tt
    
  4. 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
  5. 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
    
  6. 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:

  • Enter or g - Generate a new task ID
  • Escape - 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 tasks
  • d - Delete the highlighted task
  • o - Open the linked PR in your browser
  • r - Refresh the task list
  • Escape - 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 PRs
  • Enter or a - Attach highlighted PR to its task
  • i - Ignore the highlighted PR (session only)
  • r - Refresh and rescan for PRs
  • Escape - 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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

🗺️ Roadmap

  • Task search and filtering
  • Export tasks to JSON/CSV
  • Multi-PR support per task

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

task_terminal-0.1.1.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

task_terminal-0.1.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

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

Hashes for task_terminal-0.1.1.tar.gz
Algorithm Hash digest
SHA256 df8d38ddaf936364aede1d22c765bd25530eeb3d566b33270d5bf5eb25470c6a
MD5 6ebd645a640e080a1a7f05834faf3f74
BLAKE2b-256 638e7f28cc285a1b897c5458a9d8e7170577ba27a2e648900ff090db684e73bf

See more details on using hashes here.

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

Hashes for task_terminal-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ec588b38c970547f50a274501f4e19e15eb99d48a9b1d5d77dd6997be5407201
MD5 3d3c756347ff33800f09b51472ef7b7f
BLAKE2b-256 1a05bdd8ad964b6b7ccf1de0e425851dc36610d9751411de79be12ee7f8b0d37

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page