By: CS2103T-F12-03 Since: Oct 2019 Licence: MIT

1. Introduction

TagLine is for those who prefer to use a desktop app for managing notes. More importantly, TagLine is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TagLine can streamline your note management much faster than traditional GUI apps. Interested? This User Guide will provide all you need to know to use TagLine, jump to the Quick Start to get started. Enjoy!

2. Quick Start

  1. Ensure that you have Java 11 or above installed.

  2. Download the latest TagLine.jar here.

  3. Move the file to the folder you want to use as the home folder for TagLine. You are recommended to create a new folder for TagLine as it will create files to store your data.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. The panel on the left is the Chatbot Interface. Type a command in the message box and press Enter to execute it.

  6. Some commands you can try:

    • contact list: Lists all contacts

    • note list: Lists all notes

  7. Your output will be displayed on the panel on the right. For more features on each command, refer to the Command List.

  8. Refer to Section 4, “Command List” for details of each command.

3. Learning TagLine

Are you new to TagLine? Or are you prone to making typos? In either case, TagLine has some nifty features to help you out.

3.1. Autocomplete

When you enter a command, TagLine will display autocomplete suggestions as you type.

To illustrate, let’s suppose you are trying to create a new contact. However, you only remember that the first keyword is contact! With the autocomplete feature, it is easy to find the correct command. Try following the following steps:

  1. Type contact into the command box. A list of suggestions will pop up under the command bar.

    ug autocomplete1
  2. Use the arrow keys to navigate to the correct command (optional if using mouse).

    ug autocomplete2
  3. Press the Enter key or click on the command in the menu. Your command box will now display contact create.

    ug autocomplete3

Note

After typing a command, if the autocomplete menu is still showing, please wait a moment for it to disappear, or click elsewhere on the screen. If you press Enter too quickly, this will cause your command to be overwritten.

3.2. Prompts

For some commands, TagLine can prompt you when there is missing important information. Instead of having to type the whole command again, you will only need to fill in the couple of fields you missed.

Let’s take the same example of creating a new contact.

  1. Suppose you accidentally pressed Enter too early, and sent the command contact create as is.

    ug prompt1
  2. Maybe you have intended to call this new contact Bob. Then type Bob into the command box and press Enter (or Send). Then TagLine would appear like this:

    ug prompt2
  3. As can be seen above, TagLine has successfully created a new contact named Bob.

3.2.1. Aborting an incomplete command

But what if we don’t want to proceed with the command? You can abort the command by pressing the Escape key.

  1. After step 1 of the above example, let’s say you no longer want to create a new contact. Press the Escape key.

    ug prompt3
  2. The incomplete command will not be executed. Now you can continue to enter other commands into the command box.

Note

When given prompts, to minimize inconvenience to you, the autocomplete menu is temporarily disabled. Once prompting is complete or aborted, autocomplete will be re-enabled.

4. Command List

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in contact create --n NAME, NAME is a parameter which can be used as contact create --n John Doe.

  • Items in square brackets are optional e.g [--n NAME] and [--e EMAIL] can be used as --n John Doe --e j.doe@gmail.com or only --n John Doe.

  • Items with * after them can be used multiple times including zero times e.g. [--t TAG]*​ can be used as <empty> (i.e. 0 times), --t #friend, --t #friend --t #family, etc.

  • Items with +​ after them can be used one or multiple times e.g. [--t TAG]+​ can be used as --t #friend and --t #friend --t #family but cannot be used as <empty> (i.e. 0 times),

  • Parameters can be in any order e.g. --n NAME --p PHONE_NUMBER and --p PHONE_NUMBER --n NAME are considered the same.

  • For parameters that cannot be used multiple times (i.e. without * or + after them), if there are multiple values provided (e.g. --p 12345 --p 67890), only the last value will be considered as part of the user input.

4.1. Basic Commands

4.1.1. Views help: help

Displays the list of commands and their usages.

Format:

help

4.1.2. Exits the app: exit

Exits the application.

Format: exit

4.2. Manage contacts: contact

Tagline can help people to manage their contacts easily. When you use contact commands, a view that displays a list of contacts will appear in the right pane. The left pane still displays a chat bot for user interaction.

ContactListExample
Figure 1. An example of Contact View

4.2.1. Create a contact: create

Creates a new contact.

Format:

contact create --n NAME [--p PHONE_NUMBER] [--e EMAIL] [--a ADDRESS] [--d DESCRIPTION]

