<commit_before># User Guide

* [Quick Start](#quick-start)
* [Features](#features)
* [FAQ](#faq)
* [Command Summary](#command-summary)

## About Us

**<NAME>**
* Team Leader
* Testing

**<NAME>**
* Code Quality
* Time Keeper

**<NAME>**
* Documentation
* GUI Design

**<NAME>**
* Integration
* Eclipse Specialist


## Table of Content
1. About GGist
2. User Guide
   * Getting Started
   * Feature Details
   * Troubleshoot
   * Command Cheatsheet
3. User Stories
4. Use Cases
5. Non-functional Requirements
6. Glossary
7. Product Survey

## About GGist

Are you constantly overwhelmed by the number of things you have to do everyday or do you have a really hard time managing them? If you answer is yes, GGist is the perfect solution to your daily struggle. GGist is a one-stop user friendly desktop organiser designed to aid working professionals like you to better organize and prioritise your everyday tasks.

Unlike most of the organisers in the market, GGist can be launched with a keyboard shortcut and accepts flexible natural language commands via keyboard. This makes it convenient for working professionals like you who can type fast, spend most of the time near a computer and prefer typing commands. 

Are you ready to embrace a new way of living and have your life better organized? Let’s begin!


## Quick Start

0. Ensure you have Java version `1.8.0_60` or later installed in your Computer.<br>
   > Having any Java 8 version is not enough. <br>
   This app will not work with earlier versions of Java 8.
   
1. Download the latest `GGist.jar` from the [releases](../../../releases) tab.
2. Copy the file to the folder you want to use as the home folder for your GGist application.
3. Double-click on the .jar file. Press both "control" and "G" at the same time to start the app. The GUI should appear in a few seconds. 
   > <img src="images/GGistUiProto.png" width="600">

4. Type the command in the command box and press <kbd>Enter</kbd> to execute it. <br>
   e.g. typing **`help`** and pressing <kbd>Enter</kbd> will open the help window. 
5. Some example commands you can try:
   * **`list`**` 31 oct` : 
     lists all the tasks on 31 oct in GGist.
   * **`add`**` water the plants, jul 10, 1400` : 
     adds a task `water the plants` with deadline 2pm on the 10th of July to GGist.
   * **`delete`**` 3` : deletes the 3rd task shown in the current list
   * **`exit`** : exits the app
6. Refer to the [Features](#features) section below for details of each command.<br>


## Features

> **Command Format**
> * Words in `UPPER_CASE` are the parameters.
> * Items in `SQUARE_BRACKETS` are optional.
> * Items with `...` after them can have multiple instances.
> * The order of parameters is fixed.

#### Viewing help : `help`
Format: `help`

> Help is also shown if you enter an incorrect command e.g. `abcd`
 
#### Adding a task: `add`
Adds a task to GGist<br>
General format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

LEAH ADD IMAGE HERE!!!!!!!!!!!!

###### With deadline
Format: `add TASK, DATE, TIME, [PRIORITY], [FREQUENCY]`

Examples: 
* `add write diary, jul 10, 1300`
* `add prepare presentation slides, mon, 1400, high`

###### Without any deadline
Format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

Examples: 
* `add buy milk, low`
* `add buy present for brother's birthday`

###### With start and end time
Format: `add TASK, DATE, TIME, [PRIORITY], [FREQUENCY]`

For this kind of task, the parameter TIME is in the format START-END.

Examples: 
* `add dad's birthday celebration, jul 10, 1900-2100, high`
* `add company's D&D, sun, 1900-2200`

###### Recurring
To make tasks repeating, simply  add the FREQUENCY parameter at the back.

Format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

Examples: 
* `add water the plants, 0800, high, daily`
* `add facial appointment, jul 10, med, monthly`

#### Listing all tasks : `list`
Shows a list of all tasks in a particular day.<br>
Format: `list DATE`

#### Search tasks by keywords: `search`
Searches and lists all tasks that contain the specified keyword.<br>
Format: `search KEYWORD`<br>
Examples:<br>
* `add buy milk, low`
* `add buy present for brother's birthday`

> * The search is case sensitive. e.g `hans` will not match `Hans`
> * The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`
> * Only the name is searched.
> * Only full words will be matched e.g. `Han` will not match `Hans`
> * Persons matching at least one keyword will be returned (i.e. `OR` search).
    e.g. `Hans` will match `Hans Bo`

Examples: 
* `find John`<br>
  Returns `<NAME>` but not `john`
* `find Betsy <NAME>`<br>
  Returns Any person having names `Betsy`, `Tim`, or `John`

#### Deleting a person : `delete`
Deletes the specified person from the address book. Irreversible.<br>
Format: `delete INDEX`

> Deletes the person at the specified `INDEX`. 
  The index refers to the index number shown in the most recent listing.<br>
  The index **must be a positive integer** 1, 2, 3, ...

Examples: 
* `list`<br>
  `delete 2`<br>
  Deletes the 2nd person in the address book.
* `find Betsy`<br> 
  `delete 1`<br>
  Deletes the 1st person in the results of the `find` command.

#### Select a person : `select`
Selects the person identified by the index number used in the last person listing.<br>
Format: `select INDEX`

> Selects the person and loads the Google search page the person at the specified `INDEX`. 
  The index refers to the index number shown in the most recent listing.<br>
  The index **must be a positive integer** 1, 2, 3, ...<commit_msg>no message<commit_after># User Guide

* [Quick Start](#quick-start)
* [Features](#features)
* [FAQ](#faq)
* [Command Summary](#command-summary)

## About Us

**<NAME>**
* Team Leader
* Testing

**<NAME>**
* Code Quality
* Time Keeper

**<NAME>**
* Documentation
* GUI Design

**<NAME>**
* Integration
* Eclipse Specialist


## Table of Content
1. About GGist
2. User Guide
   * Getting Started
   * Feature Details
   * Troubleshoot
   * Command Cheatsheet
3. User Stories
4. Use Cases
5. Non-functional Requirements
6. Glossary
7. Product Survey

## About GGist

Are you constantly overwhelmed by the number of things you have to do everyday or do you have a really hard time managing them? If you answer is yes, GGist is the perfect solution to your daily struggle. GGist is a one-stop user friendly desktop organiser designed to aid working professionals like you to better organize and prioritise your everyday tasks.

Unlike most of the organisers in the market, GGist can be launched with a keyboard shortcut and accepts flexible natural language commands via keyboard. This makes it convenient for working professionals like you who can type fast, spend most of the time near a computer and prefer typing commands. 

Are you ready to embrace a new way of living and have your life better organized? Let’s begin!


## Quick Start

0. Ensure you have Java version `1.8.0_60` or later installed in your Computer.<br>
   > Having any Java 8 version is not enough. <br>
   This app will not work with earlier versions of Java 8.
   
1. Download the latest `GGist.jar` from the [releases](../../../releases) tab.
2. Copy the file to the folder you want to use as the home folder for your GGist application.
3. Double-click on the .jar file. Press both "control" and "G" at the same time to start the app. The GUI should appear in a few seconds. 
   > <img src="images/GGistUiProto.png" width="600">

4. Type the command in the command box and press <kbd>Enter</kbd> to execute it. <br>
   e.g. typing **`help`** and pressing <kbd>Enter</kbd> will open the help window. 
5. Some example commands you can try:
   * **`list`**` 31 oct` : 
     lists all the tasks on 31 oct in GGist.
   * **`add`**` water the plants, jul 10, 1400` : 
     adds a task `water the plants` with deadline 2pm on the 10th of July to GGist.
   * **`delete`**` 3` : deletes the 3rd task shown in the current list
   * **`exit`** : exits the app
6. Refer to the [Features](#features) section below for details of each command.<br>


## Features

> **Command Format**
> * Words in `UPPER_CASE` are the parameters.
> * Items in `SQUARE_BRACKETS` are optional.
> * Items with `...` after them can have multiple instances.
> * The order of parameters is fixed.

#### Viewing help : `help`
Format: `help`

> Help is also shown if you enter an incorrect command e.g. `abcd`
 
#### Adding a task: `add`
Adds a task to GGist<br>
General format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

LEAH ADD IMAGE HERE!!!!!!!!!!!!

###### With deadline
Format: `add TASK, DATE, TIME, [PRIORITY], [FREQUENCY]`

Examples: 
* `add write diary, jul 10, 1300`
* `add prepare presentation slides, mon, 1400, high`

###### Without any deadline
Format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

Examples: 
* `add buy milk, low`
* `add buy present for brother's birthday`

###### With start and end time
Format: `add TASK, DATE, TIME, [PRIORITY], [FREQUENCY]`

For this kind of task, the parameter TIME is in the format START-END.

Examples: 
* `add dad's birthday celebration, jul 10, 1900-2100, high`
* `add company's D&D, sun, 1900-2200`

###### Recurring
To make tasks repeating, simply  add the FREQUENCY parameter at the back.

Format: `add TASK, [DATE], [TIME], [PRIORITY], [FREQUENCY]`

Examples: 
* `add water the plants, 0800, high, daily`
* `add facial appointment, jul 10, med, monthly`

#### Listing all tasks : `list`
Shows a list of all tasks in a particular day.<br>
Format: `list DATE`

#### Search tasks by keywords: `search`
Searches and lists all tasks that contain the specified keyword.<br>
Format: `search KEYWORD`<br>

Examples:
* `search buy milk`
* `search oct 31`

> * The search is not case sensitive.
> * The order of the keywords does not matter. e.g. `buy milk oct 21` will match `oct 21 buy milk`
> * Only full words will be matched e.g. `buy milk` will not match `buy cow`
> * Tasks matching keywords will be returned

Examples: 
* `search oct 1`<br>
  Returns all tasks that have the date `oct 1`.
* `search buy milk`<br>
  Returns the specific task `buy milk` if it can be found.
  
#### Deleting a person : `delete`
Deletes the specified task from the list. Irreversible.<br>
Format: `delete INDEX`

> Deletes the task at the specified `INDEX`. 
  The index refers to the index number shown in the most recent listing.<br>
  The index **must be a positive integer** 1, 2, 3, ...

Examples: 
* `delete 2`<br>
  Deletes the 2nd task in the address book.
* `search buy milk`<br> 
  `delete 1`<br>
  Deletes the 1st task in the results of the `search` command.

#### Select a person : `select`
Selects the person identified by the index number used in the last person listing.<br>
Format: `select INDEX`

> Selects the person and loads the Google search page the person at the specified `INDEX`. 
  The index refers to the index number shown in the most recent listing.<br>
  The index **must be a positive integer** 1, 2, 3, ...
{'fraction_non_alphanumeric': 0.11097982185057262, 'fraction_numerical': 0.015815306307944012, 'mean_word_length': 3.9032976827094474, 'pattern_counts': {'":': 0, '<': 59, '<?xml version=': 0, '>': 88, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '608831', 'n_tokens_mistral': 3618, 'n_tokens_neox': 3342, 'n_words': 1625}