{"id":26512971,"url":"https://github.com/murapadev/ztodo","last_synced_at":"2026-05-06T13:15:39.953Z","repository":{"id":280504582,"uuid":"942220619","full_name":"murapadev/ZTodo","owner":"murapadev","description":"A powerful, SQLite-based task management plugin for Oh-My-Zsh that provides persistent storage, priority levels, categories, deadlines, and efficient search capabilities. Designed for developers who live in the terminal and want a seamless, integrated todo management experience.","archived":false,"fork":false,"pushed_at":"2025-03-03T19:40:05.000Z","size":23,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-20T14:42:40.136Z","etag":null,"topics":["cli","oh-my-zsh","oh-my-zsh-custom","oh-my-zsh-plugin","productivity","shell","task-management","terminal","todo","zsh","zsh-plugin","ztodo"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/murapadev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-03T19:09:05.000Z","updated_at":"2025-03-15T03:42:06.000Z","dependencies_parsed_at":"2025-03-03T20:36:35.675Z","dependency_job_id":null,"html_url":"https://github.com/murapadev/ZTodo","commit_stats":null,"previous_names":["murapa96/ztodo","murapadev/ztodo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/murapadev%2FZTodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/murapadev%2FZTodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/murapadev%2FZTodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/murapadev%2FZTodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/murapadev","download_url":"https://codeload.github.com/murapadev/ZTodo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244734196,"owners_count":20501018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","oh-my-zsh","oh-my-zsh-custom","oh-my-zsh-plugin","productivity","shell","task-management","terminal","todo","zsh","zsh-plugin","ztodo"],"created_at":"2025-03-21T04:19:15.659Z","updated_at":"2025-12-02T14:01:45.861Z","avatar_url":"https://github.com/murapadev.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZTodo - Oh-My-Zsh Todo Plugin\n\nA SQLite-based todo plugin for Oh-My-Zsh, providing persistent storage and efficient task management.\n\n## Requirements\n\n- Oh-My-Zsh\n- SQLite3\n- Zsh\n\n## Installation\n\n1. Install sqlite3 if not already installed:\n\n   ```bash\n   # Ubuntu/Debian\n   sudo apt install sqlite3\n\n   # CentOS/RHEL\n   sudo yum install sqlite\n\n   # Arch\n   sudo pacman -Sy sqlite\n\n   # macOS\n   brew install sqlite\n\n   ```\n\n2. Clone this repository into your Oh-My-Zsh custom plugins directory:\n\n   ```bash\n   git clone https://github.com/murapa96/ztodo ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ztodo\n   ```\n\n3. Add `ztodo` to your plugins array in `~/.zshrc`:\n\n   ```bash\n   plugins=(... ztodo)\n   ```\n\n4. Reload your shell:\n   ```bash\n   source ~/.zshrc\n   ```\n\n## Usage\n\n- `ztodo add` - Add a new todo item\n- `ztodo list` - List all active todo items\n- `ztodo remove \u003cid\u003e` - Remove a specific todo item\n- `ztodo complete \u003cid\u003e` - Mark a todo item as complete\n- `ztodo clear` - Remove expired and completed tasks\n- `ztodo search \u003ckeyword\u003e` - Search tasks by keyword\n- `ztodo timer \u003cstart|stop|status\u003e [id]` - Time tracking utilities\n- `ztodo sub \u003cadd|list|complete|remove\u003e ...` - Manage subtasks\n- `ztodo export [csv] [file]` - Export tasks (CSV)\n- `ztodo import csv \u003cfile\u003e` - Import tasks from CSV\n- `ztodo export json [file]` - Export tasks to JSON\n- `ztodo import json \u003cfile\u003e` - Import tasks from JSON (same shape as export)\n- `ztodo share export \u003cid\u003e` - Generate a share code (Base64 JSON) for one task\n- `ztodo share import \u003ccode\u003e` - Import a task from a share code\n- `ztodo tui` - Minimal interactive UI (requires `fzf`)\n- `ztodo projects` - List projects with task counts\n- `ztodo history [id]` - Show recent events (optionally per task)\n- `ztodo template create|apply|list` - Manage task templates\n- `ztodo calendar [month|week] [date]` - ASCII calendar (deadlines)\n- `ztodo focus \u003cid\u003e` / `ztodo unfocus` / `ztodo context` - Per-task shell history context\n- `ztodo report \u003ctoday|week\u003e` - Compact per-task summary (commands/time)\n- `ztodo help` - Show help message\n\n## Features\n\n- SQLite-based persistent storage\n- Color-coded priority levels\n- Task categorization\n- Deadline tracking\n- Task completion tracking\n- Efficient search capabilities\n- Automatic cleanup of expired tasks\n- Recurring tasks (basic: daily/weekly/monthly when completing a task)\n- Time tracking (start/stop/status with per-task minutes)\n- Subtasks (create/list/complete/remove)\n- CSV export/import\n- JSON export/import\n- Offline share codes (Base64 JSON per task)\n- Minimal TUI via `fzf` (complete or delete)\n- Per-task shell history (opt-in, via focus)\n\n## Configuration\n\n### Option 1: Using the configuration file (default)\n\nThe plugin will automatically create a configuration file at `~/.ztodo.conf` if it doesn't exist. You can customize the following settings:\n\n```bash\n# Database location\nZTODO_DB_PATH=\"$HOME/.ztodo.db\"\n\n# Default task settings\nZTODO_DEFAULT_CATEGORY=\"general\"\nZTODO_DEFAULT_PRIORITY=2  # 1=high, 2=medium, 3=low\n\n# Notification settings\nZTODO_SHOW_UPCOMING_DEADLINES=\"true\"  # Show upcoming deadlines when opening a terminal\nZTODO_UPCOMING_DAYS=7  # Number of days to look ahead for deadlines\n\n# Display settings\nZTODO_COLOR_ENABLED=\"true\"  # Enable colored output\n\n# Per-task shell history (opt-in)\nZTODO_HISTORY_ENABLED=\"false\"          # enable logging of commands for a focused task\nZTODO_HISTORY_CAPTURE_PWD=\"true\"       # include current working directory\nZTODO_HISTORY_IGNORE=\"pass,token,secret\"  # comma-separated substrings to skip\n```\n\nSee [Configuration File](ztodo.conf.template) for an example.\n\n### Option 2: Using .zshrc directly\n\nIf you prefer to manage all configuration in your `.zshrc` file, you can disable the configuration file:\n\n```bash\n# Disable the configuration file\nZTODO_USE_CONFIG_FILE=\"false\"\n\n# Then set your configuration options\nZTODO_DB_PATH=\"$HOME/my-tasks.db\"\nZTODO_DEFAULT_CATEGORY=\"work\"\nZTODO_DEFAULT_PRIORITY=1\nZTODO_SHOW_UPCOMING_DEADLINES=\"true\"\nZTODO_UPCOMING_DAYS=5\nZTODO_COLOR_ENABLED=\"true\"\n\n# These must be set before Oh-My-Zsh loads the plugin\nplugins=(... ztodo)\nsource $ZSH/oh-my-zsh.sh\n```\n\n### Overriding the configuration file location\n\nYou can also change the location of the configuration file:\n\n```bash\n# Set custom config path before loading oh-my-zsh\nZTODO_CONFIG_PATH=\"$HOME/Documents/ztodo-config.conf\"\n\n# Then load oh-my-zsh\nsource $ZSH/oh-my-zsh.sh\n```\n\n## Roadmap\n\nThese are features we're planning to implement in the future:\n\n\n### Enhanced Features\n\n- [x] **Recurring Tasks**: Set up tasks that repeat on daily, weekly, monthly, or custom schedules.\n- [x] **Time Tracking**: Track how long you spend on each task.\n- [x] **Subtasks Support**: Break down complex tasks into manageable subtasks.\n- [x] **Project Management**: Group tasks into projects for better organization.\n- [x] **Calendar View**: ASCII month/week views highlighting deadlines.\n- [x] **Data Export/Import**: Export/Import tasks as CSV and JSON.\n- [x] **Task Templates**: Create templates for common task types with predefined attributes.\n- [ ] **Team Sharing**: Share tasks with team members (requires server component).\n- [x] **Per Task History**: Opt-in shell command logging tied to a focused task.\n\n#### Per Task History Enhancements\n\n- [x] Basic redactor for common secret patterns (e.g., masks values after `--password=`, `TOKEN=...`).\n- [x] Persist focused task across terminals (opt-in), with simple cache file.\n- [x] Compact reports, e.g., `ztodo report today` to summarize time and commands.\n\n### UI Improvements\n\n- [x] **Interactive TUI**: A minimal fzf-based TUI for quick actions.\n- [ ] **Notifications**: Desktop notifications for upcoming deadlines and reminders.\n\nIf you'd like to contribute to any of these features, please check out our [Contributing Guide](CONTRIBUTING.md).\n\n## License\n\nApache License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmurapadev%2Fztodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmurapadev%2Fztodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmurapadev%2Fztodo/lists"}