Example:

  • Suppose you just have a new friend - Dwayne Johnson - and you want to save his contact along with some information that you know about him.
    You can just enter the following command: contact create --n Dwayne Johnson --p 81234567 --e johnson@gmail.com --d Friend from CS2100.

    ug contactcreate1
    Figure 2. Entering the command
  • This creates a new contact with name and other attribute values that you entered.
    The display will show the profile of the contact that you just created.

    ug contactcreate2
    Figure 3. Command executed, a new contact created
Contact id is generated randomly. As a result, you may see a different value with the example provided.

4.2.2. Edit a contact: edit

Edits an existing contact.

Format:

contact edit CONTACT_ID [--n NAME] [--p PHONE_NUMBER] [--e EMAIL] [--a ADDRESS] [--d DESCRIPTION]

Example:

  • After creating a contact, suppose you get a new information about that person and want to edit the data.
    You can just enter the following command: contact edit 99022 --a NUS School of Computing

    ug contactedit1
    Figure 4. Entering the command
  • This edits an existing contact with the id that you entered.
    The display will show the profile of the contact that you just edited.

    ug contactedit2
    Figure 5. Command executed, the new contact data displayed
Partial edit will be supported in v2.0

4.2.3. Delete a contact: delete

Deletes a contact with the given id.

Format:

contact delete CONTACT_ID

Example:

  • Suppose you feel that it is no longer necessary to store data for one of your contacts
    You can just enter the following command: contact delete 2

    ug contactdelete1
    Figure 6. Entering the command
  • This deletes an existing contact with the contact id that you entered.
    The display will show the refreshed contact list.

    ug contactdelete2
    Figure 7. Command executed, the specified contact deleted.

4.2.4. List all contacts: list

Lists all contacts in the application.

Format:

contact list

Example:

  • Suppose you want to know all the contacts that are stored in Tagline.
    You can just enter the following command: contact list

    ug contactlist1
    Figure 8. Entering the command
  • This deletes an existing contact with the contact id that you entered.
    The display will show the refreshed contact list.

    ug contactlist2
    Figure 9. Command executed, all contacts displayed.

4.2.5. Locate persons by keyword: find

Lists all contacts whose name matches the given keyword.

Format:

contact find KEYWORD

Example:

  • Suppose you just listed all the contacts. However, after seeing so many contacts, you are only interested in finding contacts with that contain Alex in its name.

    ug contactfind1
    Figure 10. Initial list of contacts.
  • This command allows you to contacts with the specified name easily.
    You can just enter the following command: contact find Alex

    ug contactfind2
    Figure 11. Entering the command
    ug contactfind3
    Figure 12. Command executed, only contacts that contain the specified name displayed.

4.2.6. Display the profile of a person: show

Displays a contact profile that contains information and list of notes that are associated with a given contact id.

Format:

contact show CONTACT_ID

Example:

  • Suppose you are interested to know information and notes that are associated with your contact Alex Yeoh which is stored with a contact id equals to 1 in Tagline. In addition, suppose that Tagline currently stores the following data:

    ug contactshow1
    Figure 13. List of all contacts that are stored by Tagline.
    ug contactshow2
    Figure 14. List of all groups that are stored by Tagline.
    ug contactshow3
    Figure 15. List of all notes that are stored by Tagline.
  • Instead of checking association between notes and contacts one by one, you can just enter the following command: contact show 1

    ug contactshow4
    Figure 16. Entering the command
  • This command allows you display a profile for a contact with id equals to 1. The profile contains basic information about a contact (i.e. name, email, phone number, address, and description) and list of notes that are associated with it.

    ug contactshow5
    Figure 17. Command executed, contact profile displayed

4.2.7. Pin a person: pin [coming in v2.0]

Pins a contact to the top of the contact list.

Format:

contact pin CONTACT_ID

Examples:

  • contact pin 00343

4.2.8. Clear all entries : clear

Clears all data that you have in your contact list. Before executing this command, the application will also ask for confirmation through the chatbot because you won’t be able to undo this operation.

Format:

contact clear

Examples:

  • contact clear

    Executing this command will trigger a confirmation in the chatbot:

    Please confirm some additional details for the command. Press the escape key to abort.
    Are you sure you want to clear your contact list? Enter 'Y' to continue.
    ug contactclear1
    Figure 18. Confirmation for clearing notes

Then, if you answer "Y", the chatbot will clear all data in your contact list.

+ .Command executed, the contact list cleared. image::ug_contactclear2.png[width="600"]

If you press the ESC key, the command will be aborted.

4.3. Manage groups: group

