Doneyet is an ncurses based hierarchical todo list manager written in C++. If you give it a whirl let me know! I'd be happy to hear who's using it and any feature requests! Mostly, I use it for:
- Keeping track of things you need to do.
 - Tracking start and finish times and dates for tasks.
 - Generating lists of work completed in a given time frame.
 - Tons of other stuff!
 
DoneYet? is a filter-based todo list manager. Currently there are only four filters but in future versions there will be more and they will be user editable. Currently the filters consist of:
- Show All Tasks - This shows all tasks in the current project.
 - Show Unfinished Tasks - This shows any task with a status of unstarted, in progress, or paused.
 - Show Completed Tasks - This shows only tasks that have a completion date within 7 days of now.
 - Find - This filter takes a user specified string and shows any that match. This uses case-sensitive search.
 
Doneyet will save on quit, or when choosing 'Save' from the 'Project' menu.
Doneyet is used primarily through key commands. There is a menu system in place but not everything can be achieved through it. The key commands are as follows:
- A - Apply the Show All Tasks filter.
 - a - Create a new task (or a subtask if pressed while a task is selected).
 - M - Show the menu bar.
- j and k - Change menu item.
 - l and h - Change menu.
 - Return - Select the selected menu item.
 - Escape - Hide the menu bar.
 
 - m - Move the currently selected task. Note this doesn't work for root level tasks yet.
- k/u/Up Arrow - Move selected task up.
 - j/d/Down Arrow - Move selected task down.
 - Return - Place task at current position.
 - Escape - Place task to where it was originally.
 
 - n - Add a note to the selected task.
 - v - View the notes of the selected task.
 - j - Select next task.
 - k - Select previous task.
 - Escape - Select no task.
 - e - Edit selected task.
 - d - Delete selected task.
 - c - Toggle collapsed state of selected task.
 - R - Apply the Show Uncompleted Tasks filter.
 - C - Apply the Show Completed Tasks filter.
 - f - Apply the Find Tasks filter.
 - S - Save the project.
 - Space - Toggle the status of the selected item. White is unstarted, green is in progress, blue is completed and red is paused.
 - h - Shows a help dialog.
 - q - Quit.
 
The menu system also contains the 'Plain Text' menu item in the 'Generate' menu. This creates a text file of whatever is currently filtered in /tmp/snippet.txt and then calls less on that file. A potential use of this is reporting weekly progress in email. Copying directly out of the ncurses window is difficult and time consuming. This however generates a plain text version with no borders.
Project files are stored in ~/.todo/Projects/. Please backup your ~/.todo folder regularly.
A configuration file can be created in ~/.todo/config to set some options.
[TASKS]
# prompt_on_delete default is true
prompt_on_delete = false
Features:
- added deleting and editing of notes
 - drawing closing T-junctions on column ends
 - displaying a help dialog upon pressing 'h', showing all current shortcuts
 
Bugfixes:
- segmentation fault (ESC twice at startup)
 - removing unnecessary saving (is already performed by Quit() )
 
Clone or download doneyet, cd into the main source code repository and then run make.
git clone https://github.com/gtaubman/doneyet.git
cd doneyet
make
The doneyet binary can now be copied to whatever system path suits best for you. You may also choose to run it right from here.
./doneyet
Please follow the Linux instructions.
There seems to be a bug in the way linking against the system supplied libcurses is done since macOS 10.14 when combined with libmenu. Please install homebrew, instructions are available on https://brew.sh/. Then install ncurses
brew install ncurses
and follow the post-installation instructions (example below)
For pkg-config to find ncurses you may need to set:
  export PKG_CONFIG_PATH="/opt/homebrew/opt/ncurses/lib/pkgconfig"
by adding the pkg-config definition of brew-installed ncurses to your pkg-config search path, version for bash:
echo 'export PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig"' >> ~/.bash_profile
or if your shell is zsh (default since macOS Catalina 10.15):
echo 'export PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig"' >> ~/.zshrc
you should ensure that the .bash_profile or .zshrc is sourced (close Terminal.app window and open up a new one if you don't know what that means) Please follow the Linux instructions now.