Put TODOs in their place!

Downloads Build Status Dependency Status Gratipay donate button Flattr donate button


Stay in the loop

Follow imdone_io on Twitter iMDone Blog

iMDone for Chrome

iMDone is now available as a chrome app at iMDone - Chrome Web Store with a 2 week free trial.

This project is going on hold so I can foucs more of my time on the chrome app. I'll be adding all of the npm project features to the new chrome app over time, so stay tunned. If you like iMDone give the chrome app a try!


When working on a software project in code or writing project in markdown, there are always tasks you need to record. Most people use a separate tool to record tasks and keep track of their progress. iMDone let's you do it right in your work.


  • Supports code style comments like this in code files
    • // FIXME: this is really broken
  • Create tasks in any text file using markdown link syntax like
    • [Finish the latest blog post](#doing:0)
    • or with a hashtag #doing:0 Finish the latest blog post
  • Sort tasks and move them between lists with drag and drop
  • Select and move multiple tasks at once
  • Reorder lists
  • Hide and show lists
  • Task filters (Regular Expression syntax)
  • Search (Regular Expression syntax)
  • Create, delete and edit files
  • Code completion with ctrl+space in editor
  • Markdown preview with table of contents
  • Syntax highlighting in markdown code blocks
  • Use gollum link syntax
    • Great for managing github wikis
  • Execute an event listener for modified files


  • Install
    sudo npm install -g imdone
  • Run iMDone by opening a terminal window, navigate to your local project directory and run...
    imdone -o
  • or for help...
    imdone -h
  • Open a file by clicking on the folder icon and create a task like this
    [Use imdone to manage tasks in my project](#done:0)
  • Or like this
    When your in the middle of a scentence #todo:0 write a task like this.
  • Or create tasks like this in code files (javascript example)
    // TODO: Use HashMap instead of HashTable
  • Add another project by navigating to the project directory in the terminal and run...


After running imdone for the first time, modify .imdone/config.json in your project directory. The default config looks like this. Your .imdone/config.json will extend this:

  "exclude": [
  "watcher": true,
  "lists": [],
  "marked": {
    "gfm": true,
    "tables": true,
    "breaks": false,
    "pedantic": false,
    "sanitize": true,
    "smartLists": true,
    "langPrefix": "language-"


More to come on this, but here's a sample. Check out imdone-echo-plugin

How you can help

If you like iMDone and want to help me make it better, you can make a contribution at Gittip. Every donation is very much appreciated.

Support via Gittip

If you have some spare time, then there is no better way to help an open source project than to get involved in one of the following ways.

  • Help diagnose and report problems
  • Suggest fixes by sending in patches
  • Improve the code
  • Help with unit and end-to-end testing
  • Provide peer support on our forum
  • Publish an article on your blog (send the link) to educate others regarding some aspect of the project
  • Help with missing documentation


Tasks are sorted by the number after the colon

Keep tasks in code

//[this is a todo task in javascript code](#todo:0)

Embed a filter link in a task

[Filter by [src/main/java](#filter/src/main/java)](#filters:0)

This would create a filters list containing this task and a link that will populate the filter box with src/main/java

Keep the .imdone folder in source control!

  • It contains your configuration and list order

If tracking a large number of files

  • Increase the "watch handle limit" to 512k**
  • As root edit /etc/sysctl.conf, add the following line
    fs.inotify.max_user_watches = 524288
  • Apply the change
    sudo sysctl -p

Checkout a github wiki to manage with imdone

Common Errors

  • If you are using bower in your project be sure to exclude the directory defined in your .bowerrc file (usually bower_components), otherwise you'll end up with too many open files errors.

See it in action!

Fork this repository and run imdone in your local copy. I use imdone for keeping track of imdone development.

Migrating from older versions

If you're migrating from an older version of iMDone the configuration is in a new place. It's still in the .imdone folder, but it's now in JSON format and lists are also stored there. Because it's in JSON format, you'll have to escape the '\' character in your excludes.


  • I use iMDone every day on Ubuntu 13.04 and the latest version of chrome. It should work on any machine that has nodejs and npm installed and for auto update of boards, a browser that supports websockets.
  • I us jasmine and mhevery/jasmine-node for testing.

Change Log


  • Better task detection in code


  • Fix code block replace in md files


  • Added config.code.include_lists array for code tasks


  • Recognize code style tasks in block comments.
  • DOING: Needs more community input on languages.js


  • Notify user of file change on disk


  • Fix new list found
  • <Ctrl>+k for new task
  • Allow #list:0 task syntax


  • New task is now <Ctrl>+n. A little easier for the fingers:)
  • Only select tasks that are visible on select all


  • Now using the imdone-core library
  • Tours to get you started
  • Create lists without having to create a task
  • Add and remove projects in the UI
  • Keyboard help with ? or on Help menu
  • Create a new task from the current line with <Alt>+t
  • List names are in code completion list with <Ctrl>+<Space>
  • Reopen projects that were open on last close. This is merged with --dirs or directory imdone was started in. Can also be editied in ~/.imdone/config.json
  • I had to do away with events to make the configuration JSON, but will consider bringing them back if there is enough demand.


  • Add delay to sortable elements


  • Fix line number of match


  • Update events for better push updates


  • Add callback to start for embedding


  • Fix bug for rename list when code style comments don't have a sort order


  • Fix firefox dropdown display bug


  • Fix refresh on file rename, create, or delete
  • Add support for code style tasks
  • Fix browser open for imdone running on another port


  • Hide archive and filter buttons when swithing projects


  • Add archiving of tasks to existing archive or deleted list or create archive list
  • Add filter by selected tasks filenames
  • Allow regex in filter


  • Add batch move tasks


  • Add copy button to preview


  • Fix valid task check for filetypes without a symbol


  • Fix file save if modified and clicking on a search result
  • Fix file route interpretation of preview boolean