group descriptions and editing groups will be supported in v2.0, disregard any group description references here

4.3.1. Create a contact group: create

Creates a new group. If any contacts are mentioned, the new group will contain all of the mentioned contacts.

Format:

group create GROUP_NAME [--i CONTACT_ID]*

Example:

  • Lets imagine we wish to organize our contacts better by starting a mailing list of 'ao3' fanfic readers. We can start by creating an 'ao3' group with a few initial members using the command group create ao3 --i 212 --i 215

ug groupcreate1
Figure 19. Entering the command
  • This creates a group with name 'ao3' that contains contacts with ID '212' and '215'
    The display will show the group created and the contact that has been added.

ug groupcreate2
Figure 20. Command executed Group created
group descriptions and editing groups will be supported in v2.0

4.3.2. Remove member from a group: remove

Removes member from a group.

Format:

group remove GROUP_NAME [--i CONTACT_ID]+

Example:

  • Social circles change over time. One of our former 'ao3' members have left us to join rival fanfic site 'wattpad'. To remove an 'ao3' members we can do so with the command group remove ao3 --i 215

ug groupremove1
Figure 21. Entering the command
  • This adds a removes the contact with ID '000215' from the group with name 'ao3' The display will show the group and the contact left in the group.

ug groupremove2
Figure 22. Command executed group member removed
The UI prompt would indicate 'Attempting to remove contact(s) from group' this prompt is a confirmation and signals that the command has been executed and no other prompt will be given. The prompts purpose is to warn that contact ids given which do not appear in the Group would not be detected and the user should check it manually. Auto detection of contacts to be deleted that are not found in the Group is left to v2.0

4.3.3. Add member to a group: add

Adds members to a group.

Format:

group add GROUP_NAME [--i CONTACT_ID]+

Example:

  • Over time our 'ao3' group has grown with new members joining. We need to update our group to record the recent addition. To add a member to our 'ao3' group we can use the command group create ao3 --i 90040

ug groupadd1
Figure 23. Entering the command
  • This adds a contact with ID '90040' to the group with name 'ao3' The display will show the group and the contact that has been added.

ug groupadd2
Figure 24. Command executed Group created
The UI prompt would indicate 'Attempting to add contact(s) from group' this prompt is a confirmation and signals that the command has been executed and no other prompt will be given. The prompts purpose is to warn that contact ids given which do not appear in the Addressbook would not be detected and the user should check it manually. Auto detection of contacts to be added that are not found in the Addressbook is left to v2.0

4.3.4. List all groups: list

Lists all groups

Format:

group list

Example:

  • Sometimes we may wish to take a step back and view all the groups we are managing. To show all the groups stored we can use the command group list

ug grouplist1
Figure 25. Entering the command
  • This displays all groups

ug grouplist2
Figure 26. Command executed, Groups displayed
group descriptions will be supported in v2.0

4.3.5. Find a group: find

Finds a specific group and display the members

Format:

group find GROUP_NAME

Example:

  • Often we may forget who is in a group and wish to know the contacts currently in a group. To find the 'ao3' group from the list of groups, we can use command group find ao3 with the exact group name we are looking for

ug groupfind1
Figure 27. Entering the command
  • This searches for a group with the exact name as group 'ao3' The display will show the group and the group members

ug groupfind2
Figure 28. Command executed, Group found and displaying Contacts
group descriptions will be supported in v2.0

4.3.6. Display profile of a group: show [coming in v2.0]

Display the profile page of a contact group which shows the members of the group and notes tagged with the group.

Format:

group show GROUP_NAME

Example:

  • group show CS2103-F12-3

4.3.7. Delete a group: delete

Deletes a group. Note the contacts in the deleted group still exists, only the group has been disbanded.

Format:

group delete GROUP_NAME​

Example:

  • Suffering from success, our little mailing list of 'ao3' members have grown too large and split into several regional chapters to facilitate organization. Its time to disband the original 'ao3' group and make new groups for each chapter. To delete the group 'ao3', we can use command group delete ao3

ug groupdelete1
Figure 29. Entering the command
  • This searches for a group with the exact name as group 'ao3' The display will display all remaining groups in a list.

ug groupdelete2
Figure 30. Command executed Group deleted
group descriptions will be supported in v2.0

4.4. Manage your notes: note

Tagline can help people to manage their notes easily. When you use note commands, a view that displays a list of notes will appear in the right pane. The left pane still displays a chat bot for user interaction.

NoteListExample
Figure 31. An example of Note View

4.4.1. Creates a note: create

