From 8c1b07c2c8b7909c904df77cf143c2f1fecfa1e4 Mon Sep 17 00:00:00 2001
From: M M Arif <mmarif@noreply.codeberg.org>
Date: Wed, 14 Sep 2022 20:40:44 +0200
Subject: [PATCH] Timeline issue/pr (#1201)

Closes #953

Co-authored-by: M M Arif <mmarif@swatian.com>
Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1201
Reviewed-by: qwerty287 <qwerty287@noreply.codeberg.org>
---
 .woodpecker/check.yml                         |  12 +-
 .../activities/AddNewAccountActivity.java     |   6 +-
 .../gitnex/activities/CodeEditorActivity.java |   6 +-
 .../gitnex/activities/CreateFileActivity.java |   7 +-
 .../activities/CreateIssueActivity.java       |  13 +-
 .../activities/CreatePullRequestActivity.java |  13 +-
 .../activities/CreateReleaseActivity.java     |  13 +-
 .../gitnex/activities/CreateRepoActivity.java |   7 +-
 .../gitnex/activities/DeepLinksActivity.java  |   6 +-
 .../gitnex/activities/EditIssueActivity.java  |  14 +-
 .../activities/IssueDetailActivity.java       | 103 ++-
 .../mian/gitnex/activities/LoginActivity.java |  19 +-
 .../mian/gitnex/activities/MainActivity.java  |  22 +-
 .../gitnex/activities/ProfileActivity.java    |   7 +-
 .../gitnex/activities/RepoDetailActivity.java |  36 +-
 .../mian/gitnex/adapters/CommitsAdapter.java  |  14 +-
 .../gitnex/adapters/ExploreIssuesAdapter.java |  16 +-
 .../adapters/ExploreRepositoriesAdapter.java  |   6 +-
 .../mian/gitnex/adapters/FilesAdapter.java    |   6 +-
 .../gitnex/adapters/IssueCommentsAdapter.java | 593 ++++++++++++++++--
 .../mian/gitnex/adapters/IssuesAdapter.java   |  16 +-
 .../gitnex/adapters/PullRequestsAdapter.java  |  16 +-
 .../mian/gitnex/adapters/ReleasesAdapter.java |   8 +-
 .../gitnex/adapters/RepoForksAdapter.java     |   6 +-
 .../gitnex/adapters/ReposListAdapter.java     |  12 +-
 .../BottomSheetSingleIssueFragment.java       |   6 +-
 .../fragments/CommitDetailFragment.java       |  17 +-
 .../fragments/ExploreIssuesFragment.java      |   7 +-
 .../ExploreRepositoriesFragment.java          |   7 +-
 .../fragments/ExploreUsersFragment.java       |   7 +-
 .../mian/gitnex/fragments/FilesFragment.java  |   7 +-
 .../mian/gitnex/fragments/IssuesFragment.java |   7 +-
 .../gitnex/fragments/MyIssuesFragment.java    |   6 +-
 .../gitnex/fragments/MyProfileFragment.java   |   7 +-
 .../fragments/MyRepositoriesFragment.java     |   7 +-
 .../fragments/NotificationsFragment.java      |   7 +-
 .../OrganizationTeamInfoReposFragment.java    |   7 +-
 .../fragments/OrganizationsFragment.java      |   7 +-
 .../fragments/PullRequestCommitsFragment.java |   7 +-
 .../fragments/PullRequestsFragment.java       |   7 +-
 .../gitnex/fragments/RepoInfoFragment.java    |  15 +-
 .../fragments/RepositoriesFragment.java       |   7 +-
 .../gitnex/fragments/SettingsFragment.java    |  10 +-
 .../StarredRepositoriesFragment.java          |   7 +-
 .../fragments/profile/DetailFragment.java     |   9 +-
 .../fragments/profile/FollowersFragment.java  |   7 +-
 .../fragments/profile/FollowingFragment.java  |   7 +-
 .../profile/OrganizationsFragment.java        |   7 +-
 .../profile/RepositoriesFragment.java         |   7 +-
 .../profile/StarredRepositoriesFragment.java  |   7 +-
 .../java/org/mian/gitnex/helpers/AppUtil.java |  29 +-
 .../org/mian/gitnex/helpers/Markdown.java     |  15 +-
 .../org/mian/gitnex/helpers/PicassoCache.java |   7 +-
 .../gitnex/helpers/RoundedTransformation.java |   7 +-
 .../gitnex/notifications/Notifications.java   |   6 +-
 .../viewmodels/IssueCommentsViewModel.java    |  74 ++-
 app/src/main/res/drawable/ic_bookmark.xml     |  13 +
 app/src/main/res/drawable/ic_branch.xml       |  70 ++-
 app/src/main/res/drawable/ic_browser.xml      |  30 +-
 app/src/main/res/drawable/ic_clock.xml        |  20 +
 app/src/main/res/drawable/ic_dependency.xml   |  41 ++
 app/src/main/res/drawable/ic_directory.xml    |  11 +-
 app/src/main/res/drawable/ic_file.xml         |  16 +-
 app/src/main/res/drawable/ic_flame.xml        |  13 +
 app/src/main/res/drawable/ic_fork.xml         |  47 +-
 app/src/main/res/drawable/ic_history.xml      |  20 +
 app/src/main/res/drawable/ic_kanban.xml       |  34 +
 app/src/main/res/drawable/ic_key.xml          |  34 +
 app/src/main/res/drawable/ic_milestone.xml    |  25 +-
 app/src/main/res/drawable/ic_organization.xml |  56 +-
 app/src/main/res/drawable/ic_pull_request.xml |  70 ++-
 .../drawable/{ic_reset.xml => ic_refresh.xml} |   8 +-
 app/src/main/res/drawable/ic_repo.xml         |  21 +-
 app/src/main/res/drawable/ic_tag.xml          |  20 +
 app/src/main/res/drawable/ic_update.xml       |  27 -
 .../main/res/layout/activity_issue_detail.xml | 389 ++++++------
 .../res/layout/bottom_sheet_organization.xml  |   2 +-
 .../res/layout/bottom_sheet_releases_tags.xml |   2 +-
 app/src/main/res/layout/bottom_sheet_repo.xml |   2 +-
 .../res/layout/bottom_sheet_single_issue.xml  |  41 +-
 .../res/layout/fragment_commit_details.xml    |  41 +-
 app/src/main/res/layout/list_commits.xml      |  24 +-
 app/src/main/res/layout/list_diff_files.xml   |   6 +-
 .../main/res/layout/list_issue_comments.xml   | 119 +++-
 app/src/main/res/layout/list_issues.xml       |  51 +-
 app/src/main/res/layout/list_labels.xml       |   2 +-
 .../res/layout/list_most_visited_repos.xml    |  24 +-
 app/src/main/res/layout/list_pr.xml           |  45 +-
 app/src/main/res/layout/list_releases.xml     |   2 +-
 app/src/main/res/menu/reset_menu.xml          |   6 +-
 app/src/main/res/values/strings.xml           |  41 ++
 91 files changed, 2017 insertions(+), 667 deletions(-)
 create mode 100644 app/src/main/res/drawable/ic_bookmark.xml
 create mode 100644 app/src/main/res/drawable/ic_clock.xml
 create mode 100644 app/src/main/res/drawable/ic_dependency.xml
 create mode 100644 app/src/main/res/drawable/ic_flame.xml
 create mode 100644 app/src/main/res/drawable/ic_history.xml
 create mode 100644 app/src/main/res/drawable/ic_kanban.xml
 create mode 100644 app/src/main/res/drawable/ic_key.xml
 rename app/src/main/res/drawable/{ic_reset.xml => ic_refresh.xml} (85%)
 create mode 100644 app/src/main/res/drawable/ic_tag.xml
 delete mode 100644 app/src/main/res/drawable/ic_update.xml

diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml
index 31ce0882..678558cb 100644
--- a/.woodpecker/check.yml
+++ b/.woodpecker/check.yml
@@ -7,12 +7,12 @@ pipeline:
       regex: " \\\\* \\\\@author [\\\\S\\\\s]+"
       must_contain: true
 
-  style:
-    image: qwerty287/woodpecker-intellij-formatter
-    group: check
-    settings:
-      file_pattern: "*.java"
-      path: "app/"
+  #style:
+    #image: qwerty287/woodpecker-intellij-formatter
+    #group: check
+   # settings:
+      #file_pattern: "*.java"
+      #path: "app/"
 
   test:
     image: alvrme/alpine-android:android-31-jdk11
diff --git a/app/src/main/java/org/mian/gitnex/activities/AddNewAccountActivity.java b/app/src/main/java/org/mian/gitnex/activities/AddNewAccountActivity.java
index 0d198bae..c54c2265 100644
--- a/app/src/main/java/org/mian/gitnex/activities/AddNewAccountActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/AddNewAccountActivity.java
@@ -17,7 +17,11 @@ import org.mian.gitnex.database.api.BaseApi;
 import org.mian.gitnex.database.api.UserAccountsApi;
 import org.mian.gitnex.database.models.UserAccount;
 import org.mian.gitnex.databinding.ActivityAddNewAccountBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.PathsHelper;
+import org.mian.gitnex.helpers.Toasty;
+import org.mian.gitnex.helpers.UrlHelper;
+import org.mian.gitnex.helpers.Version;
 import org.mian.gitnex.structs.Protocol;
 import java.net.URI;
 import java.util.Objects;
diff --git a/app/src/main/java/org/mian/gitnex/activities/CodeEditorActivity.java b/app/src/main/java/org/mian/gitnex/activities/CodeEditorActivity.java
index b8600723..c60da848 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CodeEditorActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CodeEditorActivity.java
@@ -10,7 +10,11 @@ import com.amrdeveloper.codeview.Code;
 import org.apache.commons.lang3.EnumUtils;
 import org.mian.gitnex.R;
 import org.mian.gitnex.databinding.ActivityCodeEditorBinding;
-import org.mian.gitnex.helpers.codeeditor.*;
+import org.mian.gitnex.helpers.codeeditor.CustomCodeViewAdapter;
+import org.mian.gitnex.helpers.codeeditor.LanguageManager;
+import org.mian.gitnex.helpers.codeeditor.LanguageName;
+import org.mian.gitnex.helpers.codeeditor.SourcePositionListener;
+import org.mian.gitnex.helpers.codeeditor.ThemeName;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateFileActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateFileActivity.java
index ab66764c..2dc2e8d7 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateFileActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateFileActivity.java
@@ -15,7 +15,12 @@ import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
 import org.apache.commons.io.FilenameUtils;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.Branch;
+import org.gitnex.tea4j.v2.models.CreateFileOptions;
+import org.gitnex.tea4j.v2.models.DeleteFileOptions;
+import org.gitnex.tea4j.v2.models.FileDeleteResponse;
+import org.gitnex.tea4j.v2.models.FileResponse;
+import org.gitnex.tea4j.v2.models.UpdateFileOptions;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.ActivityCreateFileBinding;
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java
index 51712f62..b78fb61f 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateIssueActivity.java
@@ -12,7 +12,11 @@ import android.widget.ArrayAdapter;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.CreateIssueOption;
+import org.gitnex.tea4j.v2.models.Issue;
+import org.gitnex.tea4j.v2.models.Label;
+import org.gitnex.tea4j.v2.models.Milestone;
+import org.gitnex.tea4j.v2.models.User;
 import org.mian.gitnex.R;
 import org.mian.gitnex.actions.AssigneesActions;
 import org.mian.gitnex.actions.LabelsActions;
@@ -28,7 +32,12 @@ import org.mian.gitnex.helpers.AppUtil;
 import org.mian.gitnex.helpers.Constants;
 import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Objects;
 import retrofit2.Call;
 import retrofit2.Callback;
 
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java
index ae003072..951238cf 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreatePullRequestActivity.java
@@ -11,7 +11,11 @@ import android.widget.ImageView;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.Branch;
+import org.gitnex.tea4j.v2.models.CreatePullRequestOption;
+import org.gitnex.tea4j.v2.models.Label;
+import org.gitnex.tea4j.v2.models.Milestone;
+import org.gitnex.tea4j.v2.models.PullRequest;
 import org.mian.gitnex.R;
 import org.mian.gitnex.actions.LabelsActions;
 import org.mian.gitnex.adapters.LabelsListAdapter;
@@ -22,7 +26,12 @@ import org.mian.gitnex.fragments.PullRequestsFragment;
 import org.mian.gitnex.helpers.Constants;
 import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Objects;
 import retrofit2.Call;
 import retrofit2.Callback;
 
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java
index eb520339..8fa49cb9 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateReleaseActivity.java
@@ -8,9 +8,18 @@ import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.*;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.ImageView;
 import androidx.annotation.NonNull;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.Branch;
+import org.gitnex.tea4j.v2.models.CreateReleaseOption;
+import org.gitnex.tea4j.v2.models.CreateTagOption;
+import org.gitnex.tea4j.v2.models.Release;
+import org.gitnex.tea4j.v2.models.Tag;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.ActivityCreateReleaseBinding;
diff --git a/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java b/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java
index b1189e85..46431ecb 100644
--- a/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/CreateRepoActivity.java
@@ -7,7 +7,12 @@ import android.os.Looper;
 import android.util.Log;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.*;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.ImageView;
 import androidx.annotation.NonNull;
 import org.gitnex.tea4j.v2.models.CreateRepoOption;
 import org.gitnex.tea4j.v2.models.Organization;
diff --git a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
index 8d5bc133..42b54b10 100644
--- a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java
@@ -9,7 +9,11 @@ import android.util.Log;
 import android.view.View;
 import androidx.annotation.NonNull;
 import org.apache.commons.lang3.StringUtils;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.ContentsResponse;
+import org.gitnex.tea4j.v2.models.Organization;
+import org.gitnex.tea4j.v2.models.PullRequest;
+import org.gitnex.tea4j.v2.models.Repository;
+import org.gitnex.tea4j.v2.models.User;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.database.api.BaseApi;
diff --git a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
index f350766d..88c23200 100644
--- a/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/EditIssueActivity.java
@@ -11,7 +11,12 @@ import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.inputmethod.InputMethodManager;
-import android.widget.*;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
 import androidx.annotation.NonNull;
 import org.gitnex.tea4j.v2.models.EditIssueOption;
 import org.gitnex.tea4j.v2.models.Issue;
@@ -28,7 +33,12 @@ import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Objects;
 import retrofit2.Call;
 import retrofit2.Callback;
 
diff --git a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
index 39528963..6406b878 100644
--- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java
@@ -16,7 +16,6 @@ import android.view.MenuItem;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
 import android.widget.ScrollView;
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
@@ -94,7 +93,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 	private String repoName;
 	private int issueIndex;
 	private String issueCreator;
-	private IssueContext issue;
+	public IssueContext issue;
 	private LabelsListAdapter labelsAdapter;
 	private AssigneesListAdapter assigneesAdapter;
 	private List<Integer> currentLabelsIds = new ArrayList<>();
@@ -124,6 +123,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 			}
 		}
 	});
+	private int page = 1;
 
 	@Override
 	public void onCreate(Bundle savedInstanceState) {
@@ -164,10 +164,11 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 
 		viewBinding.pullToRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
 
+			page = 1;
 			viewBinding.pullToRefresh.setRefreshing(false);
-			issueCommentsModel.loadIssueComments(repoOwner, repoName, issueIndex, ctx);
+			issueCommentsModel.loadIssueComments(repoOwner, repoName, issueIndex, ctx, null);
 
-		}, 500));
+		}, 50));
 
 		Typeface myTypeface = AppUtil.getTypeface(this);
 		viewBinding.toolbarTitle.setTypeface(myTypeface);
@@ -459,7 +460,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 
 			viewBinding.scrollViewComments.post(() -> {
 
-				issueCommentsModel.loadIssueComments(repoOwner, repoName, issueIndex, ctx);
+				issueCommentsModel.loadIssueComments(repoOwner, repoName, issueIndex, ctx, null);
 				commentEdited = false;
 			});
 		}
@@ -482,21 +483,37 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 
 		issueCommentsModel.getIssueCommentList(owner, repo, index, ctx).observe(this, issueCommentsMain -> {
 
-			assert issueCommentsMain != null;
-
 			Bundle bundle = new Bundle();
 			bundle.putString("repoOwner", repoOwner);
 			bundle.putString("repoName", repoName);
 			bundle.putInt("issueNumber", issueIndex);
 
 			adapter = new IssueCommentsAdapter(ctx, bundle, issueCommentsMain, getSupportFragmentManager(), this::onResume, issue);
+			adapter.setLoadMoreListener(new IssueCommentsAdapter.OnLoadMoreListener() {
 
+				@Override
+				public void onLoadMore() {
+
+					page += 1;
+					issueCommentsModel.loadMoreIssueComments(owner, repo, index, ctx, page, adapter);
+					viewBinding.progressBar.setVisibility(View.VISIBLE);
+				}
+
+				@Override
+				public void onLoadFinished() {
+
+					viewBinding.progressBar.setVisibility(View.GONE);
+				}
+			});
+
+			adapter.notifyDataChanged();
 			viewBinding.recyclerView.setAdapter(adapter);
-
+			viewBinding.progressBar.setVisibility(View.GONE);
 		});
 	}
 
 	private void getSingleIssue(String repoOwner, String repoName, int issueIndex) {
+
 		if(issue.hasIssue()) {
 			viewBinding.progressBar.setVisibility(View.GONE);
 			getSubscribed();
@@ -570,6 +587,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 	}
 
 	private void initWithIssue() {
+
 		if(!issue.getRepository().hasRepository()) {
 			getRepoInfo();
 		}
@@ -663,12 +681,18 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 			});
 		}
 
-		Markdown.render(ctx, EmojiParser.parseToUnicode(cleanIssueDescription), viewBinding.issueDescription, issue.getRepository());
+		viewBinding.author.setText(issue.getIssue().getUser().getLogin());
 
-		RelativeLayout.LayoutParams paramsDesc = (RelativeLayout.LayoutParams) viewBinding.issueDescription.getLayoutParams();
+		if(!cleanIssueDescription.equals("")) {
+			viewBinding.issueDescription.setVisibility(View.VISIBLE);
+			Markdown.render(ctx, EmojiParser.parseToUnicode(cleanIssueDescription), viewBinding.issueDescription, issue.getRepository());
+		}
+		else {
+			viewBinding.issueDescription.setVisibility(View.GONE);
+		}
 
-		LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(80, 80);
-		params1.setMargins(15, 0, 0, 0);
+		LinearLayout.LayoutParams paramsAssignees = new LinearLayout.LayoutParams(64, 64);
+		paramsAssignees.setMargins(15, 0, 0, 0);
 
 		if(issue.getIssue().getAssignees() != null) {
 
@@ -678,11 +702,11 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 
 				ImageView assigneesView = new ImageView(ctx);
 
-				PicassoService.getInstance(ctx).get().load(issue.getIssue().getAssignees().get(i).getAvatarUrl()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(48, 0)).resize(96, 96)
+				PicassoService.getInstance(ctx).get().load(issue.getIssue().getAssignees().get(i).getAvatarUrl()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(36, 0)).resize(72, 72)
 					.centerCrop().into(assigneesView);
 
 				viewBinding.frameAssignees.addView(assigneesView);
-				assigneesView.setLayoutParams(params1);
+				assigneesView.setLayoutParams(paramsAssignees);
 
 				int finalI = i;
 
@@ -699,17 +723,6 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 						return true;
 					});
 				}
-
-				/*if(!issue.getIssue().getAssignees().get(i).getFull_name().equals("")) {
-
-					assigneesView.setOnClickListener(
-						new ClickListener(getString(R.string.assignedTo, issue.getIssue().getAssignees().get(i).getFull_name()), ctx));
-				}
-				else {
-
-					assigneesView.setOnClickListener(
-						new ClickListener(getString(R.string.assignedTo, issue.getIssue().getAssignees().get(i).getLogin()), ctx));
-				}*/
 			}
 		}
 		else {
@@ -717,10 +730,10 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 			viewBinding.assigneesScrollView.setVisibility(View.GONE);
 		}
 
-		LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
-		params.setMargins(0, 0, 15, 0);
+		LinearLayout.LayoutParams paramsLabels = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+		paramsLabels.setMargins(0, 0, 15, 0);
 
