{"id":35226020,"url":"https://github.com/mvgrimes/obsidian-todotxt-plugin","last_synced_at":"2026-04-07T13:32:20.413Z","repository":{"id":153542377,"uuid":"629743411","full_name":"mvgrimes/obsidian-todotxt-plugin","owner":"mvgrimes","description":"Obsidian plugin to manage todotxt files","archived":false,"fork":false,"pushed_at":"2026-01-13T01:16:38.000Z","size":1616,"stargazers_count":79,"open_issues_count":7,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-03-04T02:48:13.155Z","etag":null,"topics":["obsidian-plugin","todotxt","todotxt-cli"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mvgrimes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2023-04-19T00:04:00.000Z","updated_at":"2026-02-16T08:50:49.000Z","dependencies_parsed_at":"2024-07-23T00:16:06.563Z","dependency_job_id":"1da010ea-a252-4810-b924-bd6d25f732a6","html_url":"https://github.com/mvgrimes/obsidian-todotxt-plugin","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/mvgrimes/obsidian-todotxt-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvgrimes%2Fobsidian-todotxt-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvgrimes%2Fobsidian-todotxt-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvgrimes%2Fobsidian-todotxt-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvgrimes%2Fobsidian-todotxt-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mvgrimes","download_url":"https://codeload.github.com/mvgrimes/obsidian-todotxt-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mvgrimes%2Fobsidian-todotxt-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31515144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["obsidian-plugin","todotxt","todotxt-cli"],"created_at":"2025-12-30T01:07:04.545Z","updated_at":"2026-04-07T13:32:20.408Z","avatar_url":"https://github.com/mvgrimes.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/mvgrimes"],"categories":[],"sub_categories":[],"readme":"# Obsidian TodoTxt Plugin\n\nManage [\\*.todotxt](https://github.com/todotxt/todo.txt) files in Obsidian.\n\n![Sample TodoTxt file in Obsidian](docs/screenshot.png)\n\nInstall the plugin and put your todo file in your Obsidian vault with the\n`.todotxt` extension (ie, `TODO.todotxt`).\n\nCreating a `.todotxt` file from within Obsidian can be a bit tricky. When you\ncreate a new note Obsidian will automatically append the `.md` extension, so\n`TODO.todotxt` becomes `TODO.todotxt.md`. To fix this, you can right-click on\nthe file in Obsidian sidebar, select Reveal in Finder/File Explorer, and then\nchange the file extension to `.todotxt`. If you are successful, the file will\nbe listed in the Obsidian sidebar followed by a `TODOTXT` badge.\n\n## Additional Features\n\nThe TodoTxt Plugin supports some extensions to the basic todo.txt spec:\n\n### Due Dates\n\nDue dates can be specified by including `due:yyyy-mm-dd` in the text of the\ntask item. The plugin will highlight the due date and shift to orange as the\ndate nears then red when the due date is missed. The date must be specified in\nthe `yyyy-mm-dd` format (including padding the month or day with a `0` if\nneeded) and no whitespace may be included.\n\n### Preserving Priorities on Complete\n\nEXPERIMENATL: This feature is experimental and needs to be enabled in the settings.\n\nAs described in the todo.txt [spec](https://github.com/todotxt/todo.txt),\npriorities are typically discarded when a task is marked as complete. This\nextension to the spec will preserve the priority in a `pri:X` tag. It will also\nrestore the priority if the task is later marked as uncompleted.\n\n### Recurring Tasks\n\nEXPERIMENATL: This feature is experimental and needs to be enabled in the settings.\nThis is not part of the todo.txt [spec](https://github.com/todotxt/todo.txt).\n\nRecurring tasks can be specified by including the `rec:` tag. When such a task\nis marked as complete a new task will created with a `due:` tag based on the\nvalue in the `rec:` tag.\n\nSee further documentation of [recurring tasks](docs/RECURRING.md).\n\n### Threshhold Dates\n\nThreshold dates are indicated by the `t:YYYY-MM-DD` tag. Tasks with a specified\nthreshold are not considered ready to be undertaken until the threshold date.\nThe Todotxt Plugin will display tasks with threshold dates in the future with a\nsubtlely muted text.\n\n## How to Install by Hand\n\n1. Clone this repo.\n1. `pnpm install` to install dependencies\n1. `pnpm run dev` to start compilation in watch mode.\n\n## Manually Installing the Plugin\n\nCopy `main.js`, `styles.css`, `manifest.json` to your vault\n`VaultFolder/.obsidian/plugins/todotxt-plugin/`.\n\n    cp dist/* VaultFolder/.obsidian/plugins/todotxt-plugin/\n\n## Keyboard Shortcuts\n\nUse `tab` and `shift-tab` to navigate through your todos.\n\n- `ctrl-n` to create a New todo task\n- `ctrl-/` goto filter input\n- `e` or `enter` to Edit the current todo task\n- `d` to Delete the current todo task\n- `space` toggle done\n\n## Future Development\n\n- [x] Delete a Todo\n- [x] Edit a Todo\n- [x] Keyboard shortcut to create new Todo\n- [x] Keyboard navigation through TODOs\n- [x] Priority colors are a bit bright\n- [ ] Better handling for Todo.parse() errors\n- [ ] Global keyboard shortcut to create new Todo\n- [ ] Command palette command to create new Todo\n- [ ] Config menu set the default .todotxt file\n- [ ] Command palette to create a new .todotxt file\n\n## Development\n\nHelpful commands to run while developing:\n\n```shell\npnpm run dev # compile typescript to ./dist via esbuild\npnpm run css # compile css to ./dist via postcss\npnpm run cp # copy files from ./dist to Obsidian plugins dir\npnpm run parser:watch # compile .peggy grammar to parser.js\npnpm run test:watch # run tests in watch mode\n```\n\nWe are using the moment package because Obsidian already requires it. Otherwise\nwould use something lighter weight (like date-fns) or built-in.\n\n## Thanks\n\n* Thanks to the authors of [todotxt](https://github.com/todotxt).\n* Thanks to the authors of [SwiftoDo](https://swiftodoapp.com/) for documenting\n  the due and recurring extensions to the spec.\n\n## Support\n\nI've been asked if there are ways to support this plugin. I created it to\nscratch my own itch and am just happy that others find it useful. Giving it a\nstar on github would be appreciated. If you are feeling extra generous, you can\nbuy me a coffee ☕.\n\n\u003ca href=\"https://www.buymeacoffee.com/mvgrimes\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvgrimes%2Fobsidian-todotxt-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmvgrimes%2Fobsidian-todotxt-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmvgrimes%2Fobsidian-todotxt-plugin/lists"}