Creates a new note. If any tags are listed, the note will be tagged with them.
Notes without title will be titled "Untitled Note"

Format:

note create [--T TITLE] [--c CONTENT] [--t TAG]*

TITLE and CONTENT can be optional if the other is defined but cannot be both empty.

Example:

  1. Let’s say you found a resource link that can be referenced for your assignment and you would like to make a note. You can create a note with the resource link as the content with the following command note create --T MIPS --c https://en.wikipedia.org/wiki/MIPS_architecture --t #assignment

    ug notecreate1
    Figure 32. Entering note create command
  2. A note is created with the title "MIPS" and content "https://en.wikipedia.org/wiki/MIPS_architecture". The note is also tagged with the hashtag "assignment".
    The note created is displayed in the right pane.

    ug notecreate2
    Figure 33. Note created after command execution
Upload of image will be supported in v2.0

4.4.2. Delete a note: delete

Deletes a note.

Format:

note delete NOTE_ID

As assigned note id is static, deleted note id are not reassigned.

Example:

  1. If you have completed your assignment and would like to delete the note related to the resource link, you can delete with the command note delete 16.
    As the note id is "00016", you can enter "16" as the NOTE_ID parameter.

    ug notedelete1
    Figure 34. Entering note delete command
  2. The note will be deleted from TagLine.

    ug notedelete2
    Figure 35. Note deleted after command execution

4.4.3. Edit a note: edit

Edits a saved note.

Format:

note edit NOTE_ID [--T NEW_TITLE] [--c NEW_CONTENT]

Enter the parameters to update.

Example:

  1. If you find that your note title should have more information, you can enter the command note edit 16 --T CS2100 Assignment: MIPS

    ug noteedit1
    Figure 36. Entering note edit command
  2. The title of the note will be changed from "MIPS" to "CS2100 Assignment: MIPS".

    ug noteedit2
    Figure 37. Note edited after command execution
Upload of image will be supported in v2.0
Partial editing will be supported in v2.0

4.4.4. Tag a note: tag

Tags a note with one or more tags.

Format:

note tag NOTE_ID [--t TAG]+

In Tagline, there are 3 types of tags. They are hash tag, contact tag and group tag.

Tag a note with a hash tag

Hash tag is a tag of the form #TOPIC where TOPIC could be substituted with any string not longer than 30 characters.

Example: #Assignment_1, #Project CS2103T, #Meeting Notes

By tagging a note with a hash tag, user can easily find all notes related to a certain topic.

Here is an example of tagging a note with a hash tag

  1. Enter the command note tag 1 --t #any topic into the command box.

    ug notetag hashtag1
  2. Send the command and you will be able to see the tag in the note view.

    ug notetag hashtag2


Tag a note with a contact tag

Contact tag is a tag of the form @CONTACT_ID where CONTACT_ID could be substituted with any non-negative integer with at most 8 digits.

Example: @12345, @00001, @2

By tagging a note with a contact tag, user can easily find all notes related to a certain contact.

Here is an example of tagging a note with a contact tag

  1. Enter the command note tag 1 --t @2 into the command box.

    ug notetag contacttag1
  2. Send the command and you will be able to see the tag in the note view.

    ug notetag contacttag2
Tag a note with a group tag

Group tag is a tag of the form %GROUP_NAME where GROUP_NAME could be substituted with any string that does not contain whitespace.

Example: #cs2103t, #cs2100-cs2101

By tagging a note with a group tag, user can easily find all notes related to a certain group of contacts.


Here is an example of tagging a note with a group tag

  1. Enter the command note tag 1 --t #cs2103t into the command box.

    ug notetag grouptag1
  2. Send the command and you will be able to see the tag in the note view.

    ug notetag grouptag2


Tag a note with all tags

We can also combine the three tags above in one note tag command.

Example:

  • note tag 00002 --t #CS2103T --t #Duke --t @12300 --t %cs2103T

    Tags note with id '00002' with tag '#CS2103T', '#Duke' and user with id '@12300' and group '%cs2103T'.

4.4.5. Untag a note: untag

Untags a note from one or more tags.

Format:

note untag NOTE_ID [--t TAG]+

Similar with note tag command we can also untag a note with three types of tags.

Example:

  • note untag 00002 --t #CS2103T --t #Duke --t @12300 --t %cs2103T

    Untags '#CS2103T', '#Duke' and user with id '@12300' and group '%cs2103T' from note with id '00002'.

4.4.6. List notes: list

Lists all notes in the application. Filters can be applied to show only notes related to certain keywords, hashtags, users or groups.