-		if(issue.getIssue().getLabels() != null) {
+		if(issue.getIssue().getLabels().size() > 0) {
 
 			viewBinding.labelsScrollView.setVisibility(View.VISIBLE);
 
@@ -733,7 +746,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 				ImageView labelsView = new ImageView(ctx);
 				viewBinding.frameLabels.setOrientation(LinearLayout.HORIZONTAL);
 				viewBinding.frameLabels.setGravity(Gravity.START | Gravity.TOP);
-				labelsView.setLayoutParams(params);
+				labelsView.setLayoutParams(paramsLabels);
 
 				int height = AppUtil.getPixelsFromDensity(ctx, 20);
 				int textSize = AppUtil.getPixelsFromScaledDensity(ctx, 12);
@@ -787,27 +800,6 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 			viewBinding.issueModified.setVisibility(View.INVISIBLE);
 		}
 
-		if((issue.getIssue().getDueDate() == null && issue.getIssue().getMilestone() == null) && issue.getIssue().getAssignees() != null) {
-
-			paramsDesc.setMargins(0, 35, 0, 0);
-			viewBinding.issueDescription.setLayoutParams(paramsDesc);
-		}
-		else if(issue.getIssue().getDueDate() == null && issue.getIssue().getMilestone() == null) {
-
-			paramsDesc.setMargins(0, 55, 0, 0);
-			viewBinding.issueDescription.setLayoutParams(paramsDesc);
-		}
-		else if(issue.getIssue().getAssignees() == null) {
-
-			paramsDesc.setMargins(0, 35, 0, 0);
-			viewBinding.issueDescription.setLayoutParams(paramsDesc);
-		}
-		else {
-
-			paramsDesc.setMargins(0, 15, 0, 0);
-			viewBinding.issueDescription.setLayoutParams(paramsDesc);
-		}
-
 		viewBinding.issueCreatedTime.setText(TimeHelper.formatTime(issue.getIssue().getCreatedAt(), locale, timeFormat, ctx));
 		viewBinding.issueCreatedTime.setVisibility(View.VISIBLE);
 
@@ -842,17 +834,6 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
 
 			viewBinding.milestoneFrame.setVisibility(View.GONE);
 		}
-
-		/*if(!issue.getIssue().getUser().getFull_name().equals("")) {
-
-			viewBinding.assigneeAvatar.setOnClickListener(
-				new ClickListener(ctx.getResources().getString(R.string.issueCreator) + issue.getIssue().getUser().getFull_name(), ctx));
-		}
-		else {
-
-			viewBinding.assigneeAvatar.setOnClickListener(
-				new ClickListener(ctx.getResources().getString(R.string.issueCreator) + issue.getIssue().getUser().getLogin(), ctx));
-		}*/
 	}
 
 	private void getPullRequest() {
diff --git a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
index f686a70d..d37e48ca 100644
--- a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
@@ -3,17 +3,30 @@ package org.mian.gitnex.activities;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
-import android.widget.*;
+import android.widget.ArrayAdapter;
+import android.widget.AutoCompleteTextView;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.RadioGroup;
 import androidx.annotation.NonNull;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.AccessToken;
+import org.gitnex.tea4j.v2.models.CreateAccessTokenOption;
+import org.gitnex.tea4j.v2.models.GeneralAPISettings;
+import org.gitnex.tea4j.v2.models.ServerVersion;
+import org.gitnex.tea4j.v2.models.User;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.database.api.BaseApi;
 import org.mian.gitnex.database.api.UserAccountsApi;
 import org.mian.gitnex.database.models.UserAccount;
 import org.mian.gitnex.databinding.ActivityLoginBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.NetworkStatusObserver;
+import org.mian.gitnex.helpers.PathsHelper;
+import org.mian.gitnex.helpers.Toasty;
+import org.mian.gitnex.helpers.UrlHelper;
+import org.mian.gitnex.helpers.Version;
 import org.mian.gitnex.structs.Protocol;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
index aef956ac..e3780102 100644
--- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java
@@ -34,8 +34,26 @@ import org.mian.gitnex.database.api.BaseApi;
 import org.mian.gitnex.database.api.UserAccountsApi;
 import org.mian.gitnex.database.models.UserAccount;
 import org.mian.gitnex.databinding.ActivityMainBinding;
-import org.mian.gitnex.fragments.*;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.fragments.AdministrationFragment;
+import org.mian.gitnex.fragments.BottomSheetDraftsFragment;
+import org.mian.gitnex.fragments.BottomSheetMyIssuesFilterFragment;
+import org.mian.gitnex.fragments.DraftsFragment;
+import org.mian.gitnex.fragments.ExploreFragment;
+import org.mian.gitnex.fragments.MostVisitedReposFragment;
+import org.mian.gitnex.fragments.MyIssuesFragment;
+import org.mian.gitnex.fragments.MyProfileFragment;
+import org.mian.gitnex.fragments.MyRepositoriesFragment;
+import org.mian.gitnex.fragments.NotificationsFragment;
+import org.mian.gitnex.fragments.OrganizationsFragment;
+import org.mian.gitnex.fragments.RepositoriesFragment;
+import org.mian.gitnex.fragments.SettingsFragment;
+import org.mian.gitnex.fragments.StarredRepositoriesFragment;
+import org.mian.gitnex.helpers.AlertDialogs;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ChangeLog;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.structs.BottomSheetListener;
 import org.mian.gitnex.structs.FragmentRefreshListener;
 import java.util.ArrayList;
diff --git a/app/src/main/java/org/mian/gitnex/activities/ProfileActivity.java b/app/src/main/java/org/mian/gitnex/activities/ProfileActivity.java
index 81bd4865..50f88ede 100644
--- a/app/src/main/java/org/mian/gitnex/activities/ProfileActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/ProfileActivity.java
@@ -19,7 +19,12 @@ import com.google.android.material.tabs.TabLayoutMediator;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.fragments.BottomSheetUserProfileFragment;
-import org.mian.gitnex.fragments.profile.*;
+import org.mian.gitnex.fragments.profile.DetailFragment;
+import org.mian.gitnex.fragments.profile.FollowersFragment;
+import org.mian.gitnex.fragments.profile.FollowingFragment;
+import org.mian.gitnex.fragments.profile.OrganizationsFragment;
+import org.mian.gitnex.fragments.profile.RepositoriesFragment;
+import org.mian.gitnex.fragments.profile.StarredRepositoriesFragment;
 import org.mian.gitnex.helpers.AppUtil;
 import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.structs.BottomSheetListener;
diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
index c77e5a78..ccc38432 100644
--- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java
@@ -6,7 +6,12 @@ import android.content.Intent;
 import android.content.res.ColorStateList;
 import android.graphics.Typeface;
 import android.os.Bundle;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 import androidx.activity.result.ActivityResultLauncher;
@@ -21,10 +26,27 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.google.android.material.progressindicator.LinearProgressIndicator;
 import com.google.android.material.tabs.TabLayout;
 import com.google.android.material.tabs.TabLayoutMediator;
-import org.gitnex.tea4j.v2.models.*;
+import org.gitnex.tea4j.v2.models.Branch;
+import org.gitnex.tea4j.v2.models.Milestone;
+import org.gitnex.tea4j.v2.models.Organization;
+import org.gitnex.tea4j.v2.models.Repository;
+import org.gitnex.tea4j.v2.models.WatchInfo;
 import org.mian.gitnex.R;
 import org.mian.gitnex.clients.RetrofitClient;
-import org.mian.gitnex.fragments.*;
+import org.mian.gitnex.fragments.BottomSheetIssuesFilterFragment;
+import org.mian.gitnex.fragments.BottomSheetMilestonesFilterFragment;
+import org.mian.gitnex.fragments.BottomSheetPullRequestFilterFragment;
+import org.mian.gitnex.fragments.BottomSheetReleasesTagsFragment;
+import org.mian.gitnex.fragments.BottomSheetRepoFragment;
+import org.mian.gitnex.fragments.CollaboratorsFragment;
+import org.mian.gitnex.fragments.FilesFragment;
+import org.mian.gitnex.fragments.IssuesFragment;
+import org.mian.gitnex.fragments.LabelsFragment;
+import org.mian.gitnex.fragments.MilestonesFragment;
+import org.mian.gitnex.fragments.PullRequestsFragment;
+import org.mian.gitnex.fragments.ReleasesFragment;
+import org.mian.gitnex.fragments.RepoInfoFragment;
+import org.mian.gitnex.fragments.WikiFragment;
 import org.mian.gitnex.helpers.AppUtil;
 import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
@@ -85,6 +107,8 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
 	private FragmentRefreshListener fragmentRefreshListenerFilterIssuesByMilestone;
 	private FragmentRefreshListener fragmentRefreshListenerReleases;
 	private Dialog progressDialog;
+	private MaterialAlertDialogBuilder materialAlertDialogBuilder;
+	private Intent intentWiki;
 	private final ActivityResultLauncher<Intent> createReleaseLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
 		if(result.getResultCode() == 201) {
 			assert result.getData() != null;
@@ -97,8 +121,6 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
 			}
 		}
 	});
-	private MaterialAlertDialogBuilder materialAlertDialogBuilder;
-	private Intent intentWiki;
 
 	@Override
 	public void onCreate(Bundle savedInstanceState) {
@@ -143,7 +165,7 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
 	}
 
 	@Override
-	public boolean onCreateOptionsMenu(Menu menu) {
+	public boolean onCreateOptionsMenu(@NonNull Menu menu) {
 
 		MenuInflater inflater = getMenuInflater();
 		inflater.inflate(R.menu.repo_dotted_menu, menu);
@@ -857,6 +879,4 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetListe
 		}
 
 	}
-
-
 }
diff --git a/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java
index 2051e546..638381ad 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/CommitsAdapter.java
@@ -11,6 +11,7 @@ import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.core.text.HtmlCompat;
 import androidx.recyclerview.widget.RecyclerView;
+import com.google.android.material.card.MaterialCardView;
 import com.vdurmont.emoji.EmojiParser;
 import org.gitnex.tea4j.v2.models.Commit;
 import org.mian.gitnex.R;
@@ -99,6 +100,8 @@ public class CommitsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
 		ImageView commitAuthorAvatar;
 		ImageView commitCommitterAvatar;
 		TextView commitSha;
