- What is CommanDo
- Getting Started
- Commands
- Viewing Help
- Adding To-Dos
- Deleting To-Dos and its Fields
- Editing To-Dos
- Marking Tasks as Done
- Searching through Undone To-Dos
- Browsing To-Dos that are Done
- Listing To-Dos within Time Window
- Marking Tasks as Not Done
- Setting Save Location
- Exporting
- Importing
- Undoing
- Redoing
- Clearing To-Do List
- Exiting
- Troubleshooting
- Cheatsheet
What is CommanDo
You have a ton of things to do. But you are really tired of the amount of mouse-clicking required to add to-dos in your to-do list management application...
Introducing CommanDo: the to-do list manager designed for you. With CommanDo, you can manage your to-do list in double quick time with just typing, completely mouse-free. With CommanDo, you can edit your to-dos with short, intuitive and English-like commands. With CommanDo, you can preview your upcoming Events and unfinished Tasks at a glance, when you open up the application.
Here's CommanDo at work:
Ready to spend less time managing your to-dos, and spend more time actually doing them? Start using CommanDo today!
Getting Started
-
Ensure that you have Java version
1.8.0_60
or later on your device. Instructions on checking your Java version can be found here. Otherwise, install the latest version of Java. -
Download the latest
commando.jar
from CommanDo's releases tab on Github. -
Copy
commando.jar
to the folder you want to use as the home folder for CommanDo. -
Double-click
commando.jar
to start the application. CommanDo's window should appear in a few seconds: -
Type
help
and press Enter. You can open this user guide another window. Refer to the Commands section below for the list of commands available in CommanDo. -
For your convenience:
- Anything you type will immediately go into the command box, even if it was out of focus.
- With focus on the command box, press ↑ and ↓ to navigate through your command history.
- Press Tab to switch focus between the panels, and press ↑ and ↓ with focus on a panel to scroll it up or down.
Commands
Viewing Help: help
If you end up lost in your commands, you can quickly open up this user guide with the help
command. If you follow help
with another command word, the corresponding section of the user guide will be shown.
>> help [<topic>]
Understanding Command Formats: For every command, the first word is the command word that specifies the type of the command. What follows after are fields to fill in for that command. The following legend describes the syntax we used to specify command formats:Examples:
<>
denotes a field to fill in[]
denotes that the fields within it are optional/
separates alternatives to a keyword...
denotes that the preceding field can be repeated (i.e. able to have multiple values)
>> help
>> help add
>> help cheatsheetThis command will open up this user guide, jumping to the Cheatsheet section.
Adding To-Dos: add
The very first thing you'll want to do is to add a to-do. Each to-do contains at minimum, a description. You can associate each to-do with multiple tags and a time constraint. Depending on nature of the time constraint, to-dos are categorised into 2 types: Events (shown in the left panel) and Tasks (shown in the right panel):
Adding Events
An Event is an activity happening within a time window. Examples include your birthday party, a meeting with your boss, or the upcoming examination you might have. To add an Event, use the add
command, followed by the description, the time window, a recurrence (optional) and tags, if any.
>> add <description> from <start_datetime> to <end_datetime> [daily/weekly/monthly/yearly] [#<tag>...]
>> add <description> on <datetime> [daily/weekly/monthly/yearly] [#<tag>...]
>> add <description> to <end_datetime> [daily/weekly/monthly/yearly] [#<tag>...]
>> add wild party in hostel room from 31 Dec 2016 to 1 Jan 2017
>> add shopping with wife from 5 Sep 1230h to 1730h #important #wife
>> add meeting with Dr Tan from next Saturday 9am to 10am #work #important
>> add physics revision from tues 9.30pm to 10pm weekly #physics
>> add tour with Jimmy on next Saturday
>> add clean room on tomorrow #important
In CommanDo, there are 3 ways to specify its time window of an Event:
-
Specifying both
start_datetime
andend_datetime
fields: the Event starts atstart_datetime
and ends atend_datetime
- With no time specified,
start_datetime
defaults to a time of 0000h midnight, whileend_datetime
defaults to 2359h
- With no time specified,
-
Specifying a
datetime
field: the Event starts atdatetime
and ends at 2359h on that day- With no time specified,
datetime
defaults to a time of 0000h midnight
- With no time specified,
-
Specifying a
end_datetime
field: the Event starts from the current datetime (i.e. now) and ends atend_datetime
- With no time specified,
end_datetime
defaults to a time of 2359h
- With no time specified,
Datetime Formats: CommanDo is pretty flexible in parsing your datetime fields, accepting formats like5 Jan 2016 2300
and28/12/2016 12pm
(where the date is in theDD/MM/YYYY
format). You can drop the year (if you mean the current year) or even a whole date (if you mean a preceding date or the current date). For the full list of usable datetime formats, refer to the later FAQ section on supported datetime formats.
The use of keywords daily
, weekly
, monthly
or yearly
after the time window allows you to add a recurrence to the Event. The moment a recurring Event is over, CommanDo will automatically move its time window forwards based on the recurrence.
To help organise your to-do list, you can associate tags with the Event by putting them at the end of the command, prefixed with #
. You'll be able to browse through your to-do list by tags with the find
and recall
commands described later.
In CommanDo, by default, every upcoming Event is listed in the left panel, in chronological order. When an Event is over, it will drop down to the bottom of the list, greyed out. On the next day, CommanDo will hide it for you, but you can still find it with the recall
command. The following screenshots demonstrate how Events are displayed:
Adding Tasks
A Task, on the other hand, is an activity that can be done at your own time or by some due date. Examples include a plan to watch the latest blockbuster movie, or the submission deadline of an assignment. To add a Task, use the add
command, followed by the description, a due date (optional), a recurrence (optional) and tags, if any.
>> add <description> [by <due_datetime>] [daily/weekly/monthly/yearly] [#<tag>...]Examples:
>> add finish FYP by tomorrow 2359h
>> add submit math homework by wednesday 2359h weekly
>> add watch Lord of the Rings
>> add shop for groceries: banana, pineapple, watermelon #housework
>> add walk from here to thereThis command will add a Task with description
walk from here to there
. Although it looks like the format of an Event, CommanDo recognises that here
and there
are invalid datetimes.
>> add code parser to parse by tomorrow by todayThis command will add a Task with description
code parser to parse by tomorrow
with due date of the current day 2359h.
If you do not specify a time in due_datetime
, the time will default to 2359h. You can add tags and recurrence to a Task in a way similar to adding Events.
When you have completed a Task, you can mark it as done with the finish
command. In CommanDo, every unfinished Task is listed on the right panel, with those with due dates prioritized at the top, in chronological order. The following screenshot shows how a Task is displayed when you add it:
Escaping description of to-dos: In the case you want to use something likeby today
orfrom morning to night
as the description of your Event or Task, you can wrap it with backticks like in this following example:>> add `shop by today`This command will add a Task with descriptionshop by today
.
Deleting To-Dos and their Fields: delete
Deleting To-Dos
If you want to delete a to-do that is no longer relevant, whether it is an Event or a Task, use the delete
command, followed by the Index of the to-do you want to delete.
>> delete <index>...
>> delete <start index> - <end index>Examples:
>> delete 2 3This command will delete the to-dos with Indices 2 and 3.
>> delete 1 - 5This command will delete the to-dos with Indices 1, 2, 3, 4 and 5.
Index of a To-Do: To refer to an existing to-do in CommanDo, you can use its Index, which is the number visually tagged to a to-do on the interface. This is clarified in the following picture:
Deleting Time Constraints of To-Dos
There are situations where the time window of an Event or the due date of a Task becomes no longer relevant. You can remove these time constraints from the to-do with the delete
command, ending the command with the keyword time
. Note that this means that a target Event will become a Task after such a command.
>> delete <index>... time
>> delete <start index> - <end index> time
Deleting Recurrence of To-Dos
You might want to remove the recurrence of a to-do while keeping its time window (for an Event) or due date (for a Task). This can be done with the delete
command, ending it with the keyword recurrence
.
>> delete <index>... recurrence
>> delete <start index> - <end index> recurrence
Deleting Tags of To-Dos
Similarly, to clear the tags of a to-do, use the delete
command as well, but end with the keyword tag
.
>> delete <index>... tag
>> delete <start index> - <end index> tag
Deleting Multiple Fields of To-Dos
You can even chain tag
, time
, or recurrence
to delete all the specified fields from the target to-dos at once.
>> delete 2 4 5 tag timeThis command will remove the tags and time constraints for all the to-dos with Indices 2, 4 and 5
Editing To-Dos: edit
More often than not, you'll need to edit the fields of a to-do after some time, such as when you make a mistake, when you have a postponed Event, or when you receive more details for a Task.
Editing Events
You can replace the description, the time window and the tags of an Event with the edit
command, followed by the fields that you want to modify, in a format similar to adding Events with the add
command. Note that if tags are provided in an edit, the old tags will be completely replaced by the new ones. To remove the time window, the recurrence, or the tags of a Event, use the delete
command instead.
>> edit <index> [<description>] [from <start_datetime> to <end_datetime> [daily/weekly/monthly/yearly]] [#<tag>...]Examples:
>> edit 1 #projectABCThis command will tag
#projectABC
to an Event with Index 1, replacing any tags it originally has.
>> edit 1 from today 14:00 to today 16:00 #important #workThis command will change the time window of an Event with Index 1 and replaces its tags by
#important
and #work
.
Editing Tasks
By including suitable fields and their keywords, you'll similarly be able to replace the description, the due date and the tags of a Task.
Command Format:>> edit <index> [<description>] [by <due_datetime>] [#<tag>...]Examples:
>> edit 2 shopping trip to IKEA #familyThis command will change the description of the Task with Index 2 to
shopping trip to IKEA
and replaces all of its tags with #family
.
>> edit 2 by 6 febThis command will set or change the due date of the Task with Index 2 to 6 Feburary of the current year, 2359h.
>> edit 2 `watch back by midnight`This command will replace the description of the Task with Index 2 to
watch back by midnight
.
Marking Tasks as Done: finish
When you've completed a Task, mark it as done with the finish
command. The to-do will initially be moved to the bottom of its list, greyed out. It is subsequently archived on the next day. You'll be able to browse through these finished Tasks with the recall
command.
Events will automatically be marked done and greyed out when the current datetime is after the end of their time window. Therefore, you cannot use the finish
command on an Event.
Command Formats:
>> finish <index>...
>> finish <start index> - <end index>
Searching through Undone To-Dos: find
At some point in time, you might have a long list of to-dos. Use the find
command to search through all upcoming Events (from the current day onwards) and all unfinished Tasks by their description or their tags. After doing the search, use the find
command again without any trailing keywords to revert to showing all upcoming Events and unfinished Tasks.
>> find [<keyword>...] [#<tag>...]Examples:
>> find lunch meetingThis command will filter and show only upcoming Events and unfinished Tasks, with description or tags matching both
lunch
and meeting
.
>> find #homeworkThis command will filter and show only upcoming Events and unfinished Tasks, with a tag
#homework
.
>> find
This command will show all undone to-dos.
More details on how the search works:
- For a to-do to be matched, all search keywords must be matched in its description and tags, and all search tags must be matched in its tags.
-
Orderings of the search keywords and tags do not matter – keywords
Chicken Egg
will matchEgg Chicken
. -
Search keywords (but not tags) will match parts of words – keyword
chicken
will matchchickens
, whereas keywordchickens
will not matchchicken
.
Browsing To-Dos that are Done: recall
When you need to review, refer back to, or search through the past Events or finished Tasks, use the recall
command. It works in the exactly same way as the find
command - except it only shows to-dos that are done.
>> recall [<keyword>...] [#<tag>...]Examples:
>> recall
This command will show Events that are already over and Tasks that have been finished.
>> recall weddingThis command will filter and show Events that are already over and Tasks that have been finished, with description or tags matching
wedding
.
Listing To-Dos Within Time Window: list
Sometimes you may want to list all your to-dos within certain period of time. Use the list
command, followed by a time window. This would search for Events that are going to happen or have happened within that time window, and Tasks that are finished or are due in that period. If you use this command without any keywords, you will see all to-dos - both done and undone.
>> list [from <start_datetime> to <end_datetime>]
>> list on <datetime>Examples:
>> list
This command will list all Events and Tasks, both done and undone.
>> list from today to tmrThis command will list all Events and Tasks that have time windows or due dates between the current day 0000h to the next day 2359h.
>> list on next weekThis command will list all Events and Tasks that have time windows or due dates on next week.
Marking Tasks as Not Done: unfinish
Oops, you marked a task as done when it is not done yet. You can use the unfinish
command:
>> unfinish <index>...
>> unfinish <start index> - <end index>
Setting Save Location: store
Perhaps you want to save your to-do list in your Dropbox or OneDrive folder that is cloud-synced. The store
command lets you do exactly that - it migrates the save file to that of the specified file path. This command will fail if there is an existing file at the specified file path, but you can end the command with the keyword override
to forcibly override it.
Default Save Location: The default save location isCommand Format:data/todos.xml
. It is relative to thecommando.jar
file.
>> store <file_path> [override]
Examples:
>> store ../../Dropbox/work/todolist.xml overrideThis command will change the save location for storing the to-do list data to
../../Dropbox/work/todolist.xml
relative to your commando.jar
, and saves the latest to-do list data to that file, overriding any data if that file already exists.
File Paths: A file path can be absolute (C:/Users/Jim/Dropbox/work/todolist.xml
) or relative to thecommando.jar
file (../../Dropbox/work/todolist.xml
). You can use any file extension you wish, but ending with.xml
is recommended because the date file is in that file format.
Exporting: export
If you want to clone your to-do list data file in your current save location to another local destination, there's no need to manually do so. Instead, use the export
command to save a copy of the current to-do list data to the specified file at given file path. Similar to the store
command, append the keyword override
behind the command to forcibly override any existing file.
>> export <file_path> [override]
Importing: import
If you already have an existing to-do list data file (possibly from your other devices) and want to use it in CommanDo, the import
command can import a valid data file. Note that it overrides the current to-do list with the imported to-do list!
>> import <file_path>
Undoing: undo
You deleted a to-do by accident and you want to undo your last modification. With the undo
command, the most recent add
, edit
, delete
, clear
and import
would be reverted. Multiple undo
commands can be used in succession. Note that you can only undo commands in your current session, which ends when you close the application.
>> undo
Redoing: redo
You deleted a to-do by accident. You had used undo
to restore that to-do, but eventually realised that the to-do isn't worth keeping after all. The redo
command reverts the most recent undo
, and can be used in sucession. How many times you can redo is limited to the current session, which ends when you close the application.
>> redo
Clearing To-Do List: clear
If you want to reset your to-do list, use the clear
command. ALL to-dos, including those finished and archived, will be removed. Use the undo
command if you cleared your to-do list by accident.
>> clear
Exiting: exit
Finally, you are done with managing your to-do list and want to close the program. You can either click on the close button or use the exit
command provided in CommanDo. This command closes the application, and all the changes to your to-do list are saved.
>> exit
Troubleshooting
Frequently Asked Questions
1. Double-clicking on commando.jar
doesn't open up CommanDo or gives an error.
You'll need to install the latest version of Java. Refer to the installation guide.
On Windows, if you already have the latest verison of Java installed, you might need to right-click the file, click on the option Open with
, and choose Java.
2. How do I save my to-do list after modifying it?
Your save file is immediately updated after every change. There is no need to save manually.
3. Is sharing across devices supported?
CommanDo doesn't directly support syncing of the to-do list across devices. Instead, use the export
command to generate a save data file, transfer the file to another device, and use the import
command on the 2nd device to import your to-do list from that save file. Alternatively, use a cloud-syncing service (e.g. Dropbox) and the store
command to sync the to-do list automatically by setting the save location to the same file on both devices.
4. I have some Events or Tasks that are not appearing!
CommanDo automatically hides Events that are already over and Tasks that are already marked done, to ensure that your to-do list is kept clean. To see these to-dos, use the recall
or list
commands.
5. I keep forgetting how to use certain commands.
The help
command can be used to quickly summon this guide or a relevant section of this guide when you need it. Alternatively, you can just try typing a random command - if it is invalid, CommanDo will display the correct command format for that command in the command feedback box just below the command input.
6. What date & time formats can I use in my commands?
CommanDo supports a wide variety of date and time formats, backed by the date parser library Natty. A valid datetime contains a valid date, a valid time, or a valid date and time. A sample of the accepted date & time formats are shown below:
Valid Dates
With Slashes | With Month Word | Presets | Relative Dates |
---|---|---|---|
10/2/2016 (DD/MM/YYYY)
|
January 2016 |
today |
coming fri |
10/2/16 (DD/MM/YY)
|
11 Oct 2016 |
tomorrow/tmr |
last week/month/year |
2/3 (DD/MM)
|
10 feb |
yesterday |
next Wednesday |
3rd Apr |
this feb |
||
Sept 29 |
x days/weeks/months later/ago |
Valid Times
24 hour notation | Using AM/PM | Presets |
---|---|---|
19:00 (hh:mm)
|
11:59pm
|
morning (0800h)
|
0932h (hhmm)h
|
9am
|
afternoon (1200h)
|
1.30am
|
evening (1900h)
|
|
night (2100h)
|
||
midnight (0000h)
|
Cheatsheet
Command | Command Format |
---|---|
Add Event | >> add <description> from <start_datetime> to <end_datetime> [daily/weekly/monthly/yearly] [#<tag>...] |
Add Task | >> add <description> [by <due_datetime>] [#<tag>...] |
Clear To-Do List | >> clear |
Delete To-Dos | >> delete <index>... |
Delete Time Constraint of To-Dos | >> delete <index>... time |
Delete Recurrence of Events | >> delete <index>... recurrence |
Delete Tags of To-Dos | >> delete <index>... tag |
Edit Event | >> edit <index> [<description>] [from <start_datetime> to <end_datetime> [daily/weekly/monthly/yearly]] [#<tag>...] |
Edit Task | >> edit <index> [<description>] [by <due_datetime>] [#<tag>...] |
Exit | >> exit |
Export | >> export <file_path> [override] |
Find To-Dos | >> find [<keyword>...] [#<tag>...] |
List To-Dos | >> list [from <start_datetime> to <end_datetime>] |
Finish To-Dos | >> finish <index>... |
Help | >> help [<command_word>] |
Import | >> import <file_path> |
Recall Past To-Dos | >> recall [<keyword>...] [#<tag>...] |
Redo | >> redo |
Store at File Path | >> store <file_path> [override] |
Undo | >> undo |
Unfinish To-Do | >> unfinish <index>... |
Legend
<>
denotes a field to fill in[]
denotes that the fields within it are optional/
separates alternatives to a keyword...
denotes that the preceding field can be repeated (i.e. able to have multiple values)