Format:

note list [# / @ / %][FILTER]

Example:

Format Example Outcome

note list

note list

Lists all notes.

note list KEYWORD

note list meeting

Lists all notes which contain the phrase “meeting”.

note list #HASHTAG

note list #cs2100

Lists all notes with the hashtag '#cs2100'.

note list @CONTACTID

note list @12345

Lists all notes tagged with the contact of ID '12345'.

note list %GROUPNAME

note list %cs2103-team

Lists all notes tagged with the group 'cs2103-team'.

  1. When you would like to see all the notes you have in TagLine, you can enter the command note list.

    ug notelist1
    Figure 38. Entering note list command
  2. All notes are displayed.

    ug notelist2
    Figure 39. All notes displayed
  3. When you would like to find the notes containing the keyword "cs", you can enter the command note list cs.

    ug notelist3
    Figure 40. Entering note list command with keyword
  4. Notes with the keyword "cs" found in the title or content are displayed.

    ug notelist4
    Figure 41. Notes containing keyword displayed
  5. When you would like to see the notes tagged with the hashtag "assignment", you can enter the command note list #assignment.

    ug notelist5
    Figure 42. Entering note list command with tag filter
  6. Notes tagged with "#assignment" are displayed.

    ug notelist6
    Figure 43. Filtered tagged notes displayed
  7. When you would like to filter by multiple tags, you can enter the command note list @00001 %cs2103t.

    ug notelist7
    Figure 44. Entering note list command with multiple tag filter
  8. Notes tagged with contact of contact id "1" or with group with group name "cs2103t" are displayed.

    ug notelist8
    Figure 45. Filtered notes displayed

4.4.7. Clear all notes: clear

Clears all notes.

Format:

note clear

Executing this command will trigger a confirmation in the chatbot:

Please confirm some additional details for the command. Press the escape key to abort.
Are you sure you want to clear your contact list? Enter 'Y' to continue.
ug noteclear
Figure 46. Confirmation for clearing notes

If you answer "Y", the chatbot will clear all data in your contact list.
If you press the ESC key, the command will be aborted.

4.4.8. Sort your notes: sort [coming in v2.0]

Sort notes in different orders (i.e last updated date, alphabetically).

4.5. Manage your tags: tag

4.5.1. List tags: list

Lists all valid tags that have ever been associated with your notes. A tag will appear in this list if it has been successfully used to tag a note previously. However, if a tag is no longer valid, it will be automatically removed from the list. Here are the conditions for a tag to be marked as invalid: - The tag is considered as a contact tag and the referenced contact is removed from Tagline. - The tag is considered as a group tag and the referenced group is removed from Tagline.

NOTE

if you untag a note, it will still appear in this list. The tag list serves as a history to remind you of tags that you can use.

Format:

tag list

Example:

  • Suppose you want to know tags that you have used previously and still valid.
    You can just use the following command: tag list.

    ug taglist1
    Figure 47. Command executed, list of tags displayed

5. Command summary

Contact

  • Create a contact: contact create --n NAME [--p PHONE_NUMBER] [--e EMAIL] [--a ADDRESS] [--d DESCRIPTION]

  • List all contacts: contact list

  • Display profile of a contact: contact show CONTACT_ID

  • Edit a contact: contact edit CONTACT_ID [--n NAME] [--p PHONE_NUMBER] [--e EMAIL] [--a ADDRESS] [--d DESCRIPTION]

  • Delete a contact: contact delete CONTACTID

  • Find contact by keyword: contact find KEYWORD

  • Clear all contacts: contact clear

Group

  • Create a group: group create GROUP_NAME [--i CONTACT_ID]*

  • Remove a member from group: group remove GROUP_NAME [--i CONTACT_ID]+

  • Add a member to group: group add GROUP_NAME [--i CONTACT_ID]+

  • List all groups: group list

  • Find a group: group find GROUP_NAME

  • Delete a group: group delete GROUP_NAME​

Note

  • Create a note: note create [--T TITLE] [--c CONTENT] [--t TAG]*

  • Delete a note: note delete NOTE_ID

  • Edit a note: note edit NOTE_ID [--T NEW_TITLE] [--c NEW_CONTENT]

  • Tag a note: note tag NOTE_ID [--t TAG]+

  • Untag a note: note untag NOTE_ID [--t TAG]+

  • List all notes: note list

  • Filter notes by keyword: note list [KEYWORD]+

  • Filter notes by tag: note list [TAG]+

  • Clear all notes: note clear

Tag

  • List all tags: tag list