+		MaterialCardView commitCommitterAvatarFrame;
+		MaterialCardView commitAuthorAvatarFrame;
 
 		CommitsHolder(View itemView) {
 
@@ -111,7 +114,8 @@ public class CommitsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
 			commitAuthorAvatar = itemView.findViewById(R.id.commitAuthorAvatar);
 			commitCommitterAvatar = itemView.findViewById(R.id.commitCommitterAvatar);
 			commitSha = itemView.findViewById(R.id.commitSha);
-
+			commitCommitterAvatarFrame = itemView.findViewById(R.id.commitCommitterAvatarFrame);
+			commitAuthorAvatarFrame = itemView.findViewById(R.id.commitAuthorAvatarFrame);
 		}
 
 		void bindData(Commit commitsModel) {
@@ -135,7 +139,7 @@ public class CommitsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
 
 			if(commitsModel.getAuthor() != null && commitsModel.getAuthor().getAvatarUrl() != null && !commitsModel.getAuthor().getAvatarUrl().isEmpty()) {
 
-				commitAuthorAvatar.setVisibility(View.VISIBLE);
+				commitAuthorAvatarFrame.setVisibility(View.VISIBLE);
 
 				int imgRadius = AppUtil.getPixelsFromDensity(context, 60);
 
@@ -145,13 +149,13 @@ public class CommitsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
 			}
 			else {
 				commitAuthorAvatar.setImageDrawable(null);
-				commitAuthorAvatar.setVisibility(View.GONE);
+				commitAuthorAvatarFrame.setVisibility(View.GONE);
 			}
 
 			if(commitsModel.getCommitter() != null && (commitsModel.getAuthor() == null || !commitsModel.getAuthor().getLogin().equals(commitsModel.getCommitter().getLogin())) && commitsModel.getCommitter()
 				.getAvatarUrl() != null && !commitsModel.getCommitter().getAvatarUrl().isEmpty()) {
 
-				commitCommitterAvatar.setVisibility(View.VISIBLE);
+				commitCommitterAvatarFrame.setVisibility(View.VISIBLE);
 
 				int imgRadius = AppUtil.getPixelsFromDensity(context, 60);
 
@@ -161,7 +165,7 @@ public class CommitsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
 			}
 			else {
 				commitCommitterAvatar.setImageDrawable(null);
-				commitCommitterAvatar.setVisibility(View.GONE);
+				commitCommitterAvatarFrame.setVisibility(View.GONE);
 			}
 
 			commitSha.setText(commitsModel.getSha().substring(0, Math.min(commitsModel.getSha().length(), 10)));
diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java
index f7971ec3..40ad2cb4 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java
@@ -15,6 +15,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.core.text.HtmlCompat;
 import androidx.recyclerview.widget.RecyclerView;
@@ -24,7 +25,13 @@ import org.mian.gitnex.R;
 import org.mian.gitnex.activities.IssueDetailActivity;
 import org.mian.gitnex.activities.ProfileActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.LabelWidthCalculator;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import org.ocpsoft.prettytime.PrettyTime;
@@ -119,6 +126,7 @@ public class ExploreIssuesAdapter extends RecyclerView.Adapter<RecyclerView.View
 		private final LinearLayout frameLabels;
 		private final HorizontalScrollView labelsScrollViewDots;
 		private final LinearLayout frameLabelsDots;
+		private final ImageView commentIcon;
 		private Issue issue;
 
 		IssuesHolder(View itemView) {
@@ -132,6 +140,7 @@ public class ExploreIssuesAdapter extends RecyclerView.Adapter<RecyclerView.View
 			frameLabels = itemView.findViewById(R.id.frameLabels);
 			labelsScrollViewDots = itemView.findViewById(R.id.labelsScrollViewDots);
 			frameLabelsDots = itemView.findViewById(R.id.frameLabelsDots);
+			commentIcon = itemView.findViewById(R.id.comment_icon);
 
 			new Handler().postDelayed(() -> {
 
@@ -248,6 +257,11 @@ public class ExploreIssuesAdapter extends RecyclerView.Adapter<RecyclerView.View
 				labelsScrollViewWithText.setVisibility(View.GONE);
 			}
 
+			if(issue.getComments() > 15) {
+				commentIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_flame));
+				commentIcon.setColorFilter(context.getResources().getColor(R.color.releasePre, null));
+			}
+
 			switch(timeFormat) {
 				case "pretty": {
 					PrettyTime prettyTime = new PrettyTime(locale);
diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java
index 20952faf..7ac6ef7b 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java
@@ -17,7 +17,11 @@ import com.amulyakhare.textdrawable.util.ColorGenerator;
 import org.mian.gitnex.R;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import org.ocpsoft.prettytime.PrettyTime;
 import java.text.DateFormat;
diff --git a/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
index e8779541..12531975 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/FilesAdapter.java
@@ -4,7 +4,11 @@ import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.*;
+import android.widget.Filter;
+import android.widget.Filterable;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.appcompat.content.res.AppCompatResources;
 import androidx.recyclerview.widget.RecyclerView;
diff --git a/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java
index 1918d8f4..7fe1babe 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java
@@ -5,29 +5,55 @@ import android.content.ClipData;
 import android.content.ClipboardManager;
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.Typeface;
 import android.os.Bundle;
 import android.os.Handler;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.ImageSpan;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.core.text.HtmlCompat;
 import androidx.fragment.app.FragmentManager;
 import androidx.recyclerview.widget.RecyclerView;
+import com.amulyakhare.textdrawable.TextDrawable;
 import com.google.android.material.bottomsheet.BottomSheetDialog;
+import com.google.android.material.card.MaterialCardView;
 import com.vdurmont.emoji.EmojiParser;
-import org.gitnex.tea4j.v2.models.Comment;
+import org.apache.commons.lang3.StringUtils;
+import org.gitnex.tea4j.v2.models.TimelineComment;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
 import org.mian.gitnex.R;
 import org.mian.gitnex.activities.BaseActivity;
+import org.mian.gitnex.activities.CommitDetailActivity;
+import org.mian.gitnex.activities.IssueDetailActivity;
 import org.mian.gitnex.activities.ProfileActivity;
 import org.mian.gitnex.clients.PicassoService;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.fragments.BottomSheetReplyFragment;
 import org.mian.gitnex.fragments.IssuesFragment;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AlertDialogs;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.LabelWidthCalculator;
+import org.mian.gitnex.helpers.Markdown;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
+import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import org.mian.gitnex.views.ReactionList;
 import org.mian.gitnex.views.ReactionSpinner;
@@ -41,18 +67,21 @@ import retrofit2.Callback;
  * @author M M Arif
  */
 
-public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdapter.IssueCommentViewHolder> {
+public class IssueCommentsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
 	private final Context context;
 	private final TinyDB tinyDB;
 	private final Bundle bundle;
-	private final List<Comment> issuesComments;
 	private final FragmentManager fragmentManager;
 	private final Runnable onInteractedListener;
 	private final Locale locale;
 	private final IssueContext issue;
+	private List<TimelineComment> issuesComments;
+	private OnLoadMoreListener loadMoreListener;
+	private boolean isLoading = false, isMoreDataAvailable = true, timelineLastView = false;
+	private Intent intent;
 
-	public IssueCommentsAdapter(Context ctx, Bundle bundle, List<Comment> issuesCommentsMain, FragmentManager fragmentManager, Runnable onInteractedListener, IssueContext issue) {
+	public IssueCommentsAdapter(Context ctx, Bundle bundle, List<TimelineComment> issuesCommentsMain, FragmentManager fragmentManager, Runnable onInteractedListener, IssueContext issue) {
 
 		this.context = ctx;
 		this.bundle = bundle;
@@ -75,7 +104,7 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 
 		Call<Void> call = RetrofitClient.getApiInterface(ctx).issueDeleteComment(issue.getRepository().getOwner(), issue.getRepository().getName(), (long) commentId);
 
-		call.enqueue(new Callback<Void>() {
+		call.enqueue(new Callback<>() {
 
 			@Override
 			public void onResponse(@NonNull Call<Void> call, @NonNull retrofit2.Response<Void> response) {
@@ -116,63 +145,47 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 
 	@NonNull
 	@Override
-	public IssueCommentsAdapter.IssueCommentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-
-		View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_issue_comments, parent, false);
-		return new IssueCommentsAdapter.IssueCommentViewHolder(v);
+	public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+		LayoutInflater inflater = LayoutInflater.from(context);
+		return new IssueCommentViewHolder(inflater.inflate(R.layout.list_issue_comments, parent, false));
 	}
 
 	@Override
-	public void onBindViewHolder(@NonNull IssueCommentsAdapter.IssueCommentViewHolder holder, int position) {
-
-		String timeFormat = tinyDB.getString("dateFormat", "pretty");
-		Comment issueComment = issuesComments.get(position);
-		int imgRadius = AppUtil.getPixelsFromDensity(context, 3);
-
-		holder.userLoginId = issueComment.getUser().getLogin();
-
-		holder.issueComment = issueComment;
-		holder.author.setText(issueComment.getUser().getLogin());
-
-		PicassoService.getInstance(context).get().load(issueComment.getUser().getAvatarUrl()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(imgRadius, 0))
-			.resize(AppUtil.getPixelsFromDensity(context, 35), AppUtil.getPixelsFromDensity(context, 35)).centerCrop().into(holder.avatar);
-
-		Markdown.render(context, EmojiParser.parseToUnicode(issueComment.getBody()), holder.comment, issue.getRepository());
-
-		StringBuilder informationBuilder = null;
-		if(issueComment.getCreatedAt() != null) {
-
-			if(timeFormat.equals("pretty")) {
-				informationBuilder = new StringBuilder(TimeHelper.formatTime(issueComment.getCreatedAt(), locale, "pretty", context));
-				holder.information.setOnClickListener(v -> TimeHelper.customDateFormatForToastDateFormat(issueComment.getCreatedAt()));
-			}
-			else if(timeFormat.equals("normal")) {
-				informationBuilder = new StringBuilder(TimeHelper.formatTime(issueComment.getCreatedAt(), locale, "normal", context));
-			}
-
-			if(!issueComment.getCreatedAt().equals(issueComment.getUpdatedAt())) {
-				if(informationBuilder != null) {
-					informationBuilder.append(context.getString(R.string.colorfulBulletSpan)).append(context.getString(R.string.modifiedText));
-				}
-			}
+	public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
+		if(position >= getItemCount() - 1 && isMoreDataAvailable && !isLoading && loadMoreListener != null) {
+			isLoading = true;
+			loadMoreListener.onLoadMore();
+			timelineLastView = true;
 		}
 
-		holder.information.setText(informationBuilder);
+		((IssueCommentsAdapter.IssueCommentViewHolder) holder).bindData(issuesComments.get(position));
+	}
 
-		Bundle bundle1 = new Bundle();
-		bundle1.putAll(bundle);
-		bundle1.putInt("commentId", Math.toIntExact(issueComment.getId()));
+	public void notifyDataChanged() {
+		notifyItemInserted(issuesComments.size());
+		isLoading = false;
+		loadMoreListener.onLoadFinished();
+	}
 
-		ReactionList reactionList = new ReactionList(context, bundle1);
+	public void setMoreDataAvailable(boolean moreDataAvailable) {
+		isMoreDataAvailable = moreDataAvailable;
+		if(!isMoreDataAvailable) {
+			loadMoreListener.onLoadFinished();
+		}
+	}
 
-		holder.commentReactionBadges.addView(reactionList);
-		reactionList.setOnReactionAddedListener(() -> {
+	public void setLoadMoreListener(OnLoadMoreListener loadMoreListener) {
+		this.loadMoreListener = loadMoreListener;
+	}
 
-			if(holder.commentReactionBadges.getVisibility() != View.VISIBLE) {
-				holder.commentReactionBadges.post(() -> holder.commentReactionBadges.setVisibility(View.VISIBLE));
-			}
-		});
+	public void updateList(List<TimelineComment> list) {
+		issuesComments = list;
+		notifyDataChanged();
+	}
 
+	@Override
+	public int getItemViewType(int position) {
+		return position;
 	}
 
 	@Override
@@ -180,6 +193,12 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 		return issuesComments.size();
 	}
 
+	public interface OnLoadMoreListener {
+
+		void onLoadMore();
+		void onLoadFinished();
+	}
+
 	class IssueCommentViewHolder extends RecyclerView.ViewHolder {
 
 		private final ImageView avatar;
@@ -187,8 +206,14 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 		private final TextView information;
 		private final RecyclerView comment;
 		private final LinearLayout commentReactionBadges;
+		private final MaterialCardView commentView;
+		private final RelativeLayout timelineView;
+		private final LinearLayout timelineData;
+		private final ImageView timelineIcon;
 		private String userLoginId;
-		private Comment issueComment;
+		private TimelineComment issueComment;
+		private final LinearLayout timelineDividerView;
+		private final FrameLayout timelineLine2;
 
 		private IssueCommentViewHolder(View view) {
 
@@ -201,6 +226,14 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 			comment = view.findViewById(R.id.comment);
 			commentReactionBadges = view.findViewById(R.id.commentReactionBadges);
 
+			commentView = view.findViewById(R.id.comment_view);
+
+			timelineView = view.findViewById(R.id.timeline_view);
+			timelineData = view.findViewById(R.id.timeline_data);
+			timelineIcon = view.findViewById(R.id.timeline_icon);
+			timelineDividerView = view.findViewById(R.id.timeline_divider_view);
+			timelineLine2 = view.findViewById(R.id.timeline_line_2);
+
 			menu.setOnClickListener(v -> {
 
 				final String loginUid = ((BaseActivity) context).getAccount().getAccount().getUserName();
@@ -325,7 +358,7 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 				});
 
 				commentMenuDelete.setOnClickListener(v1 -> {
-					deleteIssueComment(context, Math.toIntExact(issueComment.getId()), getAdapterPosition());
+					deleteIssueComment(context, Math.toIntExact(issueComment.getId()), getBindingAdapterPosition());
 					dialog.dismiss();
 				});
 
@@ -347,6 +380,456 @@ public class IssueCommentsAdapter extends RecyclerView.Adapter<IssueCommentsAdap
 			}, 500);
 		}
 
+		void bindData(TimelineComment timelineComment) {
+
+			int fontSize = 14;
+			String timeFormat = tinyDB.getString("dateFormat", "pretty");
+			int imgRadius = AppUtil.getPixelsFromDensity(context, 3);
+
+			userLoginId = timelineComment.getUser().getLogin();
+
+			this.issueComment = timelineComment;
+
+			if(timelineLastView) {
+				//timelineLine2.setVisibility(View.GONE);
+			}
+
+			StringBuilder informationBuilder = null;
+			if(issueComment.getCreatedAt() != null) {
+
+				if(timeFormat.equals("pretty")) {
+					informationBuilder = new StringBuilder(TimeHelper.formatTime(issueComment.getCreatedAt(), locale, "pretty", context));
+					information.setOnClickListener(v -> TimeHelper.customDateFormatForToastDateFormat(issueComment.getCreatedAt()));
+				}
+				else if(timeFormat.equals("normal")) {
+					informationBuilder = new StringBuilder(TimeHelper.formatTime(issueComment.getCreatedAt(), locale, "normal", context));
+				}
+
+				if(!issueComment.getCreatedAt().equals(issueComment.getUpdatedAt())) {
+					if(informationBuilder != null) {
+						informationBuilder.append(context.getString(R.string.colorfulBulletSpan)).append(context.getString(R.string.modifiedText));
+					}
+				}
+			}
+
+			// label view in timeline
+			if(issueComment.getType().equalsIgnoreCase("label")) {
+
+				int color = Color.parseColor("#" + issueComment.getLabel().getColor());
+				int height = AppUtil.getPixelsFromDensity(context, 20);
+				int textSize = AppUtil.getPixelsFromScaledDensity(context, 12);
+
+				TextDrawable drawable = TextDrawable.builder().beginConfig().useFont(Typeface.DEFAULT).textColor(new ColorInverter().getContrastColor(color)).fontSize(textSize)
+					.width(LabelWidthCalculator.calculateLabelWidth(issueComment.getLabel().getName(), Typeface.DEFAULT, textSize, AppUtil.getPixelsFromDensity(context, 10))).height(height).endConfig()
+					.buildRoundRect(issueComment.getLabel().getName(), color, AppUtil.getPixelsFromDensity(context, 18));
+
+				TextView textView = new TextView(context);
+				String startText;
+				String endText = context.getString(R.string.timelineLabelEnd, informationBuilder);
+
+				if(issueComment.getBody().equals("")) {
+					startText = context.getString(R.string.timelineRemovedLabelStart, issueComment.getUser().getLogin());
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				else {
+					startText = context.getString(R.string.timelineAddedLabelStart, issueComment.getUser().getLogin());
+				}
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_tag));
+
+				SpannableString spannableString = new SpannableString(startText + " " + endText);
+
+				drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
+				ImageSpan image = new ImageSpan(drawable);
+
+				new Handler().postDelayed(() -> {
+
+					spannableString.setSpan(image, startText.length(), startText.length() + 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+					textView.setText(spannableString);
+					timelineData.addView(textView);
+				}, 250);
+			}
+			// pull/push/commit data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("pull_push")) {
+
+				TextView start = new TextView(context);
+
+				JSONObject commitsObj = null;
+				try {
+					commitsObj = new JSONObject(issueComment.getBody());
+				}
+				catch(JSONException ignored) {}
+
+				JSONArray commitsShaArray = null;
+				try {
+					commitsShaArray = Objects.requireNonNull(commitsObj).getJSONArray("commit_ids");
+				}
+				catch(JSONException ignored) {}
+
+				String commitText = context.getResources().getString(R.string.commits).toLowerCase();
+				if(Objects.requireNonNull(commitsShaArray).length() == 1) {
+					commitText = context.getResources().getString(R.string.commitText).toLowerCase();
+				}
+
+				String commitString = context.getString(R.string.timelineAddedCommit, issueComment.getUser().getLogin()) + commitText + " " + informationBuilder;
+				start.setText(HtmlCompat.fromHtml(commitString, HtmlCompat.FROM_HTML_MODE_LEGACY));
+				start.setTextSize(fontSize);
+
+				timelineData.setOrientation(LinearLayout.VERTICAL);
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_commit));
+				timelineData.addView(start);
+
+				for(int i = 0; i < Objects.requireNonNull(commitsShaArray).length(); i++) {
+
+					try {
+
+						String timelineCommits = "<font color='" + ResourcesCompat.getColor(context.getResources(), R.color.lightBlue, null) + "'>" + StringUtils.substring(String.valueOf(commitsShaArray.get(i)), 0, 10) + "</font>";
+
+						TextView dynamicCommitTv = new TextView(context);
+						dynamicCommitTv.setId(View.generateViewId());
+
+						dynamicCommitTv.setText(HtmlCompat.fromHtml(timelineCommits, HtmlCompat.FROM_HTML_MODE_LEGACY));
+
+						JSONArray finalCommitsArray = commitsShaArray;
+						int finalI = i;
+
+						dynamicCommitTv.setOnClickListener(v14 -> {
+							intent = IssueContext.fromIntent(((IssueDetailActivity) context).getIntent()).getRepository().getIntent(context, CommitDetailActivity.class);
+							try {
+								intent.putExtra("sha", (String) finalCommitsArray.get(finalI));
+							}
+							catch(JSONException ignored) {}
+							context.startActivity(intent);
+						});
+
+						timelineData.setOrientation(LinearLayout.VERTICAL);
+						timelineData.addView(dynamicCommitTv);
+					}
+					catch(JSONException ignored) {}
+				}
+			}
+			// assignees data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("assignees")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.isRemovedAssignee()) {
+
+					if(issueComment.getUser().getLogin().equalsIgnoreCase(issueComment.getAssignee().getLogin())) {
+						start.setText(context.getString(R.string.timelineAssigneesRemoved, issueComment.getUser().getLogin(), informationBuilder));
+					}
+					else {
+						start.setText(context.getString(R.string.timelineAssigneesUnassigned, issueComment.getAssignee().getLogin(), issueComment.getUser().getLogin(), informationBuilder));
+					}
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				else {
+					if(issueComment.getUser().getLogin().equalsIgnoreCase(issueComment.getAssignee().getLogin())) {
+						start.setText(context.getString(R.string.timelineAssigneesSelfAssigned, issueComment.getUser().getLogin(), informationBuilder));
+					}
+					else {
+						start.setText(context.getString(R.string.timelineAssigneesAssigned, issueComment.getAssignee().getLogin(), issueComment.getUser().getLogin(), informationBuilder));
+					}
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_person));
+				timelineData.addView(start);
+			}
+			// milestone data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("milestone")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getMilestone() != null) {
+					start.setText(context.getString(R.string.timelineMilestoneAdded, issueComment.getUser().getLogin(), issueComment.getMilestone().getTitle(), informationBuilder));
+				}
+				else {
+					start.setText(context.getString(R.string.timelineMilestoneRemoved, issueComment.getUser().getLogin(), issueComment.getOldMilestone().getTitle(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_milestone));
+				timelineData.addView(start);
+			}
+			// status view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("close") || issueComment.getType().equalsIgnoreCase("reopen") || issueComment.getType().equalsIgnoreCase("merge_pull") || issueComment.getType()
+				.equalsIgnoreCase("commit_ref")) {
+
+				TextView start = new TextView(context);
+
+				if(issue.getIssueType().equalsIgnoreCase("Issue")) {
+					if(issueComment.getType().equals("close")) {
+						start.setText(context.getString(R.string.timelineStatusClosedIssue, issueComment.getUser().getLogin(), informationBuilder));
+						timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+					}
+					else if(issueComment.getType().equalsIgnoreCase("reopen")) {
+						start.setText(context.getString(R.string.timelineStatusReopenedIssue, issueComment.getUser().getLogin(), informationBuilder));
+					}
+					else if(issueComment.getType().equalsIgnoreCase("commit_ref")) {
+						String commitString = context.getString(R.string.timelineStatusRefIssue, issueComment.getUser().getLogin()) + "<font color='" + ResourcesCompat.getColor(context.getResources(), R.color.lightBlue, null) + "'>" + context.getResources().getString(R.string.commitText).toLowerCase() + "</font> " + informationBuilder;
+						start.setText(HtmlCompat.fromHtml(commitString, HtmlCompat.FROM_HTML_MODE_LEGACY));
+						timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_bookmark));
+
+						start.setOnClickListener(v14 -> {
+							intent = IssueContext.fromIntent(((IssueDetailActivity) context).getIntent()).getRepository().getIntent(context, CommitDetailActivity.class);
+							intent.putExtra("sha", issueComment.getRefCommitSha());
+							context.startActivity(intent);
+						});
+					}
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_issue));
+				}
+				else if(issue.getIssueType().equalsIgnoreCase("Pull")) {
+					if(issueComment.getType().equalsIgnoreCase("close")) {
+						start.setText(context.getString(R.string.timelineStatusClosedPr, issueComment.getUser().getLogin(), informationBuilder));
+						timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_pull_request));
+						timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+					}
+					else if(issueComment.getType().equalsIgnoreCase("merge_pull")) {
+						start.setText(context.getString(R.string.timelineStatusMergedPr, issueComment.getUser().getLogin(), informationBuilder));
+						timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_pull_request));
+						timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconPrMergedColor, null));
+					}
+					else if(issueComment.getType().equalsIgnoreCase("commit_ref")) {
+						String commitString = context.getString(R.string.timelineStatusRefPr, issueComment.getUser().getLogin()) + "<font color='" + ResourcesCompat.getColor(context.getResources(), R.color.lightBlue, null) + "'>" + context.getResources().getString(R.string.commitText).toLowerCase() + "</font> " + informationBuilder;
+						start.setText(HtmlCompat.fromHtml(commitString, HtmlCompat.FROM_HTML_MODE_LEGACY));
+						timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_bookmark));
+
+						start.setOnClickListener(v14 -> {
+							intent = IssueContext.fromIntent(((IssueDetailActivity) context).getIntent()).getRepository().getIntent(context, CommitDetailActivity.class);
+							intent.putExtra("sha", issueComment.getRefCommitSha());
+							context.startActivity(intent);
+						});
+					}
+					else {
+						start.setText(context.getString(R.string.timelineStatusReopenedPr, issueComment.getUser().getLogin(), informationBuilder));
+						timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_pull_request));
+					}
+				}
+				start.setTextSize(fontSize);
+
+				timelineData.addView(start);
+			}
+			// review data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("review_request") || issueComment.getType().equalsIgnoreCase("review") || issueComment.getType().equalsIgnoreCase("dismiss_review")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("review")) {
+					timelineView.setVisibility(View.GONE);
+					timelineDividerView.setVisibility(View.GONE);
+				}
+				else if(issueComment.getType().equalsIgnoreCase("dismiss_review")) {
+					timelineView.setVisibility(View.GONE);
+					timelineDividerView.setVisibility(View.GONE);
+				}
+				else if(issueComment.getType().equalsIgnoreCase("review_request")) {
+					start.setText(context.getString(R.string.timelineReviewRequest, issueComment.getUser().getLogin(), issueComment.getAssignee().getLogin(), informationBuilder));
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_unwatch));
+				}
+				start.setTextSize(fontSize);
+
+				timelineData.addView(start);
+			}
+			// change title data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("change_title")) {
+
+				TextView start = new TextView(context);
+				start.setText(context.getString(R.string.timelineChangeTitle, issueComment.getUser().getLogin(), issueComment.getOldTitle(), issueComment.getNewTitle(), informationBuilder));
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_edit));
+				timelineData.addView(start);
+			}
+			// lock/unlock data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("lock") || issueComment.getType().equalsIgnoreCase("unlock")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("lock")) {
+					start.setText(context.getString(R.string.timelineLocked, issueComment.getUser().getLogin(), issueComment.getBody(), informationBuilder));
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_lock));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("unlock")) {
+					start.setText(context.getString(R.string.timelineUnlocked, issueComment.getUser().getLogin(), informationBuilder));
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_key));
+				}
+				start.setTextSize(fontSize);
+
+				timelineData.addView(start);
+			}
+			// dependency data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("add_dependency") || issueComment.getType().equalsIgnoreCase("remove_dependency")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("add_dependency")) {
+					start.setText(context.getString(R.string.timelineDependencyAdded, issueComment.getUser().getLogin(), issueComment.getDependentIssue().getNumber(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("remove_dependency")) {
+					start.setText(context.getString(R.string.timelineDependencyRemoved, issueComment.getUser().getLogin(), issueComment.getDependentIssue().getNumber(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_dependency));
+				timelineData.addView(start);
+			}
+			// project data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("project") || issueComment.getType().equalsIgnoreCase("project_board")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getProjectId() > 0) {
+					start.setText(context.getString(R.string.timelineProjectAdded, issueComment.getUser().getLogin(), informationBuilder));
+				}
+				else {
+					start.setText(context.getString(R.string.timelineProjectRemoved, issueComment.getUser().getLogin(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_kanban));
+				timelineData.addView(start);
+			}
+			// due date/deadline data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("added_deadline") || issueComment.getType().equalsIgnoreCase("modified_deadline") || issueComment.getType().equalsIgnoreCase("removed_deadline")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("added_deadline")) {
+					start.setText(context.getString(R.string.timelineDueDateAdded, issueComment.getUser().getLogin(), issueComment.getBody(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("modified_deadline")) {
+					start.setText(
+						context.getString(R.string.timelineDueDateModified, issueComment.getUser().getLogin(), issueComment.getBody().split("\\|")[0], issueComment.getBody().split("\\|")[1], informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("removed_deadline")) {
+					start.setText(context.getString(R.string.timelineDueDateRemoved, issueComment.getUser().getLogin(), issueComment.getBody(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_clock));
+				timelineData.addView(start);
+			}
+			// branch data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("change_target_branch") || issueComment.getType().equalsIgnoreCase("delete_branch")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("change_target_branch")) {
+					start.setText(context.getString(R.string.timelineBranchChanged, issueComment.getUser().getLogin(), issueComment.getOldRef(), issueComment.getNewRef(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("delete_branch")) {
+					start.setText(context.getString(R.string.timelineBranchDeleted, issueComment.getUser().getLogin(), issueComment.getOldRef(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_branch));
+				timelineData.addView(start);
+			}
+			// time tracking data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("start_tracking") || issueComment.getType().equalsIgnoreCase("stop_tracking") || issueComment.getType()
+				.equalsIgnoreCase("cancel_tracking") || issueComment.getType().equalsIgnoreCase("add_time_manual") || issueComment.getType().equalsIgnoreCase("delete_time_manual")) {
+
+				TextView start = new TextView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("start_tracking")) {
+					start.setText(context.getString(R.string.timelineTimeTrackingStart, issueComment.getUser().getLogin(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("stop_tracking")) {
+					start.setText(context.getString(R.string.timelineTimeTrackingStop, issueComment.getUser().getLogin(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("cancel_tracking")) {
+					start.setText(context.getString(R.string.timelineTimeTrackingCancel, issueComment.getUser().getLogin(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("add_time_manual")) {
+					start.setText(context.getString(R.string.timelineTimeTrackingAddManualTime, issueComment.getUser().getLogin(), issueComment.getBody(), informationBuilder));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("delete_time_manual")) {
+					start.setText(context.getString(R.string.timelineTimeTrackingDeleteManualTime, issueComment.getUser().getLogin(), issueComment.getBody(), informationBuilder));
+					timelineIcon.setColorFilter(context.getResources().getColor(R.color.iconIssuePrClosedColor, null));
+				}
+				start.setTextSize(fontSize);
+
+				timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_clock));
+				timelineData.addView(start);
+			}
+			// issue/pr refs data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("change_issue_ref") || issueComment.getType().equalsIgnoreCase("issue_ref") || issueComment.getType().equalsIgnoreCase("comment_ref") || issueComment.getType()
+				.equalsIgnoreCase("pull_ref")) {
+
+				RecyclerView recyclerView = new RecyclerView(context);
+
+				if(issueComment.getType().equalsIgnoreCase("change_issue_ref")) {
+					String text = context.getString(R.string.timelineChangeIssueRef, issueComment.getUser().getLogin(), issueComment.getNewRef(), informationBuilder);
+					Markdown.render(context, EmojiParser.parseToUnicode(text), recyclerView, issue.getRepository());
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_branch));
+				}
+				else if(issueComment.getType().equalsIgnoreCase("comment_ref") || issueComment.getType().equalsIgnoreCase("issue_ref") || issueComment.getType().equalsIgnoreCase("pull_ref")) {
+
+					if(issue.getIssueType().equalsIgnoreCase("Issue")) {
+						String text = context.getString(R.string.timelineRefIssue, issueComment.getUser().getLogin(), issueComment.getRefIssue().getNumber(), informationBuilder);
+						Markdown.render(context, EmojiParser.parseToUnicode(text), recyclerView, issue.getRepository());
+					}
+					else if(issue.getIssueType().equalsIgnoreCase("Pull")) {
+						String text = context.getString(R.string.timelineRefPr, issueComment.getUser().getLogin(), issueComment.getRefIssue().getNumber(), informationBuilder);
+						Markdown.render(context, EmojiParser.parseToUnicode(text), recyclerView, issue.getRepository());
+					}
+					timelineIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_bookmark));
+				}
+
+				timelineData.addView(recyclerView);
+			}
+			// code data view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("code")) {
+				timelineView.setVisibility(View.GONE);
+				timelineDividerView.setVisibility(View.GONE);
+			}
+			// schedule pr view in timeline
+			else if(issueComment.getType().equalsIgnoreCase("pull_scheduled_merge") || issueComment.getType().equalsIgnoreCase("pull_cancel_scheduled_merge")) {
+				timelineView.setVisibility(View.GONE);
+				timelineDividerView.setVisibility(View.GONE);
+			}
+			else {
+				timelineView.setVisibility(View.GONE);
+			}
+
+			// comment data view in timeline
+			if(issueComment.getType().equalsIgnoreCase("comment")) {
+
+				author.setText(issueComment.getUser().getLogin());
+
+				PicassoService.getInstance(context).get().load(issueComment.getUser().getAvatarUrl()).placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(imgRadius, 0))
+					.resize(AppUtil.getPixelsFromDensity(context, 35), AppUtil.getPixelsFromDensity(context, 35)).centerCrop().into(avatar);
+
+				Markdown.render(context, EmojiParser.parseToUnicode(issueComment.getBody()), comment, issue.getRepository());
+
+				information.setText(informationBuilder);
+
+				Bundle bundle1 = new Bundle();
+				bundle1.putAll(bundle);
+				bundle1.putInt("commentId", Math.toIntExact(issueComment.getId()));
+
+				ReactionList reactionList = new ReactionList(context, bundle1);
+
+				commentReactionBadges.addView(reactionList);
+				reactionList.setOnReactionAddedListener(() -> {
+
+					if(commentReactionBadges.getVisibility() != View.VISIBLE) {
+						commentReactionBadges.post(() -> commentReactionBadges.setVisibility(View.VISIBLE));
+					}
+				});
+			}
+			else {
+				commentView.setVisibility(View.GONE);
+			}
+		}
+
 	}
 
 }
diff --git a/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java
index 20ac10cb..510e86d5 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/IssuesAdapter.java
@@ -15,6 +15,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.core.text.HtmlCompat;
 import androidx.recyclerview.widget.RecyclerView;
@@ -26,7 +27,13 @@ import org.mian.gitnex.activities.IssueDetailActivity;
 import org.mian.gitnex.activities.ProfileActivity;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.LabelWidthCalculator;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import org.ocpsoft.prettytime.PrettyTime;
 import java.text.DateFormat;
@@ -111,6 +118,7 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
 		private final LinearLayout frameLabels;
 		private final HorizontalScrollView labelsScrollViewDots;
 		private final LinearLayout frameLabelsDots;
+		private final ImageView commentIcon;
 		private Issue issueObject;
 
 		IssuesHolder(View itemView) {
@@ -124,6 +132,7 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
 			frameLabels = itemView.findViewById(R.id.frameLabels);
 			labelsScrollViewDots = itemView.findViewById(R.id.labelsScrollViewDots);
 			frameLabelsDots = itemView.findViewById(R.id.frameLabelsDots);
+			commentIcon = itemView.findViewById(R.id.comment_icon);
 
 			new Handler().postDelayed(() -> {
 				if(!AppUtil.checkGhostUsers(issueObject.getUser().getLogin())) {
@@ -222,6 +231,11 @@ public class IssuesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
 				}
 			}
 
+			if(issue.getComments() > 15) {
+				commentIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_flame));
+				commentIcon.setColorFilter(context.getResources().getColor(R.color.releasePre, null));
+			}
+
 			switch(timeFormat) {
 				case "pretty": {
 					PrettyTime prettyTime = new PrettyTime(locale);
diff --git a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java
index e61d18e5..204e48a4 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/PullRequestsAdapter.java
@@ -15,6 +15,7 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
 import androidx.core.content.res.ResourcesCompat;
 import androidx.core.text.HtmlCompat;
 import androidx.recyclerview.widget.RecyclerView;
@@ -26,7 +27,13 @@ import org.mian.gitnex.activities.IssueDetailActivity;
 import org.mian.gitnex.activities.ProfileActivity;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.LabelWidthCalculator;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import java.util.List;
 import java.util.Locale;
@@ -103,6 +110,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 		private final LinearLayout frameLabels;
 		private final HorizontalScrollView labelsScrollViewDots;
 		private final LinearLayout frameLabelsDots;
+		private final ImageView commentIcon;
 		private PullRequest pullRequestObject;
 
 		PullRequestsHolder(View itemView) {
@@ -116,6 +124,7 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 			frameLabels = itemView.findViewById(R.id.frameLabels);
 			labelsScrollViewDots = itemView.findViewById(R.id.labelsScrollViewDots);
 			frameLabelsDots = itemView.findViewById(R.id.frameLabelsDots);
+			commentIcon = itemView.findViewById(R.id.comment_icon);
 
 			View.OnClickListener openPr = v -> {
 				Intent intentPrDetail = new IssueContext(pullRequestObject, ((RepoDetailActivity) context).repository).getIntent(context, IssueDetailActivity.class);
@@ -219,6 +228,11 @@ public class PullRequestsAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
 			this.prCommentsCount.setText(String.valueOf(pullRequest.getComments()));
 			this.prCreatedTime.setText(TimeHelper.formatTime(pullRequest.getCreatedAt(), locale, timeFormat, context));
 
+			if(pullRequest.getComments() > 15) {
+				commentIcon.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_flame));
+				commentIcon.setColorFilter(context.getResources().getColor(R.color.releasePre, null));
+			}
+
 			if(timeFormat.equals("pretty")) {
 				this.prCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(pullRequest.getCreatedAt()), context));
 			}
diff --git a/app/src/main/java/org/mian/gitnex/adapters/ReleasesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ReleasesAdapter.java
index d8b5184a..8b03190d 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/ReleasesAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/ReleasesAdapter.java
@@ -23,7 +23,13 @@ import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.FragmentReleasesBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.Markdown;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
+import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.structs.FragmentRefreshListener;
 import java.util.List;
 import java.util.Locale;
diff --git a/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java
index bfddce62..56aa45b8 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java
@@ -17,7 +17,11 @@ import com.amulyakhare.textdrawable.util.ColorGenerator;
 import org.mian.gitnex.R;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import org.ocpsoft.prettytime.PrettyTime;
 import java.text.DateFormat;
diff --git a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
index 5dc30342..218221b2 100644
--- a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
+++ b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java
@@ -7,7 +7,11 @@ import android.graphics.Typeface;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.*;
+import android.widget.CheckBox;
+import android.widget.Filter;
+import android.widget.Filterable;
+import android.widget.ImageView;
+import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 import com.amulyakhare.textdrawable.TextDrawable;
@@ -15,7 +19,11 @@ import com.amulyakhare.textdrawable.util.ColorGenerator;
 import org.mian.gitnex.R;
 import org.mian.gitnex.activities.RepoDetailActivity;
 import org.mian.gitnex.clients.PicassoService;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import org.ocpsoft.prettytime.PrettyTime;
 import java.text.DateFormat;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java
index 2299d2eb..3f50bcb1 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java
@@ -13,7 +13,11 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
 import org.mian.gitnex.R;
 import org.mian.gitnex.actions.IssueActions;
 import org.mian.gitnex.actions.PullRequestActions;
-import org.mian.gitnex.activities.*;
+import org.mian.gitnex.activities.BaseActivity;
+import org.mian.gitnex.activities.DiffActivity;
+import org.mian.gitnex.activities.EditIssueActivity;
+import org.mian.gitnex.activities.IssueDetailActivity;
+import org.mian.gitnex.activities.MergePullRequestActivity;
 import org.mian.gitnex.databinding.BottomSheetSingleIssueBinding;
 import org.mian.gitnex.helpers.AlertDialogs;
 import org.mian.gitnex.helpers.AppUtil;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/CommitDetailFragment.java b/app/src/main/java/org/mian/gitnex/fragments/CommitDetailFragment.java
index c0b79fbe..76d560ad 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/CommitDetailFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/CommitDetailFragment.java
@@ -22,7 +22,13 @@ import org.mian.gitnex.adapters.DiffFilesAdapter;
 import org.mian.gitnex.clients.PicassoService;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.FragmentCommitDetailsBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AlertDialogs;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.FileDiffView;
+import org.mian.gitnex.helpers.ParseDiff;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.IssueContext;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import java.util.ArrayList;
@@ -172,7 +178,7 @@ public class CommitDetailFragment extends Fragment {
 
 				if(commitsModel.getAuthor() != null && commitsModel.getAuthor().getAvatarUrl() != null && !commitsModel.getAuthor().getAvatarUrl().isEmpty()) {
 
-					binding.commitAuthorAvatar.setVisibility(View.VISIBLE);
+					binding.commitAuthorAvatarFrame.setVisibility(View.VISIBLE);
 
 					int imgRadius = AppUtil.getPixelsFromDensity(requireContext(), 3);
 
@@ -188,13 +194,13 @@ public class CommitDetailFragment extends Fragment {
 				}
 				else {
 					binding.commitAuthorAvatar.setImageDrawable(null);
-					binding.commitAuthorAvatar.setVisibility(View.GONE);
+					binding.commitAuthorAvatarFrame.setVisibility(View.GONE);
 				}
 
 				if(commitsModel.getCommitter() != null && (commitsModel.getAuthor() == null || !commitsModel.getAuthor().getLogin().equals(commitsModel.getCommitter().getLogin())) && commitsModel.getCommitter()
 					.getAvatarUrl() != null && !commitsModel.getCommitter().getAvatarUrl().isEmpty()) {
 
-					binding.commitCommitterAvatar.setVisibility(View.VISIBLE);
+					binding.commitCommitterAvatarFrame.setVisibility(View.VISIBLE);
 
 					int imgRadius = AppUtil.getPixelsFromDensity(requireContext(), 3);
 
@@ -210,7 +216,7 @@ public class CommitDetailFragment extends Fragment {
 				}
 				else {
 					binding.commitCommitterAvatar.setImageDrawable(null);
-					binding.commitCommitterAvatar.setVisibility(View.GONE);
+					binding.commitCommitterAvatarFrame.setVisibility(View.GONE);
 				}
 
 				binding.commitSha.setText(commitsModel.getSha().substring(0, Math.min(commitsModel.getSha().length(), 10)));
@@ -241,5 +247,4 @@ public class CommitDetailFragment extends Fragment {
 			binding.progressBar.setVisibility(View.GONE);
 		}
 	}
-
 }
diff --git a/app/src/main/java/org/mian/gitnex/fragments/ExploreIssuesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ExploreIssuesFragment.java
index 528fe8a1..2ea7e963 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/ExploreIssuesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/ExploreIssuesFragment.java
@@ -3,7 +3,12 @@ package org.mian.gitnex.fragments;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java
index c4fd5206..9218e142 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/ExploreRepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/ExploreUsersFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ExploreUsersFragment.java
index 95f0b94e..53529c02 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/ExploreUsersFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/ExploreUsersFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
index 68750fa2..6d4c4b59 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/FilesFragment.java
@@ -4,7 +4,12 @@ import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.activity.OnBackPressedCallback;
 import androidx.annotation.NonNull;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java
index e42646f1..e9449de3 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/IssuesFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/MyIssuesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MyIssuesFragment.java
index 896e6dba..9cb77571 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/MyIssuesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/MyIssuesFragment.java
@@ -26,13 +26,13 @@ import org.mian.gitnex.viewmodels.IssuesViewModel;
 
 public class MyIssuesFragment extends Fragment {
 
+	public String state = "open";
+	public boolean assignedToMe = false;
 	private IssuesViewModel issuesViewModel;
 	private FragmentIssuesBinding fragmentIssuesBinding;
 	private ExploreIssuesAdapter adapter;
 	private int page = 1;
 	private Menu menu;
-	public String state = "open";
-	public boolean assignedToMe = false;
 
 	@Override
 	public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -75,8 +75,6 @@ public class MyIssuesFragment extends Fragment {
 		return fragmentIssuesBinding.getRoot();
 	}
 
-	;
-
 	private void fetchDataAsync(String query, String state, boolean assignedToMe) {
 
 		issuesViewModel.getIssuesList(query, "issues", true, state, assignedToMe, getContext()).observe(getViewLifecycleOwner(), issuesListMain -> {
diff --git a/app/src/main/java/org/mian/gitnex/fragments/MyProfileFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MyProfileFragment.java
index c0c821c0..af750f33 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/MyProfileFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/MyProfileFragment.java
@@ -5,7 +5,12 @@ import android.content.res.ColorStateList;
 import android.graphics.Typeface;
 import android.os.Bundle;
 import android.text.Html;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 import androidx.annotation.NonNull;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java
index 5f8e5e03..00ac85f0 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/MyRepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
index 9a72645d..e41729c4 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java
@@ -4,7 +4,12 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamInfoReposFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamInfoReposFragment.java
index 7ac646b7..8f56a436 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamInfoReposFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationTeamInfoReposFragment.java
@@ -3,7 +3,12 @@ package org.mian.gitnex.fragments;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java
index 5ef737b2..032a82fb 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationsFragment.java
@@ -4,7 +4,12 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/PullRequestCommitsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/PullRequestCommitsFragment.java
index d7777912..6e01f1d9 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/PullRequestCommitsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/PullRequestCommitsFragment.java
@@ -5,7 +5,12 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import android.widget.RelativeLayout;
 import androidx.annotation.NonNull;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java
index 13262dcf..247340f9 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/PullRequestsFragment.java
@@ -5,7 +5,12 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.util.Log;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
index e0077bfa..991c07a4 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/RepoInfoFragment.java
@@ -16,10 +16,21 @@ import org.gitnex.tea4j.v2.models.Organization;
 import org.gitnex.tea4j.v2.models.Repository;
 import org.jetbrains.annotations.NotNull;
 import org.mian.gitnex.R;
-import org.mian.gitnex.activities.*;
+import org.mian.gitnex.activities.OrganizationDetailActivity;
+import org.mian.gitnex.activities.ProfileActivity;
+import org.mian.gitnex.activities.RepoDetailActivity;
+import org.mian.gitnex.activities.RepoForksActivity;
+import org.mian.gitnex.activities.RepoStargazersActivity;
+import org.mian.gitnex.activities.RepoWatchersActivity;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.FragmentRepoInfoBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AlertDialogs;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.Markdown;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
+import org.mian.gitnex.helpers.Toasty;
 import org.mian.gitnex.helpers.contexts.RepositoryContext;
 import java.io.IOException;
 import java.util.Locale;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java
index cbac8fb8..20a031f3 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/RepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
index 24b2db92..5d465314 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/SettingsFragment.java
@@ -13,7 +13,15 @@ import androidx.annotation.Nullable;
 import androidx.fragment.app.Fragment;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import org.mian.gitnex.R;
-import org.mian.gitnex.activities.*;
+import org.mian.gitnex.activities.BaseActivity;
+import org.mian.gitnex.activities.MainActivity;
+import org.mian.gitnex.activities.SettingsAppearanceActivity;
+import org.mian.gitnex.activities.SettingsDraftsActivity;
+import org.mian.gitnex.activities.SettingsGeneralActivity;
+import org.mian.gitnex.activities.SettingsNotificationsActivity;
+import org.mian.gitnex.activities.SettingsReportsActivity;
+import org.mian.gitnex.activities.SettingsSecurityActivity;
+import org.mian.gitnex.activities.SettingsTranslationActivity;
 import org.mian.gitnex.databinding.CustomAboutDialogBinding;
 import org.mian.gitnex.databinding.FragmentSettingsBinding;
 import org.mian.gitnex.helpers.AppUtil;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java
index 64d216af..6886e838 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/StarredRepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.fragment.app.Fragment;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/DetailFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/DetailFragment.java
index 62f30e6f..67c41eeb 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/DetailFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/DetailFragment.java
@@ -12,7 +12,14 @@ import org.mian.gitnex.R;
 import org.mian.gitnex.clients.PicassoService;
 import org.mian.gitnex.clients.RetrofitClient;
 import org.mian.gitnex.databinding.FragmentProfileDetailBinding;
-import org.mian.gitnex.helpers.*;
+import org.mian.gitnex.helpers.AlertDialogs;
+import org.mian.gitnex.helpers.AppUtil;
+import org.mian.gitnex.helpers.ClickListener;
+import org.mian.gitnex.helpers.ColorInverter;
+import org.mian.gitnex.helpers.RoundedTransformation;
+import org.mian.gitnex.helpers.TimeHelper;
+import org.mian.gitnex.helpers.TinyDB;
+import org.mian.gitnex.helpers.Toasty;
 import java.util.Locale;
 import jp.wasabeef.picasso.transformations.BlurTransformation;
 import retrofit2.Call;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/FollowersFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/FollowersFragment.java
index ec99d70d..8f283871 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/FollowersFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/FollowersFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/FollowingFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/FollowingFragment.java
index b910b89e..e74e545a 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/FollowingFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/FollowingFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/OrganizationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/OrganizationsFragment.java
index 4d4f3524..45ee9fbe 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/OrganizationsFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/OrganizationsFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/RepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/RepositoriesFragment.java
index fc2e93c0..6f9c1d7d 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/RepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/RepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/fragments/profile/StarredRepositoriesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/profile/StarredRepositoriesFragment.java
index dd900df8..3fddb3dd 100644
--- a/app/src/main/java/org/mian/gitnex/fragments/profile/StarredRepositoriesFragment.java
+++ b/app/src/main/java/org/mian/gitnex/fragments/profile/StarredRepositoriesFragment.java
@@ -4,7 +4,12 @@ import android.content.Context;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import android.view.*;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
diff --git a/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java b/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java
index ccb28608..c1ea2005 100644
--- a/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java
+++ b/app/src/main/java/org/mian/gitnex/helpers/AppUtil.java
@@ -1,7 +1,11 @@
 package org.mian.gitnex.helpers;
 
 import android.app.Activity;
-import android.content.*;
+import android.content.ActivityNotFoundException;
+import android.content.ClipData;
+import android.content.ClipboardManager;
+import android.content.Context;
+import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -13,7 +17,6 @@ import android.net.Uri;
 import android.os.Build;
 import android.util.Base64;
 import android.util.DisplayMetrics;
-import android.util.Log;
 import android.util.TypedValue;
 import android.view.View;
 import androidx.annotation.ColorInt;
@@ -35,7 +38,14 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -109,7 +119,6 @@ public class AppUtil {
 		}
 
 		return FileType.UNKNOWN;
-
 	}
 
 	public static boolean hasNetworkConnection(Context context) {
@@ -193,7 +202,6 @@ public class AppUtil {
 	}
 
 	public static Boolean checkIntegers(String str) {
-
 		return str.matches("\\d+");
 	}
 
@@ -203,7 +211,6 @@ public class AppUtil {
 		Configuration config = resource.getConfiguration();
 		config.setLocale(new Locale(locCode.toLowerCase()));
 		resource.updateConfiguration(config, dm);
-
 	}
 
 	public static String getTimestampFromDate(Context context, Date date) {
@@ -217,7 +224,6 @@ public class AppUtil {
 		else {
 			return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", locale).format(date);
 		}
-
 	}
 
 	@ColorInt
@@ -227,7 +233,6 @@ public class AppUtil {
 		context.getTheme().resolveAttribute(resid, typedValue, true);
 
 		return typedValue.data;
-
 	}
 
 	public static String customDateFormat(String customDate) {
@@ -254,7 +259,6 @@ public class AppUtil {
 		}
 
 		return year + "-" + sMonth + "-" + sDay;
-
 	}
 
 	public static String customDateCombine(String customDate) {
@@ -281,7 +285,6 @@ public class AppUtil {
 		}
 
 		return (customDate + "T" + mHour + ":" + sMin + ":" + sSec + "Z");
-
 	}
 
 	public static String encodeBase64(String str) {
@@ -293,7 +296,6 @@ public class AppUtil {
 		}
 
 		return base64Str;
-
 	}
 
 	public static String decodeBase64(String str) {
@@ -305,7 +307,6 @@ public class AppUtil {
 		}
 
 		return base64Str;
-
 	}
 
 	public static String getLastCharactersOfWord(String str, int count) {
@@ -342,7 +343,6 @@ public class AppUtil {
 			lines++;
 
 		return lines;
-
 	}
 
 	public static void copyToClipboard(Context ctx, CharSequence data, String message) {
@@ -522,7 +522,6 @@ public class AppUtil {
 		URL url = new URL(u);
 		HttpURLConnection http = (HttpURLConnection) url.openConnection();
 		return (http.getResponseCode());
-
 	}
 
 	public enum FileType {IMAGE, AUDIO, VIDEO, DOCUMENT, TEXT, EXECUTABLE, FONT, UNKNOWN}
@@ -536,7 +535,5 @@ public class AppUtil {
 		}
 
 		void onProgressChanged(short progress);
-
 	}
-
 }
diff --git a/app/src/main/java/org/mian/gitnex/helpers/Markdown.java b/app/src/main/java/org/mian/gitnex/helpers/Markdown.java
index ca660ac2..8453b4ac 100644
--- a/app/src/main/java/org/mian/gitnex/helpers/Markdown.java
+++ b/app/src/main/java/org/mian/gitnex/helpers/Markdown.java
@@ -10,7 +10,12 @@ import androidx.core.content.res.ResourcesCompat;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import org.commonmark.ext.gfm.tables.TableBlock;
-import org.commonmark.node.*;
+import org.commonmark.node.AbstractVisitor;
+import org.commonmark.node.FencedCodeBlock;
+import org.commonmark.node.Image;
+import org.commonmark.node.Link;
+import org.commonmark.node.Node;
+import org.commonmark.node.Text;
 import org.commonmark.parser.InlineParserFactory;
 import org.commonmark.parser.Parser;
 import org.commonmark.parser.PostProcessor;
@@ -55,7 +60,13 @@ import io.noties.markwon.recycler.SimpleEntry;
 import io.noties.markwon.recycler.table.TableEntry;
 import io.noties.markwon.recycler.table.TableEntryPlugin;
 import io.noties.prism4j.Prism4j;
-import stormpot.*;
+import stormpot.Allocator;
+import stormpot.BlazePool;
+import stormpot.Config;
+import stormpot.Pool;
+import stormpot.Poolable;
+import stormpot.Slot;
+import stormpot.Timeout;
 
 /**
  * @author opyale
diff --git a/app/src/main/java/org/mian/gitnex/helpers/PicassoCache.java b/app/src/main/java/org/mian/gitnex/helpers/PicassoCache.java
index a166b750..da04e186 100644
--- a/app/src/main/java/org/mian/gitnex/helpers/PicassoCache.java
+++ b/app/src/main/java/org/mian/gitnex/helpers/PicassoCache.java
@@ -6,7 +6,12 @@ import android.graphics.BitmapFactory;
 import android.util.Log;
 import com.squareup.picasso.Cache;
 import org.mian.gitnex.R;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
diff --git a/app/src/main/java/org/mian/gitnex/helpers/RoundedTransformation.java b/app/src/main/java/org/mian/gitnex/helpers/RoundedTransformation.java
index e38f9e02..f5528494 100644
--- a/app/src/main/java/org/mian/gitnex/helpers/RoundedTransformation.java
+++ b/app/src/main/java/org/mian/gitnex/helpers/RoundedTransformation.java
@@ -1,6 +1,11 @@
 package org.mian.gitnex.helpers;
 
-import android.graphics.*;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.graphics.Shader;
 
 /**
  * @author M M Arif
diff --git a/app/src/main/java/org/mian/gitnex/notifications/Notifications.java b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java
index 36f323ec..140cd40a 100644
--- a/app/src/main/java/org/mian/gitnex/notifications/Notifications.java
+++ b/app/src/main/java/org/mian/gitnex/notifications/Notifications.java
@@ -5,7 +5,11 @@ import android.app.NotificationManager;
 import android.content.Context;
 import android.graphics.Color;
 import android.os.Build;
-import androidx.work.*;
+import androidx.work.Constraints;
+import androidx.work.ExistingPeriodicWorkPolicy;
+import androidx.work.NetworkType;
+import androidx.work.PeriodicWorkRequest;
+import androidx.work.WorkManager;
 import org.mian.gitnex.R;
 import org.mian.gitnex.helpers.Constants;
 import org.mian.gitnex.helpers.TinyDB;
diff --git a/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java b/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java
index 2be96fab..d1e0ac4f 100644
--- a/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java
+++ b/app/src/main/java/org/mian/gitnex/viewmodels/IssueCommentsViewModel.java
@@ -5,9 +5,11 @@ import androidx.annotation.NonNull;
 import androidx.lifecycle.LiveData;
 import androidx.lifecycle.MutableLiveData;
 import androidx.lifecycle.ViewModel;
-import org.gitnex.tea4j.v2.models.Comment;
+import org.gitnex.tea4j.v2.models.TimelineComment;
 import org.mian.gitnex.R;
+import org.mian.gitnex.adapters.IssueCommentsAdapter;
 import org.mian.gitnex.clients.RetrofitClient;
+import org.mian.gitnex.helpers.Constants;
 import org.mian.gitnex.helpers.Toasty;
 import java.util.List;
 import retrofit2.Call;
@@ -20,33 +22,34 @@ import retrofit2.Response;
 
 public class IssueCommentsViewModel extends ViewModel {
 
-	private MutableLiveData<List<Comment>> issueComments;
+	private MutableLiveData<List<TimelineComment>> issueComments;
+	private int resultLimit;
 
-	public LiveData<List<Comment>> getIssueCommentList(String owner, String repo, int index, Context ctx) {
+	public LiveData<List<TimelineComment>> getIssueCommentList(String owner, String repo, int index, Context ctx) {
 
 		issueComments = new MutableLiveData<>();
-		loadIssueComments(owner, repo, index, ctx);
-
-		return issueComments;
-	}
-
-	public void loadIssueComments(String owner, String repo, int index, Context ctx) {
+		resultLimit = Constants.getCurrentResultLimit(ctx);
 		loadIssueComments(owner, repo, index, ctx, null);
+		return issueComments;
 	}
 
 	public void loadIssueComments(String owner, String repo, int index, Context ctx, Runnable onLoadingFinished) {
 
-		Call<List<Comment>> call = RetrofitClient.getApiInterface(ctx).issueGetComments(owner, repo, (long) index, null, null);
+		Call<List<TimelineComment>> call = RetrofitClient.getApiInterface(ctx).issueGetCommentsAndTimeline(owner, repo, (long) index, null, 1, resultLimit, null);
 
 		call.enqueue(new Callback<>() {
 
 			@Override
-			public void onResponse(@NonNull Call<List<Comment>> call, @NonNull Response<List<Comment>> response) {
+			public void onResponse(@NonNull Call<List<TimelineComment>> call, @NonNull Response<List<TimelineComment>> response) {
 
 				if(response.isSuccessful()) {
-					issueComments.postValue(response.body());
-					if(onLoadingFinished != null) {
-						onLoadingFinished.run();
+
+					if(response.body() != null) {
+
+						issueComments.postValue(response.body());
+						if(onLoadingFinished != null) {
+							onLoadingFinished.run();
+						}
 					}
 				}
 				else {
@@ -55,11 +58,52 @@ public class IssueCommentsViewModel extends ViewModel {
 			}
 
 			@Override
-			public void onFailure(@NonNull Call<List<Comment>> call, @NonNull Throwable t) {
+			public void onFailure(@NonNull Call<List<TimelineComment>> call, @NonNull Throwable t) {
 
 				Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError));
 			}
 		});
 	}
 
+	public void loadMoreIssueComments(String owner, String repo, int index, Context ctx, int page, IssueCommentsAdapter adapter) {
+
+		Call<List<TimelineComment>> call = RetrofitClient.getApiInterface(ctx).issueGetCommentsAndTimeline(owner, repo, (long) index, null, page, resultLimit, null);
+
+		call.enqueue(new Callback<>() {
+
+			@Override
+			public void onResponse(@NonNull Call<List<TimelineComment>> call, @NonNull Response<List<TimelineComment>> response) {
+
+				if(response.isSuccessful()) {
+
+					if(response.body() != null) {
+
+						List<TimelineComment> list = issueComments.getValue();
+						assert list != null;
+						assert response.body() != null;
+
+						if(response.body().size() != 0) {
+							list.addAll(response.body());
+							adapter.updateList(list);
+						}
+						else {
+							adapter.setMoreDataAvailable(false);
+						}
+					}
+					else {
+						adapter.setMoreDataAvailable(false);
+					}
+				}
+				else {
+					Toasty.error(ctx, ctx.getString(R.string.genericError));
+				}
+			}
+
+			@Override
+			public void onFailure(@NonNull Call<List<TimelineComment>> call, @NonNull Throwable t) {
+				Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError));
+			}
+		});
+	}
+
 }
diff --git a/app/src/main/res/drawable/ic_bookmark.xml b/app/src/main/res/drawable/ic_bookmark.xml
new file mode 100644
index 00000000..f6c973f0
--- /dev/null
+++ b/app/src/main/res/drawable/ic_bookmark.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M9,4h6a2,2 0,0 1,2 2v14l-5,-3l-5,3v-14a2,2 0,0 1,2 -2"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_branch.xml b/app/src/main/res/drawable/ic_branch.xml
index 936bfb56..9765ef6f 100644
--- a/app/src/main/res/drawable/ic_branch.xml
+++ b/app/src/main/res/drawable/ic_branch.xml
@@ -3,32 +3,46 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M6,3L6,15"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M18,6m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M6,18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M18,9a9,9 0,0 1,-9 9"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M7,18m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M7,6m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M17,6m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M7,8L7,16"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M9,18h6a2,2 0,0 0,2 -2v-5"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M14,14l3,-3l3,3"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_browser.xml b/app/src/main/res/drawable/ic_browser.xml
index eab9daf1..a38d21d6 100644
--- a/app/src/main/res/drawable/ic_browser.xml
+++ b/app/src/main/res/drawable/ic_browser.xml
@@ -1,5 +1,27 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp"
-    android:height="24dp" android:viewportWidth="16" android:viewportHeight="16">
-    <path android:fillColor="?attr/iconsColor" android:fillType="evenOdd"
-        android:pathData="M6,3h1v1L6,4L6,3zM4,3h1v1L4,4L4,3zM2,3h1v1L2,4L2,3zM14,13L2,13L2,5h12v8zM14,4L8,4L8,3h6v1zM15,3c0,-0.55 -0.45,-1 -1,-1L2,2c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1L15,3z"/>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M5,4L19,4A1,1 0,0 1,20 5L20,19A1,1 0,0 1,19 20L5,20A1,1 0,0 1,4 19L4,5A1,1 0,0 1,5 4z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M4,8L20,8"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M8,4L8,8"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_clock.xml b/app/src/main/res/drawable/ic_clock.xml
new file mode 100644
index 00000000..d165ae17
--- /dev/null
+++ b/app/src/main/res/drawable/ic_clock.xml
@@ -0,0 +1,20 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,12m-9,0a9,9 0,1 1,18 0a9,9 0,1 1,-18 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,7l0,5l3,3"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_dependency.xml b/app/src/main/res/drawable/ic_dependency.xml
new file mode 100644
index 00000000..1dd9a72e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_dependency.xml
@@ -0,0 +1,41 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#00000000"
+      android:pathData="m16,16 l2,2 4,-4"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M21,10V8a2,2 0,0 0,-1 -1.73l-7,-4a2,2 0,0 0,-2 0l-7,4A2,2 0,0 0,3 8v8a2,2 0,0 0,1 1.73l7,4a2,2 0,0 0,2 0l2,-1.14"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M16.5,9.4 L7.55,4.24"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M3.29,7l8.71,5l8.71,-5"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,22L12,12"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_directory.xml b/app/src/main/res/drawable/ic_directory.xml
index 87e891e7..7fa464f8 100644
--- a/app/src/main/res/drawable/ic_directory.xml
+++ b/app/src/main/res/drawable/ic_directory.xml
@@ -3,8 +3,11 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M3.75,4.5a0.25,0.25 0,0 0,-0.25 0.25v14.5c0,0.138 0.112,0.25 0.25,0.25h16.5a0.25,0.25 0,0 0,0.25 -0.25V7.687a0.25,0.25 0,0 0,-0.25 -0.25h-8.471a1.75,1.75 0,0 1,-1.447 -0.765L8.928,4.61a0.25,0.25 0,0 0,-0.208 -0.11H3.75zM2,4.75C2,3.784 2.784,3 3.75,3h4.971c0.58,0 1.12,0.286 1.447,0.765l1.404,2.063a0.25,0.25 0,0 0,0.207 0.11h8.471c0.966,0 1.75,0.783 1.75,1.75V19.25A1.75,1.75 0,0 1,20.25 21H3.75A1.75,1.75 0,0 1,2 19.25V4.75z"/>
+  <path
+      android:pathData="M5,4h4l3,3h7a2,2 0,0 1,2 2v8a2,2 0,0 1,-2 2h-14a2,2 0,0 1,-2 -2v-11a2,2 0,0 1,2 -2"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_file.xml b/app/src/main/res/drawable/ic_file.xml
index 9383376a..fed66146 100644
--- a/app/src/main/res/drawable/ic_file.xml
+++ b/app/src/main/res/drawable/ic_file.xml
@@ -4,7 +4,17 @@
     android:viewportWidth="24"
     android:viewportHeight="24">
     <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M5,2.5a0.5,0.5 0,0 0,-0.5 0.5v18a0.5,0.5 0,0 0,0.5 0.5h14a0.5,0.5 0,0 0,0.5 -0.5L19.5,8.5h-4a2,2 0,0 1,-2 -2v-4L5,2.5zM15,2.5v4a0.5,0.5 0,0 0,0.5 0.5h4a0.5,0.5 0,0 0,-0.146 -0.336l-4.018,-4.018A0.5,0.5 0,0 0,15 2.5zM3,3a2,2 0,0 1,2 -2h9.982a2,2 0,0 1,1.414 0.586l4.018,4.018A2,2 0,0 1,21 7.018L21,21a2,2 0,0 1,-2 2L5,23a2,2 0,0 1,-2 -2L3,3z"/>
+        android:pathData="M14,3v4a1,1 0,0 0,1 1h4"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="?attr/iconsColor"
+        android:strokeLineCap="round"/>
+    <path
+        android:pathData="M17,21h-10a2,2 0,0 1,-2 -2v-14a2,2 0,0 1,2 -2h7l5,5v11a2,2 0,0 1,-2 2z"
+        android:strokeLineJoin="round"
+        android:strokeWidth="2"
+        android:fillColor="#00000000"
+        android:strokeColor="?attr/iconsColor"
+        android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_flame.xml b/app/src/main/res/drawable/ic_flame.xml
new file mode 100644
index 00000000..fa0337ca
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flame.xml
@@ -0,0 +1,13 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M8.5,14.5A2.5,2.5 0,0 0,11 12c0,-1.38 -0.5,-2 -1,-3 -1.072,-2.143 -0.224,-4.054 2,-6 0.5,2.5 2,4.9 4,6.5 2,1.6 3,3.5 3,5.5a7,7 0,1 1,-14 0c0,-1.153 0.433,-2.294 1,-3a2.5,2.5 0,0 0,2.5 2.5z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_fork.xml b/app/src/main/res/drawable/ic_fork.xml
index c039c3f8..02fb7b50 100644
--- a/app/src/main/res/drawable/ic_fork.xml
+++ b/app/src/main/res/drawable/ic_fork.xml
@@ -3,16 +3,39 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M12,21a1.75,1.75 0,1 1,0 -3.5,1.75 1.75,0 0,1 0,3.5zM8.75,19.25a3.25,3.25 0,1 0,6.5 0,3.25 3.25,0 0,0 -6.5,0zM5.75,6.5a1.75,1.75 0,1 1,0 -3.5,1.75 1.75,0 0,1 0,3.5zM2.5,4.75a3.25,3.25 0,1 0,6.5 0,3.25 3.25,0 0,0 -6.5,0zM18.25,6.5a1.75,1.75 0,1 1,0 -3.5,1.75 1.75,0 0,1 0,3.5zM15,4.75a3.25,3.25 0,1 0,6.5 0,3.25 3.25,0 0,0 -6.5,0z"/>
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M6.5,7.75v1A2.25,2.25 0,0 0,8.75 11h6.5a2.25,2.25 0,0 0,2.25 -2.25v-1H19v1a3.75,3.75 0,0 1,-3.75 3.75h-6.5A3.75,3.75 0,0 1,5 8.75v-1h1.5z"/>
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M11.25,16.25v-5h1.5v5h-1.5z"/>
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,18m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M7,6m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M17,6m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M7,8v2a2,2 0,0 0,2 2h6a2,2 0,0 0,2 -2v-2"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,12L12,16"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_history.xml b/app/src/main/res/drawable/ic_history.xml
new file mode 100644
index 00000000..bd820821
--- /dev/null
+++ b/app/src/main/res/drawable/ic_history.xml
@@ -0,0 +1,20 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M12,8l0,4l2,2"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M3.05,11a9,9 0,1 1,0.5 4m-0.5,5v-5h5"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_kanban.xml b/app/src/main/res/drawable/ic_kanban.xml
new file mode 100644
index 00000000..e8f40f30
--- /dev/null
+++ b/app/src/main/res/drawable/ic_kanban.xml
@@ -0,0 +1,34 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M4,4L10,4"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M14,4L20,4"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M6,8L8,8A2,2 0,0 1,10 10L10,18A2,2 0,0 1,8 20L6,20A2,2 0,0 1,4 18L4,10A2,2 0,0 1,6 8z"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+  <path
+      android:fillColor="#00000000"
+      android:pathData="M16,8L18,8A2,2 0,0 1,20 10L20,12A2,2 0,0 1,18 14L16,14A2,2 0,0 1,14 12L14,10A2,2 0,0 1,16 8z"
+      android:strokeWidth="2"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"
+      android:strokeLineJoin="round" />
+</vector>
diff --git a/app/src/main/res/drawable/ic_key.xml b/app/src/main/res/drawable/ic_key.xml
new file mode 100644
index 00000000..df65f6eb
--- /dev/null
+++ b/app/src/main/res/drawable/ic_key.xml
@@ -0,0 +1,34 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M8,15m-4,0a4,4 0,1 1,8 0a4,4 0,1 1,-8 0"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M10.85,12.15L19,4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M18,5L20,7"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M15,8L17,10"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_milestone.xml b/app/src/main/res/drawable/ic_milestone.xml
index e4c3ae7a..9dd16654 100644
--- a/app/src/main/res/drawable/ic_milestone.xml
+++ b/app/src/main/res/drawable/ic_milestone.xml
@@ -3,8 +3,25 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M11.75,1a0.75,0.75 0,0 1,0.75 0.75L12.5,4h6.532c0.42,0 0.826,0.15 1.143,0.425l3.187,2.75a1.75,1.75 0,0 1,0 2.65l-3.187,2.75a1.75,1.75 0,0 1,-1.143 0.425L12.5,13v9.25a0.75,0.75 0,0 1,-1.5 0L11,13L3.75,13A1.75,1.75 0,0 1,2 11.25v-5.5C2,4.783 2.784,4 3.75,4L11,4L11,1.75a0.75,0.75 0,0 1,0.75 -0.75zM11.75,5.5h7.282a0.25,0.25 0,0 1,0.163 0.06l3.188,2.75a0.25,0.25 0,0 1,0 0.38l-3.188,2.75a0.25,0.25 0,0 1,-0.163 0.06L3.75,11.5a0.25,0.25 0,0 1,-0.25 -0.25v-5.5a0.25,0.25 0,0 1,0.25 -0.25h8z"/>
+  <path
+      android:pathData="M18,6H5a2,2 0,0 0,-2 2v3a2,2 0,0 0,2 2h13l4,-3.5L18,6Z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M12,13v9"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M12,2v4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_organization.xml b/app/src/main/res/drawable/ic_organization.xml
index ce6f121c..bd1f29bd 100644
--- a/app/src/main/res/drawable/ic_organization.xml
+++ b/app/src/main/res/drawable/ic_organization.xml
@@ -3,11 +3,53 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:pathData="M7.25,12a0.75,0.75 0,0 0,0 1.5h0.5a0.75,0.75 0,0 0,0 -1.5h-0.5zM6.5,9.25a0.75,0.75 0,0 1,0.75 -0.75h0.5a0.75,0.75 0,0 1,0 1.5h-0.5a0.75,0.75 0,0 1,-0.75 -0.75zM7.25,5a0.75,0.75 0,0 0,0 1.5h0.5a0.75,0.75 0,0 0,0 -1.5h-0.5zM10,12.75a0.75,0.75 0,0 1,0.75 -0.75h0.5a0.75,0.75 0,0 1,0 1.5h-0.5a0.75,0.75 0,0 1,-0.75 -0.75zM10.75,8.5a0.75,0.75 0,0 0,0 1.5h0.5a0.75,0.75 0,0 0,0 -1.5h-0.5zM10,5.75a0.75,0.75 0,0 1,0.75 -0.75h0.5a0.75,0.75 0,0 1,0 1.5h-0.5a0.75,0.75 0,0 1,-0.75 -0.75zM14.25,12a0.75,0.75 0,0 0,0 1.5h0.5a0.75,0.75 0,0 0,0 -1.5h-0.5zM13.5,9.25a0.75,0.75 0,0 1,0.75 -0.75h0.5a0.75,0.75 0,0 1,0 1.5h-0.5a0.75,0.75 0,0 1,-0.75 -0.75zM14.25,5a0.75,0.75 0,0 0,0 1.5h0.5a0.75,0.75 0,0 0,0 -1.5h-0.5z"/>
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M3,20a2,2 0,0 0,2 2h3.75a0.75,0.75 0,0 0,0.75 -0.75L9.5,19h3v2.25c0,0.414 0.336,0.75 0.75,0.75L17,22c0.092,0 0.183,-0.006 0.272,-0.018a0.758,0.758 0,0 0,0.166 0.018L21.5,22a2,2 0,0 0,2 -2v-7.625a2,2 0,0 0,-0.8 -1.6l-1,-0.75a0.75,0.75 0,1 0,-0.9 1.2l1,0.75a0.5,0.5 0,0 1,0.2 0.4L22,20a0.5,0.5 0,0 1,-0.5 0.5h-2.563c0.041,-0.16 0.063,-0.327 0.063,-0.5L19,3a2,2 0,0 0,-2 -2L5,1a2,2 0,0 0,-2 2v17zM5,20.5a0.5,0.5 0,0 1,-0.5 -0.5L4.5,3a0.5,0.5 0,0 1,0.5 -0.5h12a0.5,0.5 0,0 1,0.5 0.5v17a0.5,0.5 0,0 1,-0.5 0.5h-3v-2.25a0.75,0.75 0,0 0,-0.75 -0.75h-4.5a0.75,0.75 0,0 0,-0.75 0.75v2.25L5,20.5z"/>
+  <path
+      android:pathData="M6,22V4c0,-0.27 0,-0.55 0.07,-0.82a1.477,1.477 0,0 1,1.1 -1.11C7.46,2 8.73,2 9,2h7c0.27,0 0.55,0 0.82,0.07a1.477,1.477 0,0 1,1.11 1.1c0.07,0.28 0.07,0.56 0.07,0.83v18H6Z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M2,14v6c0,1.1 0.9,2 2,2h2V12H4c-0.27,0 -0.55,0 -0.82,0.07 -0.27,0.07 -0.52,0.2 -0.72,0.4 -0.19,0.19 -0.32,0.44 -0.39,0.71A3.4,3.4 0,0 0,2 14Z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M20.82,9.07A3.4,3.4 0,0 0,20 9h-2v13h2a2,2 0,0 0,2 -2v-9c0,-0.28 0,-0.55 -0.07,-0.82 -0.07,-0.27 -0.2,-0.52 -0.4,-0.72 -0.19,-0.19 -0.44,-0.32 -0.71,-0.39Z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M10,6h4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M10,10h4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M10,14h4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M10,18h4"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_pull_request.xml b/app/src/main/res/drawable/ic_pull_request.xml
index 3d4f443d..7f14620b 100644
--- a/app/src/main/res/drawable/ic_pull_request.xml
+++ b/app/src/main/res/drawable/ic_pull_request.xml
@@ -3,32 +3,46 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M18,18m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M6,6m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M13,6h3a2,2 0,0 1,2 2v7"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M6,9L6,21"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
+  <path
+      android:pathData="M6,18m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M6,6m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M18,18m-2,0a2,2 0,1 1,4 0a2,2 0,1 1,-4 0"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M6,8L6,16"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M11,6h5a2,2 0,0 1,2 2v8"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M14,9l-3,-3l3,-3"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_refresh.xml
similarity index 85%
rename from app/src/main/res/drawable/ic_reset.xml
rename to app/src/main/res/drawable/ic_refresh.xml
index 409ba9b1..b6cb15b8 100644
--- a/app/src/main/res/drawable/ic_reset.xml
+++ b/app/src/main/res/drawable/ic_refresh.xml
@@ -4,10 +4,10 @@
     android:viewportWidth="24"
     android:viewportHeight="24">
     <path
-        android:pathData="M4,4v5h0.582m15.356,2A8.001,8.001 0,0 0,4.582 9m0,0H9m11,11v-5h-0.581m0,0a8.003,8.003 0,0 1,-15.357 -2m15.357,2H15"
-        android:strokeLineJoin="round"
-        android:strokeWidth="2"
         android:fillColor="#00000000"
+        android:pathData="M4,4v5h0.582m15.356,2A8.001,8.001 0,0 0,4.582 9m0,0H9m11,11v-5h-0.581m0,0a8.003,8.003 0,0 1,-15.357 -2m15.357,2H15"
+        android:strokeWidth="2"
         android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"/>
+        android:strokeLineCap="round"
+        android:strokeLineJoin="round" />
 </vector>
diff --git a/app/src/main/res/drawable/ic_repo.xml b/app/src/main/res/drawable/ic_repo.xml
index 1fd3fac9..f04ca96b 100644
--- a/app/src/main/res/drawable/ic_repo.xml
+++ b/app/src/main/res/drawable/ic_repo.xml
@@ -3,11 +3,18 @@
     android:height="24dp"
     android:viewportWidth="24"
     android:viewportHeight="24">
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:fillType="evenOdd"
-        android:pathData="M3,2.75A2.75,2.75 0,0 1,5.75 0h14.5a0.75,0.75 0,0 1,0.75 0.75v20.5a0.75,0.75 0,0 1,-0.75 0.75h-6a0.75,0.75 0,0 1,0 -1.5h5.25v-4H6A1.5,1.5 0,0 0,4.5 18v0.75c0,0.716 0.43,1.334 1.05,1.605a0.75,0.75 0,0 1,-0.6 1.374A3.25,3.25 0,0 1,3 18.75v-16zM19.5,1.5V15H6c-0.546,0 -1.059,0.146 -1.5,0.401V2.75c0,-0.69 0.56,-1.25 1.25,-1.25H19.5z"/>
-    <path
-        android:fillColor="?attr/iconsColor"
-        android:pathData="M7,18.25a0.25,0.25 0,0 1,0.25 -0.25h5a0.25,0.25 0,0 1,0.25 0.25v5.01a0.25,0.25 0,0 1,-0.397 0.201l-2.206,-1.604a0.25,0.25 0,0 0,-0.294 0L7.397,23.46a0.25,0.25 0,0 1,-0.397 -0.2v-5.01z"/>
+  <path
+      android:pathData="M4,19.5A2.5,2.5 0,0 1,6.5 17H20"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M6.5,2H20v20H6.5A2.5,2.5 0,0 1,4 19.5v-15A2.5,2.5 0,0 1,6.5 2z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
 </vector>
diff --git a/app/src/main/res/drawable/ic_tag.xml b/app/src/main/res/drawable/ic_tag.xml
new file mode 100644
index 00000000..d984b404
--- /dev/null
+++ b/app/src/main/res/drawable/ic_tag.xml
@@ -0,0 +1,20 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M8.5,8.5m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+  <path
+      android:pathData="M4,7v3.859c0,0.537 0.213,1.052 0.593,1.432l8.116,8.116a2.025,2.025 0,0 0,2.864 0l4.834,-4.834a2.025,2.025 0,0 0,0 -2.864l-8.117,-8.116a2.025,2.025 0,0 0,-1.431 -0.593h-3.859a3,3 0,0 0,-3 3z"
+      android:strokeLineJoin="round"
+      android:strokeWidth="2"
+      android:fillColor="#00000000"
+      android:strokeColor="?attr/iconsColor"
+      android:strokeLineCap="round"/>
+</vector>
diff --git a/app/src/main/res/drawable/ic_update.xml b/app/src/main/res/drawable/ic_update.xml
deleted file mode 100644
index ff53349e..00000000
--- a/app/src/main/res/drawable/ic_update.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M23,4l0,6l-6,0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M1,20l0,-6l6,0"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-    <path
-        android:fillColor="#00000000"
-        android:pathData="M3.51,9a9,9 0,0 1,14.85 -3.36L23,10M1,14l4.64,4.36A9,9 0,0 0,20.49 15"
-        android:strokeWidth="2"
-        android:strokeColor="?attr/iconsColor"
-        android:strokeLineCap="round"
-        android:strokeLineJoin="round"/>
-</vector>
diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml
index 57202ab2..35804733 100644
--- a/app/src/main/res/layout/activity_issue_detail.xml
+++ b/app/src/main/res/layout/activity_issue_detail.xml
@@ -1,19 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:background="?attr/primaryBackgroundColor">
+    android:background="?attr/primaryBackgroundColor"
+    android:orientation="vertical">
 
     <com.google.android.material.appbar.AppBarLayout
         android:id="@+id/appbar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        app:elevation="@dimen/dimen0dp"
-        android:theme="@style/Widget.AppCompat.SearchView">
+        android:theme="@style/Widget.AppCompat.SearchView"
+        app:elevation="@dimen/dimen0dp">
 
         <com.google.android.material.appbar.MaterialToolbar
             android:id="@+id/toolbar"
@@ -25,20 +24,20 @@
                 android:id="@+id/issuePrState"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@drawable/ic_issue"
+                android:contentDescription="@string/generalImgContentText"
                 android:paddingStart="@dimen/dimen0dp"
                 android:paddingEnd="@dimen/dimen8dp"
-                android:visibility="gone"
-                android:contentDescription="@string/generalImgContentText"/>
+                android:src="@drawable/ic_issue"
+                android:visibility="gone" />
 
             <TextView
+                android:id="@+id/toolbar_title"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:layout_gravity="center_vertical"
                 android:gravity="center_vertical"
-                android:textSize="@dimen/dimen20sp"
                 android:textColor="?attr/primaryTextColor"
-                android:id="@+id/toolbar_title"/>
+                android:textSize="@dimen/dimen20sp" />
 
         </com.google.android.material.appbar.MaterialToolbar>
 
@@ -46,31 +45,31 @@
 
     <com.google.android.material.progressindicator.LinearProgressIndicator
         android:id="@+id/progressBar"
+        style="@style/Widget.Material3.LinearProgressIndicator"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/dimen56dp"
         android:indeterminate="true"
-        style="@style/Widget.Material3.LinearProgressIndicator"
-        app:indicatorColor="?attr/progressIndicatorColor"/>
+        app:indicatorColor="?attr/progressIndicatorColor" />
 
     <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
         android:id="@+id/addNewComment"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_margin="@dimen/dimen16dp"
-        android:text="@string/commentButtonText"
-        android:contentDescription="@string/commentButtonText"
-        android:textColor="@color/colorWhite"
-        android:backgroundTint="?attr/fabColor"
         android:layout_gravity="bottom|end"
-        app:iconTint="@color/colorWhite"
-        app:icon="@drawable/ic_reply"/>
+        android:layout_margin="@dimen/dimen16dp"
+        android:backgroundTint="?attr/fabColor"
+        android:contentDescription="@string/commentButtonText"
+        android:text="@string/commentButtonText"
+        android:textColor="@color/colorWhite"
+        app:icon="@drawable/ic_reply"
+        app:iconTint="@color/colorWhite" />
 
     <RelativeLayout
         android:id="@+id/relativeMainLayoutFrame"
         android:layout_width="match_parent"
-        android:layout_marginTop="@dimen/dimen56dp"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/dimen64dp">
 
         <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
             android:id="@+id/pullToRefresh"
@@ -78,222 +77,252 @@
             android:layout_height="wrap_content">
 
             <androidx.core.widget.NestedScrollView
+                android:id="@+id/scrollViewComments"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:id="@+id/scrollViewComments"
                 android:fillViewport="true">
 
                 <RelativeLayout
                     android:id="@+id/relativeLayoutFrame"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:padding="@dimen/dimen8dp">
+                    android:paddingStart="@dimen/dimen8dp"
+                    android:paddingTop="@dimen/dimen2dp"
+                    android:paddingEnd="@dimen/dimen8dp"
+                    android:paddingBottom="@dimen/dimen8dp">
 
                     <com.google.android.material.card.MaterialCardView
-                        android:id="@+id/mainThreadCard"
+                        android:id="@+id/titleCard"
+                        style="?attr/materialCardViewFilledStyle"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        style="?attr/materialCardViewFilledStyle"
-                        android:layout_marginBottom="@dimen/dimen4dp"
+                        android:layout_marginBottom="@dimen/dimen12dp"
                         app:cardElevation="@dimen/dimen0dp">
 
                         <LinearLayout
                             android:layout_width="match_parent"
                             android:layout_height="wrap_content"
-                            android:foreground="?android:attr/selectableItemBackground"
                             android:background="?attr/materialCardBackgroundColor"
-                            android:orientation="vertical">
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:orientation="vertical"
+                            android:padding="@dimen/dimen12dp">
 
-                            <RelativeLayout
-                                android:id="@+id/mainIssueLayout"
+                            <TextView
+                                android:id="@+id/issueTitle"
                                 android:layout_width="match_parent"
                                 android:layout_height="wrap_content"
-                                android:orientation="vertical"
-                                android:padding="@dimen/dimen16dp">
+                                android:gravity="start"
+                                android:textColor="?attr/primaryTextColor"
+                                android:textIsSelectable="true"
+                                android:textSize="@dimen/dimen16sp" />
+
+                        </LinearLayout>
+
+                    </com.google.android.material.card.MaterialCardView>
+
+                    <com.google.android.material.card.MaterialCardView
+                        android:id="@+id/mainThreadCard"
+                        style="?attr/materialCardViewFilledStyle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_below="@+id/titleCard"
+                        android:layout_marginBottom="@dimen/dimen0dp"
+                        app:cardElevation="@dimen/dimen0dp">
+
+                        <LinearLayout
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:background="?attr/materialCardBackgroundColor"
+                            android:foreground="?android:attr/selectableItemBackground"
+                            android:orientation="vertical"
+                            android:padding="@dimen/dimen12dp">
+
+                            <LinearLayout
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical"
+                                android:orientation="horizontal">
 
                                 <com.google.android.material.card.MaterialCardView
-                                    android:id="@+id/assigneeAvatarFrame"
+                                    style="?attr/materialCardViewFilledStyle"
                                     android:layout_width="@dimen/dimen24dp"
                                     android:layout_height="@dimen/dimen24dp"
-                                    style="?attr/materialCardViewFilledStyle"
-                                    app:cardElevation="@dimen/dimen0dp"
-                                    android:layout_marginEnd="@dimen/dimen12dp"
-                                    app:cardCornerRadius="@dimen/dimen12dp">
+                                    app:cardCornerRadius="@dimen/dimen12dp"
+                                    app:cardElevation="@dimen/dimen0dp">
 
                                     <ImageView
                                         android:id="@+id/assigneeAvatar"
                                         android:layout_width="match_parent"
                                         android:layout_height="match_parent"
-                                        android:contentDescription="@string/generalImgContentText"/>
+                                        android:layout_weight="0"
+                                        android:contentDescription="@string/generalImgContentText"
+                                        tools:srcCompat="@tools:sample/avatars"
+                                        tools:ignore="TooDeepLayout" />
 
                                 </com.google.android.material.card.MaterialCardView>
 
-                                <TextView
-                                    android:id="@+id/issueTitle"
-                                    android:layout_toEndOf="@+id/assigneeAvatarFrame"
-                                    android:layout_width="match_parent"
-                                    android:layout_height="wrap_content"
-                                    android:gravity="start"
-                                    android:textColor="?attr/primaryTextColor"
-                                    android:textIsSelectable="true"
-                                    android:textSize="@dimen/dimen16sp"/>
-
                                 <LinearLayout
-                                    android:id="@+id/msdueFrame"
-                                    android:layout_toEndOf="@+id/assigneeAvatarFrame"
-                                    android:layout_below="@+id/issueTitle"
-                                    android:layout_width="match_parent"
+                                    android:layout_width="0dp"
                                     android:layout_height="wrap_content"
-                                    android:layout_marginTop="@dimen/dimen10dp"
+                                    android:layout_marginLeft="@dimen/dimen16dp"
+                                    android:layout_marginRight="@dimen/dimen16dp"
+                                    android:layout_weight="1"
                                     android:orientation="vertical">
 
-                                    <LinearLayout
-                                        android:id="@+id/dueDateFrame"
-                                        android:layout_width="match_parent"
+                                    <TextView
+                                        android:id="@+id/author"
+                                        android:layout_width="wrap_content"
                                         android:layout_height="wrap_content"
-                                        android:gravity="end|center_vertical"
-                                        android:orientation="horizontal"
-                                        android:visibility="gone"
-                                        tools:ignore="UseCompoundDrawables">
-
-                                        <ImageView
-                                            android:layout_width="@dimen/dimen20dp"
-                                            android:layout_height="wrap_content"
-                                            app:srcCompat="@drawable/ic_calendar"
-                                            android:contentDescription="@string/generalImgContentText"/>
-
-                                        <TextView
-                                            android:id="@+id/issueDueDate"
-                                            android:layout_width="wrap_content"
-                                            android:layout_height="wrap_content"
-                                            android:layout_marginStart="@dimen/dimen8dp"
-                                            android:singleLine="true"
-                                            android:textColor="?attr/primaryTextColor"
-                                            android:textSize="@dimen/dimen14sp"/>
-
-                                    </LinearLayout>
+                                        android:ellipsize="middle"
+                                        android:singleLine="true"
+                                        android:textColor="?attr/primaryTextColor"
+                                        android:textSize="14sp"
+                                        android:textStyle="bold" />
 
                                     <LinearLayout
-                                        android:id="@+id/milestoneFrame"
                                         android:layout_width="match_parent"
                                         android:layout_height="wrap_content"
-                                        android:gravity="end|center_vertical"
-                                        android:orientation="horizontal"
-                                        android:visibility="gone"
-                                        tools:ignore="UseCompoundDrawables">
-
-                                        <ImageView
-                                            android:layout_width="@dimen/dimen20dp"
-                                            android:layout_height="wrap_content"
-                                            app:srcCompat="@drawable/ic_milestone"
-                                            android:contentDescription="@string/generalImgContentText"/>
+                                        android:orientation="horizontal">
 
                                         <TextView
-                                            android:id="@+id/issueMilestone"
+                                            android:id="@+id/issueCreatedTime"
                                             android:layout_width="wrap_content"
                                             android:layout_height="wrap_content"
-                                            android:layout_marginStart="@dimen/dimen8dp"
-                                            android:singleLine="true"
-                                            android:textColor="?attr/primaryTextColor"
-                                            android:textSize="@dimen/dimen14sp"/>
+                                            android:gravity="start"
+                                            android:textColor="?attr/hintColor"
+                                            android:textSize="12sp"
+                                            android:visibility="gone" />
+
+                                        <TextView
+                                            android:id="@+id/issueModified"
+                                            android:layout_width="wrap_content"
+                                            android:layout_height="wrap_content"
+                                            android:gravity="start"
+                                            android:text="@string/modifiedText"
+                                            android:textColor="?attr/hintColor"
+                                            android:textSize="12sp"
+                                            android:visibility="gone" />
 
                                     </LinearLayout>
 
                                 </LinearLayout>
 
-                                <HorizontalScrollView
-                                    android:layout_below="@+id/msdueFrame"
-                                    android:layout_width="match_parent"
+                            </LinearLayout>
+
+                            <LinearLayout
+                                android:id="@+id/dueDateFrame"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:gravity="end|center_vertical"
+                                android:orientation="horizontal"
+                                android:visibility="gone"
+                                tools:ignore="UseCompoundDrawables">
+
+                                <ImageView
+                                    android:layout_width="@dimen/dimen20dp"
                                     android:layout_height="wrap_content"
-                                    android:id="@+id/assigneesScrollView"
-                                    android:layout_alignParentEnd="false"
-                                    android:foregroundGravity="right"
-                                    android:scrollbarThumbHorizontal="@android:color/transparent"
-                                    android:fillViewport="true">
+                                    android:contentDescription="@string/generalImgContentText"
+                                    app:srcCompat="@drawable/ic_calendar" />
 
-                                    <LinearLayout
-                                        android:id="@+id/frameAssignees"
-                                        android:layout_width="wrap_content"
-                                        android:layout_height="wrap_content"
-                                        android:orientation="horizontal"
-                                        android:layout_gravity="end"
-                                        android:gravity="end"
-                                        android:layout_marginTop="@dimen/dimen10dp">
-
-                                    </LinearLayout>
-                                </HorizontalScrollView>
-
-                                <androidx.recyclerview.widget.RecyclerView
-                                    android:id="@+id/issueDescription"
-                                    android:layout_below="@+id/assigneesScrollView"
-                                    android:layout_width="match_parent"
-                                    android:layout_height="wrap_content"
-                                    android:gravity="start"
-                                    android:textColor="?attr/primaryTextColor"
-                                    android:autoLink="web"
-                                    android:textColorLink="@color/lightBlue"
-                                    android:textIsSelectable="true"
-                                    android:textSize="@dimen/dimen14sp"/>
-
-                                <HorizontalScrollView
-                                    android:layout_below="@+id/issueDescription"
-                                    android:layout_width="match_parent"
-                                    android:layout_height="wrap_content"
-                                    android:id="@+id/labelsScrollView"
-                                    android:layout_alignParentEnd="false"
-                                    android:foregroundGravity="right"
-                                    android:scrollbarThumbHorizontal="@android:color/transparent"
-                                    android:fillViewport="true">
-
-                                    <LinearLayout
-                                        android:id="@+id/frameLabels"
-                                        android:layout_width="wrap_content"
-                                        android:layout_height="wrap_content"
-                                        android:orientation="horizontal"
-                                        android:layout_marginTop="@dimen/dimen10dp">
-
-                                    </LinearLayout>
-                                </HorizontalScrollView>
-
-                                <RelativeLayout
+                                <TextView
+                                    android:id="@+id/issueDueDate"
                                     android:layout_width="wrap_content"
                                     android:layout_height="wrap_content"
-                                    android:id="@+id/issueTimeFrame"
-                                    android:layout_below="@+id/labelsScrollView"
-                                    android:orientation="horizontal"
-                                    android:layout_marginTop="@dimen/dimen10dp">
+                                    android:layout_marginStart="@dimen/dimen8dp"
+                                    android:singleLine="true"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textSize="@dimen/dimen14sp" />
 
-                                    <TextView
-                                        android:id="@+id/issueCreatedTime"
-                                        android:layout_width="wrap_content"
-                                        android:layout_height="wrap_content"
-                                        android:gravity="start"
-                                        android:visibility="gone"
-                                        android:textColor="?attr/hintColor"
-                                        android:textSize="@dimen/dimen12sp"/>
+                            </LinearLayout>
 
-                                    <TextView
-                                        android:id="@+id/issueModified"
-                                        android:layout_width="wrap_content"
-                                        android:layout_height="wrap_content"
-                                        android:textColor="?attr/hintColor"
-                                        android:layout_toEndOf="@+id/issueCreatedTime"
-                                        android:textSize="@dimen/dimen12sp"
-                                        android:visibility="gone"
-                                        android:text="@string/modifiedText"/>
+                            <LinearLayout
+                                android:id="@+id/milestoneFrame"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:gravity="end|center_vertical"
+                                android:orientation="horizontal"
+                                android:visibility="gone"
+                                tools:ignore="UseCompoundDrawables">
 
-                                </RelativeLayout>
+                                <ImageView
+                                    android:layout_width="@dimen/dimen20dp"
+                                    android:layout_height="wrap_content"
+                                    android:contentDescription="@string/generalImgContentText"
+                                    app:srcCompat="@drawable/ic_milestone" />
+
+                                <TextView
+                                    android:id="@+id/issueMilestone"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginStart="@dimen/dimen8dp"
+                                    android:singleLine="true"
+                                    android:textColor="?attr/primaryTextColor"
+                                    android:textSize="@dimen/dimen14sp" />
+
+                            </LinearLayout>
+
+                            <HorizontalScrollView
+                                android:id="@+id/assigneesScrollView"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:fillViewport="true"
+                                android:foregroundGravity="right"
+                                android:visibility="gone"
+                                android:scrollbarThumbHorizontal="@android:color/transparent">
 
                                 <LinearLayout
-                                    android:id="@+id/commentReactionBadges"
-                                    android:layout_width="match_parent"
+                                    android:id="@+id/frameAssignees"
+                                    android:layout_width="wrap_content"
                                     android:layout_height="wrap_content"
-                                    android:layout_below="@+id/issueTimeFrame"
-                                    android:visibility="gone"
+                                    android:layout_gravity="end"
                                     android:layout_marginTop="@dimen/dimen10dp"
-                                    android:orientation="horizontal"/>
+                                    android:gravity="end"
+                                    android:orientation="horizontal">
 
-                            </RelativeLayout>
+                                </LinearLayout>
+
+                            </HorizontalScrollView>
+
+                            <androidx.recyclerview.widget.RecyclerView
+                                android:id="@+id/issueDescription"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:paddingTop="@dimen/dimen8dp"
+                                android:autoLink="web"
+                                android:gravity="start"
+                                android:visibility="gone"
+                                android:textColor="?attr/primaryTextColor"
+                                android:textColorLink="@color/lightBlue"
+                                android:textIsSelectable="true"
+                                android:textSize="@dimen/dimen14sp" />
+
+                            <HorizontalScrollView
+                                android:id="@+id/labelsScrollView"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:fillViewport="true"
+                                android:foregroundGravity="right"
+                                android:visibility="gone"
+                                android:scrollbarThumbHorizontal="@android:color/transparent">
+
+                                <LinearLayout
+                                    android:id="@+id/frameLabels"
+                                    android:layout_width="wrap_content"
+                                    android:layout_height="wrap_content"
+                                    android:layout_marginTop="@dimen/dimen10dp"
+                                    android:orientation="horizontal">
+
+                                </LinearLayout>
+
+                            </HorizontalScrollView>
+
+                            <LinearLayout
+                                android:id="@+id/commentReactionBadges"
+                                android:layout_width="match_parent"
+                                android:layout_height="wrap_content"
+                                android:layout_marginTop="@dimen/dimen10dp"
+                                android:orientation="horizontal"
+                                android:visibility="gone" />
 
                         </LinearLayout>
 
@@ -302,15 +331,15 @@
                     <FrameLayout
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
-                        android:background="?attr/primaryBackgroundColor"
-                        android:layout_below="@+id/mainThreadCard">
+                        android:layout_below="@+id/mainThreadCard"
+                        android:background="?attr/primaryBackgroundColor">
 
                         <androidx.recyclerview.widget.RecyclerView
                             android:id="@+id/recyclerView"
                             android:layout_width="match_parent"
-                            android:layout_height="match_parent"
-                            android:paddingBottom="@dimen/dimen72dp"
-                            android:clipToPadding="false"/>
+                            android:layout_height="wrap_content"
+                            android:clipToPadding="false"
+                            android:paddingBottom="@dimen/dimen72dp" />
 
                     </FrameLayout>
 
diff --git a/app/src/main/res/layout/bottom_sheet_organization.xml b/app/src/main/res/layout/bottom_sheet_organization.xml
index 23e14c7e..d3bf335b 100644
--- a/app/src/main/res/layout/bottom_sheet_organization.xml
+++ b/app/src/main/res/layout/bottom_sheet_organization.xml
@@ -82,7 +82,7 @@
                     android:text="@string/label"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
-                    app:drawableTopCompat="@drawable/ic_label"
+                    app:drawableTopCompat="@drawable/ic_tag"
                     app:layout_alignSelf="flex_start"/>
 
             </com.google.android.flexbox.FlexboxLayout>
diff --git a/app/src/main/res/layout/bottom_sheet_releases_tags.xml b/app/src/main/res/layout/bottom_sheet_releases_tags.xml
index d02f81a2..9220f4ae 100644
--- a/app/src/main/res/layout/bottom_sheet_releases_tags.xml
+++ b/app/src/main/res/layout/bottom_sheet_releases_tags.xml
@@ -69,7 +69,7 @@
                     android:text="@string/tags"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
-                    app:drawableTopCompat="@drawable/ic_label"
+                    app:drawableTopCompat="@drawable/ic_tag"
                     app:layout_alignSelf="flex_start"/>
 
             </com.google.android.flexbox.FlexboxLayout>
diff --git a/app/src/main/res/layout/bottom_sheet_repo.xml b/app/src/main/res/layout/bottom_sheet_repo.xml
index 2fdd780b..387f565d 100644
--- a/app/src/main/res/layout/bottom_sheet_repo.xml
+++ b/app/src/main/res/layout/bottom_sheet_repo.xml
@@ -82,7 +82,7 @@
                     android:text="@string/label"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
-                    app:drawableTopCompat="@drawable/ic_label"
+                    app:drawableTopCompat="@drawable/ic_tag"
                     app:layout_alignSelf="flex_start"/>
 
                 <TextView
diff --git a/app/src/main/res/layout/bottom_sheet_single_issue.xml b/app/src/main/res/layout/bottom_sheet_single_issue.xml
index d38412f3..a9280e45 100644
--- a/app/src/main/res/layout/bottom_sheet_single_issue.xml
+++ b/app/src/main/res/layout/bottom_sheet_single_issue.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
@@ -23,7 +22,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginBottom="5dp"
-                android:orientation="horizontal"/>
+                android:orientation="horizontal" />
 
             <View
                 android:id="@+id/reactionDivider"
@@ -31,7 +30,7 @@
                 android:layout_height="4dp"
                 android:layout_marginTop="12dp"
                 android:layout_marginBottom="16dp"
-                android:background="?attr/dividerColor"/>
+                android:background="?attr/dividerColor" />
 
             <LinearLayout
                 android:id="@+id/bottomSheetHeaderFrame"
@@ -47,7 +46,7 @@
                     android:gravity="center"
                     android:text="@string/issue"
                     android:textColor="?attr/primaryTextColor"
-                    android:textSize="16sp"/>
+                    android:textSize="16sp" />
 
             </LinearLayout>
 
@@ -73,7 +72,7 @@
                     android:textSize="16sp"
                     android:visibility="gone"
                     app:drawableTopCompat="@drawable/ic_file"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/mergePullRequest"
@@ -87,7 +86,7 @@
                     android:textSize="16sp"
                     android:visibility="gone"
                     app:drawableTopCompat="@drawable/ic_pull_request"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/updatePullRequest"
@@ -100,8 +99,8 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     android:visibility="gone"
-                    app:drawableTopCompat="@drawable/ic_update"
-                    app:layout_alignSelf="flex_start"/>
+                    app:drawableTopCompat="@drawable/ic_refresh"
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/deletePrHeadBranch"
@@ -114,7 +113,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_branch"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/editIssue"
@@ -127,7 +126,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_edit"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/addRemoveAssignees"
@@ -140,7 +139,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_person_add"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/editLabels"
@@ -152,8 +151,8 @@
                     android:text="@string/newIssueLabelsTitle"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
-                    app:drawableTopCompat="@drawable/ic_label"
-                    app:layout_alignSelf="flex_start"/>
+                    app:drawableTopCompat="@drawable/ic_tag"
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/subscribeIssue"
@@ -166,7 +165,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_unwatch"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/unsubscribeIssue"
@@ -180,7 +179,7 @@
                     android:textSize="16sp"
                     android:visibility="gone"
                     app:drawableTopCompat="@drawable/ic_watchers"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/closeIssue"
@@ -193,7 +192,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_issue_closed"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
             </com.google.android.flexbox.FlexboxLayout>
 
@@ -202,7 +201,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="4dp"
                 android:layout_marginBottom="16dp"
-                android:background="?attr/dividerColor"/>
+                android:background="?attr/dividerColor" />
 
             <com.google.android.flexbox.FlexboxLayout
                 android:id="@+id/issuePrShareSection"
@@ -225,7 +224,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_copy"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/shareIssue"
@@ -238,7 +237,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_share"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
                 <TextView
                     android:id="@+id/open"
@@ -251,7 +250,7 @@
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="16sp"
                     app:drawableTopCompat="@drawable/ic_browser"
-                    app:layout_alignSelf="flex_start"/>
+                    app:layout_alignSelf="flex_start" />
 
             </com.google.android.flexbox.FlexboxLayout>
 
diff --git a/app/src/main/res/layout/fragment_commit_details.xml b/app/src/main/res/layout/fragment_commit_details.xml
index 471581d8..6ceea373 100644
--- a/app/src/main/res/layout/fragment_commit_details.xml
+++ b/app/src/main/res/layout/fragment_commit_details.xml
@@ -117,21 +117,42 @@
                             android:orientation="horizontal"
                             tools:ignore="UseCompoundDrawables">
 
-                            <ImageView
-                                android:id="@+id/commitAuthorAvatar"
+                            <com.google.android.material.card.MaterialCardView
+                                android:id="@+id/commitAuthorAvatarFrame"
                                 android:layout_width="@dimen/dimen24dp"
                                 android:layout_height="@dimen/dimen24dp"
-                                android:layout_marginEnd="5dp"
-                                android:contentDescription="@string/generalImgContentText"
-                                tools:srcCompat="@tools:sample/avatars"/>
+                                style="?attr/materialCardViewFilledStyle"
+                                app:cardElevation="@dimen/dimen0dp"
+                                android:layout_marginEnd="@dimen/dimen6dp"
+                                app:cardCornerRadius="@dimen/dimen12dp">
 
-                            <ImageView
-                                android:id="@+id/commitCommitterAvatar"
+                                <ImageView
+                                    android:id="@+id/commitAuthorAvatar"
+                                    android:layout_width="match_parent"
+                                    android:layout_height="match_parent"
+                                    android:contentDescription="@string/generalImgContentText"
+                                    tools:srcCompat="@tools:sample/avatars" />
+
+                            </com.google.android.material.card.MaterialCardView>
+
+                            <com.google.android.material.card.MaterialCardView
+                                android:id="@+id/commitCommitterAvatarFrame"
                                 android:layout_width="@dimen/dimen24dp"
                                 android:layout_height="@dimen/dimen24dp"
-                                android:layout_marginEnd="5dp"
-                                android:contentDescription="@string/generalImgContentText"
-                                tools:srcCompat="@tools:sample/avatars"/>
+                                style="?attr/materialCardViewFilledStyle"
+                                app:cardElevation="@dimen/dimen0dp"
+                                android:layout_marginEnd="@dimen/dimen6dp"
+                                app:cardCornerRadius="@dimen/dimen12dp">
+
+                                <ImageView
+                                    android:id="@+id/commitCommitterAvatar"
+                                    android:layout_width="@dimen/dimen24dp"
+                                    android:layout_height="@dimen/dimen24dp"
+                                    android:layout_marginEnd="5dp"
+                                    android:contentDescription="@string/generalImgContentText"
+                                    tools:srcCompat="@tools:sample/avatars"/>
+
+                            </com.google.android.material.card.MaterialCardView>
 
                             <TextView
                                 android:id="@+id/commitAuthorAndCommitter"
diff --git a/app/src/main/res/layout/list_commits.xml b/app/src/main/res/layout/list_commits.xml
index 8b37e041..9ea72a9d 100644
--- a/app/src/main/res/layout/list_commits.xml
+++ b/app/src/main/res/layout/list_commits.xml
@@ -48,6 +48,7 @@
                     tools:ignore="UseCompoundDrawables">
 
                     <com.google.android.material.card.MaterialCardView
+                        android:id="@+id/commitAuthorAvatarFrame"
                         android:layout_width="@dimen/dimen24dp"
                         android:layout_height="@dimen/dimen24dp"
                         style="?attr/materialCardViewFilledStyle"
@@ -60,17 +61,28 @@
                             android:layout_width="match_parent"
                             android:layout_height="match_parent"
                             android:contentDescription="@string/generalImgContentText"
-                            tools:srcCompat="@tools:sample/avatars"/>
+                            tools:srcCompat="@tools:sample/avatars" />
 
                     </com.google.android.material.card.MaterialCardView>
 
-                    <ImageView
-                        android:id="@+id/commitCommitterAvatar"
+                    <com.google.android.material.card.MaterialCardView
+                        android:id="@+id/commitCommitterAvatarFrame"
                         android:layout_width="@dimen/dimen24dp"
                         android:layout_height="@dimen/dimen24dp"
-                        android:layout_marginEnd="5dp"
-                        android:contentDescription="@string/generalImgContentText"
-                        tools:srcCompat="@tools:sample/avatars"/>
+                        style="?attr/materialCardViewFilledStyle"
+                        app:cardElevation="@dimen/dimen0dp"
+                        android:layout_marginEnd="@dimen/dimen6dp"
+                        app:cardCornerRadius="@dimen/dimen12dp">
+
+                        <ImageView
+                            android:id="@+id/commitCommitterAvatar"
+                            android:layout_width="@dimen/dimen24dp"
+                            android:layout_height="@dimen/dimen24dp"
+                            android:layout_marginEnd="5dp"
+                            android:contentDescription="@string/generalImgContentText"
+                            tools:srcCompat="@tools:sample/avatars" />
+
+                    </com.google.android.material.card.MaterialCardView>
 
                     <TextView
                         android:id="@+id/commitAuthorAndCommitter"
diff --git a/app/src/main/res/layout/list_diff_files.xml b/app/src/main/res/layout/list_diff_files.xml
index 828f21b4..cb77cc3b 100644
--- a/app/src/main/res/layout/list_diff_files.xml
+++ b/app/src/main/res/layout/list_diff_files.xml
@@ -27,6 +27,7 @@
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
                 android:contentDescription="@string/generalImgContentText"
                 app:srcCompat="@drawable/ic_diff"/>
 
@@ -61,8 +62,9 @@
             <ImageView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                app:srcCompat="@drawable/ic_chevron_right"
-                android:contentDescription="@string/generalImgContentText"/>
+                android:layout_gravity="center_vertical"
+                android:contentDescription="@string/generalImgContentText"
+                app:srcCompat="@drawable/ic_chevron_right" />
 
         </LinearLayout>
 
diff --git a/app/src/main/res/layout/list_issue_comments.xml b/app/src/main/res/layout/list_issue_comments.xml
index 4d5333f8..03e88d7e 100644
--- a/app/src/main/res/layout/list_issue_comments.xml
+++ b/app/src/main/res/layout/list_issue_comments.xml
@@ -4,23 +4,39 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:orientation="vertical"
-    android:paddingTop="@dimen/dimen4dp"
-    android:paddingBottom="@dimen/dimen4dp">
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:id="@+id/timeline_divider_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingStart="@dimen/dimen12dp"
+        android:paddingEnd="@dimen/dimen0dp"
+        android:orientation="vertical">
+
+        <FrameLayout
+            android:id="@+id/timeline_line"
+            android:layout_width="@dimen/dimen2dp"
+            android:layout_height="wrap_content"
+            android:padding="@dimen/dimen8dp"
+            android:background="?attr/colorPrimary" />
+
+    </LinearLayout>
 
     <com.google.android.material.card.MaterialCardView
+        android:id="@+id/comment_view"
+        style="?attr/materialCardViewFilledStyle"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        style="?attr/materialCardViewFilledStyle"
         app:cardElevation="@dimen/dimen0dp">
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:foreground="?android:attr/selectableItemBackground"
             android:background="?attr/materialCardBackgroundColor"
-            android:padding="@dimen/dimen12dp"
-            android:orientation="vertical">
+            android:foreground="?android:attr/selectableItemBackground"
+            android:orientation="vertical"
+            android:padding="@dimen/dimen12dp">
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -29,11 +45,11 @@
                 android:orientation="horizontal">
 
                 <com.google.android.material.card.MaterialCardView
+                    style="?attr/materialCardViewFilledStyle"
                     android:layout_width="@dimen/dimen24dp"
                     android:layout_height="@dimen/dimen24dp"
-                    style="?attr/materialCardViewFilledStyle"
-                    app:cardElevation="@dimen/dimen0dp"
-                    app:cardCornerRadius="@dimen/dimen12dp">
+                    app:cardCornerRadius="@dimen/dimen12dp"
+                    app:cardElevation="@dimen/dimen0dp">
 
                     <ImageView
                         android:id="@+id/avatar"
@@ -41,7 +57,7 @@
                         android:layout_height="match_parent"
                         android:layout_weight="0"
                         android:contentDescription="@string/generalImgContentText"
-                        tools:srcCompat="@tools:sample/avatars"/>
+                        tools:srcCompat="@tools:sample/avatars" />
 
                 </com.google.android.material.card.MaterialCardView>
 
@@ -62,7 +78,7 @@
                         android:singleLine="true"
                         android:textColor="?attr/primaryTextColor"
                         android:textSize="14sp"
-                        android:textStyle="bold"/>
+                        android:textStyle="bold" />
 
                     <TextView
                         android:id="@+id/information"
@@ -71,7 +87,7 @@
                         android:ellipsize="end"
                         android:singleLine="true"
                         android:textColor="?attr/hintColor"
-                        android:textSize="12sp"/>
+                        android:textSize="12sp" />
                 </LinearLayout>
 
                 <ImageView
@@ -80,9 +96,9 @@
                     android:layout_height="wrap_content"
                     android:layout_gravity="top"
                     android:layout_weight="0"
-                    android:contentDescription="@string/menuContentDesc"
                     android:background="?android:attr/selectableItemBackgroundBorderless"
-                    app:srcCompat="@drawable/ic_dotted_menu_horizontal"/>
+                    android:contentDescription="@string/menuContentDesc"
+                    app:srcCompat="@drawable/ic_dotted_menu_horizontal" />
 
             </LinearLayout>
 
@@ -91,22 +107,85 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="12dp"
-                android:textColor="?attr/primaryTextColor"
-                android:textIsSelectable="true"
                 android:autoLink="web"
+                android:textColor="?attr/primaryTextColor"
                 android:textColorLink="@color/lightBlue"
-                android:textSize="14sp"/>
+                android:textIsSelectable="true"
+                android:textSize="14sp" />
 
             <LinearLayout
                 android:id="@+id/commentReactionBadges"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:visibility="gone"
                 android:layout_marginTop="16dp"
-                android:orientation="horizontal"/>
+                android:orientation="horizontal"
+                android:visibility="gone" />
 
         </LinearLayout>
 
     </com.google.android.material.card.MaterialCardView>
 
+    <RelativeLayout
+        android:id="@+id/timeline_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+
+        <LinearLayout
+            android:id="@+id/timeline_divider_view_2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:paddingStart="@dimen/dimen12dp"
+            android:paddingEnd="@dimen/dimen0dp"
+            android:orientation="horizontal">
+
+            <FrameLayout
+                android:id="@+id/timeline_line_2"
+                android:layout_width="@dimen/dimen2dp"
+                android:layout_height="match_parent"
+                android:background="?attr/colorPrimary" />
+
+            <LinearLayout
+                android:id="@+id/timeline_data"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:paddingStart="@dimen/dimen16dp"
+                android:paddingEnd="@dimen/dimen0dp"
+                android:layout_marginStart="@dimen/dimen6dp"
+                android:layout_marginEnd="@dimen/dimen4dp"
+                android:orientation="horizontal" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:orientation="vertical">
+
+            <com.google.android.material.card.MaterialCardView
+                style="?attr/materialCardViewFilledStyle"
+                android:layout_width="@dimen/dimen28dp"
+                android:layout_height="@dimen/dimen28dp"
+                android:layout_gravity="center_vertical"
+                android:backgroundTint="?attr/materialCardBackgroundColor"
+                app:cardCornerRadius="@dimen/dimen6dp"
+                app:cardElevation="@dimen/dimen0dp">
+
+                <ImageView
+                    android:id="@+id/timeline_icon"
+                    android:layout_width="@dimen/dimen16dp"
+                    android:layout_height="@dimen/dimen16dp"
+                    android:layout_gravity="center"
+                    android:contentDescription="@string/generalImgContentText"
+                    android:src="@drawable/ic_history"
+                    tools:srcCompat="@drawable/ic_history" />
+
+            </com.google.android.material.card.MaterialCardView>
+
+        </LinearLayout>
+
+    </RelativeLayout>
+
 </LinearLayout>
diff --git a/app/src/main/res/layout/list_issues.xml b/app/src/main/res/layout/list_issues.xml
index c4d64de9..1457f691 100644
--- a/app/src/main/res/layout/list_issues.xml
+++ b/app/src/main/res/layout/list_issues.xml
@@ -61,25 +61,25 @@
                         android:text="@string/newIssueTitle"
                         android:textAlignment="gravity"
                         android:textColor="?attr/primaryTextColor"
-                        android:textSize="16sp"
-                        tools:text="Id illum odio repellat omnis fuga deserunt aut. Ut est aut similique qui incidunt quia et."/>
+                        android:textSize="@dimen/dimen16sp"
+                        tools:text="Id illum odio repellat omnis fuga deserunt aut. Ut est aut similique qui incidunt quia et." />
 
                     <HorizontalScrollView
                         android:id="@+id/labelsScrollViewDots"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dimen8dp"
+                        android:fillViewport="true"
                         android:foregroundGravity="right"
-                        android:layout_marginBottom="8dp"
                         android:scrollbarThumbHorizontal="@android:color/transparent"
-                        android:visibility="gone"
-                        android:fillViewport="true">
+                        android:visibility="gone">
 
                         <LinearLayout
                             android:id="@+id/frameLabelsDots"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:orientation="horizontal"
-                            android:layout_marginTop="10dp"/>
+                            android:layout_marginTop="@dimen/dimen10dp"
+                            android:orientation="horizontal" />
 
                     </HorizontalScrollView>
 
@@ -91,18 +91,18 @@
                 android:id="@+id/labelsScrollViewWithText"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
+                android:layout_marginBottom="@dimen/dimen8dp"
+                android:fillViewport="true"
                 android:foregroundGravity="right"
-                android:layout_marginBottom="8dp"
                 android:scrollbarThumbHorizontal="@android:color/transparent"
-                android:visibility="gone"
-                android:fillViewport="true">
+                android:visibility="gone">
 
                 <LinearLayout
                     android:id="@+id/frameLabels"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal"
-                    android:layout_marginTop="10dp"/>
+                    android:layout_marginTop="@dimen/dimen10dp"
+                    android:orientation="horizontal" />
 
             </HorizontalScrollView>
 
@@ -119,31 +119,32 @@
                     android:layout_height="wrap_content"
                     android:gravity="start"
                     android:textColor="?attr/hintColor"
-                    android:textSize="12sp"
-                    tools:text="10.01.2020"/>
+                    android:textSize="@dimen/dimen12sp"
+                    tools:text="10.01.2020" />
 
                 <LinearLayout
                     android:id="@+id/frameCommentsCount"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="end"
-                    android:layout_marginStart="10dp"
-                    android:layout_marginEnd="6dp"
+                    android:layout_marginStart="@dimen/dimen10dp"
+                    android:layout_marginEnd="@dimen/dimen6dp"
                     android:layout_weight="1"
                     android:gravity="end"
                     android:orientation="horizontal"
-                    android:paddingLeft="5dp"
-                    android:paddingRight="5dp"
+                    android:paddingLeft="@dimen/dimen4dp"
+                    android:paddingRight="@dimen/dimen4dp"
                     tools:ignore="UseCompoundDrawables">
 
                     <ImageView
-                        android:layout_width="18dp"
-                        android:layout_height="18dp"
-                        android:layout_marginStart="3dp"
-                        android:layout_marginEnd="5dp"
+                        android:id="@+id/comment_icon"
+                        android:layout_width="@dimen/dimen16dp"
+                        android:layout_height="@dimen/dimen16dp"
+                        android:layout_marginStart="@dimen/dimen2dp"
+                        android:layout_marginEnd="@dimen/dimen4dp"
                         android:contentDescription="@string/generalImgContentText"
                         app:srcCompat="@drawable/ic_comment"
-                        app:tint="?attr/iconsColor"/>
+                        app:tint="?attr/iconsColor" />
 
                     <TextView
                         android:id="@+id/issueCommentsCount"
@@ -152,8 +153,8 @@
                         android:gravity="center_vertical"
                         android:text="@string/repoStars"
                         android:textColor="?attr/primaryTextColor"
-                        android:textSize="14sp"
-                        tools:text="50"/>
+                        android:textSize="@dimen/dimen14sp"
+                        tools:text="50" />
 
                 </LinearLayout>
 
diff --git a/app/src/main/res/layout/list_labels.xml b/app/src/main/res/layout/list_labels.xml
index c54ddfff..45da86b7 100644
--- a/app/src/main/res/layout/list_labels.xml
+++ b/app/src/main/res/layout/list_labels.xml
@@ -50,7 +50,7 @@
                         android:layout_weight="0"
                         android:contentDescription="@string/generalImgContentText"
                         app:tint="@color/colorWhite"
-                        app:srcCompat="@drawable/ic_label"/>
+                        app:srcCompat="@drawable/ic_tag"/>
 
                     <TextView
                         android:id="@+id/labelName"
diff --git a/app/src/main/res/layout/list_most_visited_repos.xml b/app/src/main/res/layout/list_most_visited_repos.xml
index c115c966..705bf547 100644
--- a/app/src/main/res/layout/list_most_visited_repos.xml
+++ b/app/src/main/res/layout/list_most_visited_repos.xml
@@ -9,18 +9,18 @@
     android:paddingBottom="@dimen/dimen4dp">
 
     <com.google.android.material.card.MaterialCardView
+        style="?attr/materialCardViewFilledStyle"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        style="?attr/materialCardViewFilledStyle"
         app:cardElevation="@dimen/dimen0dp">
 
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:foreground="?android:attr/selectableItemBackground"
             android:background="?attr/materialCardBackgroundColor"
-            android:padding="@dimen/dimen12dp"
-            android:orientation="vertical">
+            android:foreground="?android:attr/selectableItemBackground"
+            android:orientation="vertical"
+            android:padding="@dimen/dimen12dp">
 
             <LinearLayout
                 android:id="@+id/org_info_frame"
@@ -38,7 +38,7 @@
                     android:layout_marginStart="@dimen/dimen0dp"
                     android:layout_marginEnd="@dimen/dimen10dp"
                     android:contentDescription="@string/repoContentAvatar"
-                    android:src="@drawable/ic_android"/>
+                    android:src="@drawable/ic_android" />
 
                 <TextView
                     android:id="@+id/org_name"
@@ -46,7 +46,7 @@
                     android:layout_height="wrap_content"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="@dimen/dimen14sp"
-                    tools:text="@string/orgName"/>
+                    tools:text="@string/orgName" />
 
             </LinearLayout>
 
@@ -57,13 +57,13 @@
                 android:text="@string/repoName"
                 android:textColor="?attr/primaryTextColor"
                 android:textSize="@dimen/dimen16sp"
-                android:textStyle="bold"/>
+                android:textStyle="bold" />
 
             <View
                 android:id="@+id/spacer_view"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:layout_marginBottom="@dimen/dimen8dp"/>
+                android:layout_marginBottom="@dimen/dimen8dp" />
 
             <LinearLayout
                 android:id="@+id/repo_info_frame"
@@ -78,7 +78,7 @@
                     android:layout_marginEnd="@dimen/dimen6dp"
                     android:contentDescription="@string/generalImgContentText"
                     app:srcCompat="@drawable/ic_trending"
-                    app:tint="?attr/iconsColor"/>
+                    app:tint="?attr/iconsColor" />
 
                 <TextView
                     android:id="@+id/most_visited"
@@ -87,7 +87,7 @@
                     android:gravity="center_vertical"
                     android:textColor="?attr/primaryTextColor"
                     android:textSize="@dimen/dimen14sp"
-                    tools:text="@string/repoStars"/>
+                    tools:text="@string/repoStars" />
 
                 <LinearLayout
                     android:id="@+id/repo_info_end_frame"
@@ -106,8 +106,8 @@
                         android:layout_marginStart="@dimen/dimen16dp"
                         android:layout_marginEnd="@dimen/dimen2dp"
                         android:contentDescription="@string/generalImgContentText"
-                        app:srcCompat="@drawable/ic_reset"
-                        app:tint="?attr/iconsColor"/>
+                        app:srcCompat="@drawable/ic_delete"
+                        app:tint="?attr/iconsColor" />
 
                 </LinearLayout>
 
diff --git a/app/src/main/res/layout/list_pr.xml b/app/src/main/res/layout/list_pr.xml
index 69029f8e..b496c495 100644
--- a/app/src/main/res/layout/list_pr.xml
+++ b/app/src/main/res/layout/list_pr.xml
@@ -44,7 +44,7 @@
                         android:layout_width="match_parent"
                         android:layout_height="match_parent"
                         android:contentDescription="@string/generalImgContentText"
-                        android:src="@drawable/ic_android"/>
+                        android:src="@drawable/ic_android" />
 
                 </com.google.android.material.card.MaterialCardView>
 
@@ -62,23 +62,23 @@
                         android:textAlignment="gravity"
                         android:text="@string/newIssueTitle"
                         android:textColor="?attr/primaryTextColor"
-                        android:textSize="16sp"/>
+                        android:textSize="@dimen/dimen16sp" />
 
                     <HorizontalScrollView
                         android:id="@+id/labelsScrollViewDots"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
+                        android:layout_marginBottom="@dimen/dimen8dp"
+                        android:fillViewport="true"
                         android:foregroundGravity="right"
-                        android:layout_marginBottom="8dp"
-                        android:scrollbarThumbHorizontal="@android:color/transparent"
-                        android:fillViewport="true">
+                        android:scrollbarThumbHorizontal="@android:color/transparent">
 
                         <LinearLayout
                             android:id="@+id/frameLabelsDots"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
-                            android:orientation="horizontal"
-                            android:layout_marginTop="10dp"/>
+                            android:layout_marginTop="@dimen/dimen10dp"
+                            android:orientation="horizontal" />
 
                     </HorizontalScrollView>
 
@@ -90,18 +90,18 @@
                 android:id="@+id/labelsScrollViewWithText"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:layout_marginBottom="@dimen/dimen8dp"
+                android:fillViewport="true"
                 android:foregroundGravity="right"
-                android:layout_marginBottom="8dp"
                 android:scrollbarThumbHorizontal="@android:color/transparent"
-                android:visibility="gone"
-                android:fillViewport="true">
+                android:visibility="gone">
 
                 <LinearLayout
                     android:id="@+id/frameLabels"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:orientation="horizontal"
-                    android:layout_marginTop="10dp"/>
+                    android:layout_marginTop="@dimen/dimen10dp"
+                    android:orientation="horizontal" />
 
             </HorizontalScrollView>
 
@@ -118,27 +118,28 @@
                     android:layout_height="wrap_content"
                     android:gravity="start"
                     android:textColor="?attr/hintColor"
-                    android:textSize="12sp"/>
+                    android:textSize="@dimen/dimen12sp" />
 
                 <LinearLayout
                     android:id="@+id/frameCommentsCount"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_gravity="end"
-                    android:layout_marginStart="10dp"
-                    android:layout_marginEnd="6dp"
+                    android:layout_marginStart="@dimen/dimen10dp"
+                    android:layout_marginEnd="@dimen/dimen6dp"
                     android:layout_weight="1"
                     android:gravity="end"
                     android:orientation="horizontal"
-                    android:paddingLeft="5dp"
-                    android:paddingRight="5dp"
+                    android:paddingLeft="@dimen/dimen4dp"
+                    android:paddingRight="@dimen/dimen4dp"
                     tools:ignore="UseCompoundDrawables">
 
                     <ImageView
-                        android:layout_width="18dp"
-                        android:layout_height="18dp"
-                        android:layout_marginStart="3dp"
-                        android:layout_marginEnd="5dp"
+                        android:id="@+id/comment_icon"
+                        android:layout_width="@dimen/dimen16dp"
+                        android:layout_height="@dimen/dimen16dp"
+                        android:layout_marginStart="@dimen/dimen2dp"
+                        android:layout_marginEnd="@dimen/dimen4dp"
                         android:contentDescription="@string/generalImgContentText"
                         app:srcCompat="@drawable/ic_comment"
                         app:tint="?attr/iconsColor"/>
@@ -150,7 +151,7 @@
                         android:gravity="center_vertical"
                         android:text="@string/repoStars"
                         android:textColor="?attr/primaryTextColor"
-                        android:textSize="14sp"/>
+                        android:textSize="@dimen/dimen14sp" />
 
                 </LinearLayout>
 
diff --git a/app/src/main/res/layout/list_releases.xml b/app/src/main/res/layout/list_releases.xml
index b290e847..47d763ab 100644
--- a/app/src/main/res/layout/list_releases.xml
+++ b/app/src/main/res/layout/list_releases.xml
@@ -130,7 +130,7 @@
                                 android:layout_width="@dimen/dimen18dp"
                                 android:layout_height="wrap_content"
                                 android:contentDescription="@string/generalImgContentText"
-                                app:srcCompat="@drawable/ic_label" />
+                                app:srcCompat="@drawable/ic_tag" />
 
                             <TextView
                                 android:id="@+id/releaseTag"
diff --git a/app/src/main/res/menu/reset_menu.xml b/app/src/main/res/menu/reset_menu.xml
index 0b676b25..c7b7fde4 100644
--- a/app/src/main/res/menu/reset_menu.xml
+++ b/app/src/main/res/menu/reset_menu.xml
@@ -4,9 +4,9 @@
 
     <item
         android:id="@+id/reset_menu_item"
-        android:icon="@drawable/ic_reset"
-        android:title="@string/menuContentDesc"
+        android:icon="@drawable/ic_delete"
         android:orderInCategory="1"
-        app:showAsAction="ifRoom"/>
+        android:title="@string/menuContentDesc"
+        app:showAsAction="ifRoom" />
 
 </menu>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f5790f9f..5e406f98 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -790,4 +790,45 @@
     <string name="sourcePosition" translatable="false">%1$d:%2$d</string>
     <string name="codeEditor" translatable="false">Code Editor</string>
     <string name="openInCodeEditor">Open in Code Editor</string>
+
+    <!-- timeline -->
+    <string name="timelineAddedLabelStart">%s added the\u0020</string>
+    <string name="timelineRemovedLabelStart">%s removed the\u0020</string>
+    <string name="timelineLabelEnd">\u0020label %s</string>
+    <string name="timelineAddedCommit">%s added\u0020</string>
+    <string name="timelineAssigneesRemoved">%s removed their assignment %s</string>
+    <string name="timelineAssigneesUnassigned">%s was unassigned by %s %s</string>
+    <string name="timelineAssigneesSelfAssigned">%s self-assigned this %s</string>
+    <string name="timelineAssigneesAssigned">%s was assigned by %s %s</string>
+    <string name="timelineMilestoneAdded">%s added this to the %s milestone %s</string>
+    <string name="timelineMilestoneRemoved">%s removed this from the %s milestone %s</string>
+    <string name="timelineStatusClosedIssue">%s closed this issue %s</string>
+    <string name="timelineStatusReopenedIssue">%s reopened this issue %s</string>
+    <string name="timelineStatusRefIssue">%s referenced this issue from a \u0020</string>
+    <string name="timelineStatusClosedPr">%s closed this pull request %s</string>
+    <string name="timelineStatusMergedPr">%s merged this pull request %s</string>
+    <string name="timelineStatusRefPr">%s referenced this pull request from a\u0020</string>
+    <string name="commitText">commit</string>
+    <string name="timelineStatusReopenedPr">%s reopened this pull request %s</string>
+    <string name="timelineReviewRequest">%s requested review from %s %s</string>
+    <string name="timelineChangeTitle">%s changed title from %s to %s %s</string>
+    <string name="timelineLocked">%s locked as %s and limited conversation to collaborators %s</string>
+    <string name="timelineUnlocked">%s unlocked this conversation %s</string>
+    <string name="timelineDependencyAdded">%s added a new dependency #%d %s</string>
+    <string name="timelineDependencyRemoved">%s removed a dependency #%d %s</string>
+    <string name="timelineProjectAdded">%s added this to a project %s</string>
+    <string name="timelineProjectRemoved">%s removed this from a project %s</string>
+    <string name="timelineDueDateAdded">%s added the due date %s %s</string>
+    <string name="timelineDueDateModified">%s modified the due date to %s from %s %s</string>
+    <string name="timelineDueDateRemoved">%s removed the due date %s %s</string>
+    <string name="timelineBranchChanged">%s changed target branch from %s to %s %s</string>
+    <string name="timelineBranchDeleted">%s deleted branch %s %s</string>
+    <string name="timelineTimeTrackingStart">%s started working %s</string>
+    <string name="timelineTimeTrackingStop">%s stopped time tracking %s</string>
+    <string name="timelineTimeTrackingCancel">%s cancelled time tracking %s</string>
+    <string name="timelineTimeTrackingAddManualTime">%s added spent time %s %s</string>
+    <string name="timelineTimeTrackingDeleteManualTime">%s deleted spent time %s %s</string>
+    <string name="timelineChangeIssueRef">%s added reference %s %s</string>
+    <string name="timelineRefIssue">%s referenced this issue in #%d %s</string>
+    <string name="timelineRefPr">%s referenced this pull request in #%d %s</string>
 </resources>