tedi

Crates.iotedi
lib.rstedi
version0.13.0
created_at2026-01-19 20:21:02.20565+00
updated_at2026-01-25 20:36:56.121487+00
descriptionPersonal productivity CLI for task tracking, time management, and GitHub issue integration
homepage
repositoryhttps://github.com/valeratrades/tedi
max_upload_size
id2055243
size791,281
Valeriy Sakharov (valeratrades)

documentation

README

tedi

Minimum Supported Rust Version crates.io docs.rs Lines Of Code
ci errors ci warnings

Personal productivity CLI for task tracking, time management, and GitHub issue integration.

Features

  • Blocker Tree: Stack-based task management with priority tracking. Integrates with Clockify for automatic time tracking.
  • GitHub Issues: Edit GitHub issues locally as markdown/typst files with full sync support (body, comments, sub-issues, state changes).
  • Milestones: Sprint planning with daily/weekly/monthly/quarterly/yearly milestone tracking via GitHub milestones.
  • Manual Stats: Track daily performance metrics (EV, focus time, etc.) with historical data.
  • Performance Evaluation: Screenshot-based productivity tracking with AI analysis.
  • Clockify Integration: Automatic time tracking tied to your current blocker task.

Installation

nix build

Configuration

Create ~/.config/todo/settings.toml:

# Required for GitHub integration
github_token = "ghp_..."

# Required for Clockify integration
clockify_api_key = "..."
clockify_workspace_id = "..."

# Optional
default_extension = "md"  # or "typ" for typst

Usage

# Blocker management (main workflow)
todo blocker add "implement feature X"    # Add a new blocker
todo blocker                              # Open current blocker file in $EDITOR
todo blocker pop                          # Complete current blocker, move to next
todo blocker set projectname              # Switch to different project

# GitHub Issues
todo open https://github.com/owner/repo/issues/123  # Fetch and open issue
todo open -t owner/repo/my-issue                    # Create new issue (touch mode)
todo open pattern                                   # Fuzzy find local issue

# Milestones
todo milestones                           # Show current milestones
todo milestones push "goal description"   # Add goal to current milestone

# Time tracking
todo clockify start                       # Start tracking current blocker
todo clockify stop                        # Stop tracking

# Shell integration (add to your shell rc)
eval "$(todo init zsh)"                   # Or: bash, fish

Tips

Vim Fold Markers

closed issues/sub-issues wrap their content in vim fold markers using {{{always suffix. To auto-close these folds in nvim, add:

vim.opt.foldtext = [[substitute(getline(v:foldstart),'{{{]] .. [[always\s*$','{{{','')]] -- Custom foldtext that strips "always" from fold markers
vim.api.nvim_create_autocmd("BufReadPost", {
	callback = function()
		vim.defer_fn(function()
			vim.cmd([[silent! g/{{]] .. [[{always$/normal! zc]])
		end, 10)
	end,
})

This repository follows my best practices and Tiger Style (except "proper capitalization for acronyms": (VsrState, not VSRState) and formatting). For project's architecture, see ARCHITECTURE.md.

License

Licensed under Blue Oak 1.0.0
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.
Commit count: 694

cargo fmt