Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge main into release for v1.0.0 #213

Merged
merged 52 commits into from
Oct 6, 2023
Merged

Merge main into release for v1.0.0 #213

merged 52 commits into from
Oct 6, 2023

Conversation

cheehongw
Copy link
Contributor

No description provided.

cheehongw and others added 30 commits March 6, 2023 13:56
Remove label-filter-bar as module export

Let's remove label-filter-bar as an module as it is not a standalone 
module but a component under the issues-viewer module.
* Remove label-filter-bar as module export

* Update version number
Let's update the octicon and its colour for the closed PR
Upgrade to Angular version 9.1

Currently, our version of Angular is no longer supported, and has missing Typescript
features such as optional chaining.

Let's upgrade Angular to a LTS version, one major version at a time.

---------

Co-authored-by: Kang Su Min <[email protected]>
Improve UIX for milestones and label-filter-bar

Let's update the UIX for milestone and label filter bar:

- the Label Filter Bar has been updated with its background colour
and font-weight
- the issues/PRs without milestones have been added a default
milestone for filter purpose
- the default milestone values for the filter have been updated
to avoid confusion
- the milestones displayed in the filter bar will be sorted
automatically to aid searching by users
Currently, issue and PR html components are rendered within the cardview component. 
This creates the difficulty in the future when new features are to be added to issues and PRs.

Let's
- Separate out the issues and PR as a separate component
- Replace the old tag with the new tags
Inefficient nesting of subscribers in IssueDataTable has introduced 
unnecessary and very expensive computes to WATcher.

Let's 
- Improve WATcher's efficiency by removing the nesting of subscribers in IssueDataTable.ts
Add better error messages for invalid repo inputs.

Long and unreadable errors are produced when invalid repos are provided
in auth. This makes the app difficult to use and unintuitive. Catching and
validating these errors will help us create a better experience for the user.

Let's
* Add more validation in `Repo` to ensure given repos are indeed valid
* Add clearer logging to `GithubService` for better debugging.
* Change behaviour of PhaseService to validate org and repoName from
localStorage
* Edit components that request for repo-based information to validate
repos before requesting
* Change `LabelFilterBarComponent` to complete loading regardless of
errors received
Let's upgrade Angular version to v10.2 and use Node v14 instead of v12.
Reset the `IssuesDataTable` before fetching and repopulating Issues.
Add an additional CardViewComponent that displays unassigned Issues.
Refactor and remove uses of Electron from WATcher

There are many uses of Electron in WATcher, even with the CATcher
Electron app being deprecated. As such, there are many instances
of unused code, which is bad practice.

Removing instances of uses of Electron allows us to trim the codebase
and remove dead code.

Let's 
* Refactor and remove uses of Electron from WATcher
* Remove all uses of Electron in the `src` folder.
* Remove uses of Electron from `package.json` and other files
* Delete folders such as `electron-utils` and files such as `postinstall`
that are used to initialise electron
* Remove and amend scripts in `package.json` that are involved in
building the electron app
* Edit `deployment-actions.yml` to remove pre-build actions from
CD workflow
Add horizontal scroll to Issues Viewer

Originally, if screen width was decreased or if a team had more
than 4-5 members, there would be `CardViewComponents` beyond
the page. This leads to a dampened UX.

Let's add horizontal scrolling for `IssuesViewerComponent`.
Profile page requires reusing code from filter-related components. 
To avoid too much code duplication, let's modularise the filter bar 
and abstract out important aspects of filter-related components

- Modularizes Filter bar into its own components
- Moves labelfilterbar to a component within the abstracted out filterbar
- Abstract out dropdownfilter into its own class
- Abstract out interfaces for filterableSource and filterableComponents for better code quality
- Further abstract out filter functionalities to reduce code duplication
Fixed - Sorts issues by updated_at attribute

In the issue dashboard, when a user tries to sort the issues/PRs by date
updated, the sequence of cards remain the same as the previous order
(sorted by ID), even though some of the issues that have a smaller ID
have been more recently updated.

The value used to sort the issues or PRs is incorrect. Let's sort them by
using the updated_at attribute in Issue.
Let's bump some of our libraries to a more updated version to resolve 
missing peer dependencies.
Issues stored in issue service are being reset each time initialize is
called in IssuesViewerComponent. This is undesirable as this method
can be called when users manually press back on the browser. 

As the issues cache is being managed via a cache manager, this will
create a scenario where the cache manager claims that there are no
changes to the repo but the cache has already been cleared. This causes
issues to be cleared and no new issues are being loaded from the GitHub
Server.

Let's resolve this by moving the reset to be called when repo change
event occurs instead.
Previously, when there are no milestones in a repo, there is still a 
`Milestone.DefaultMilestone` instance in WATcher, with the string 
representation of `Without a milestone` for issues without a milestone. 
This causes the milestone selector to show `Without a milestone` as the 
trigger text when it is selected.

Let's
* Disable the milestone selector
* Set the display text to `No Milestones`
when there are no milestones in a repository.
Update website title after changing repository

Website title does not change if repository changes after signing in.

Let's update the website title when changing repositories.
Add wrap for username in issues-viewer's card-view

Let's add an overflow-wrap to the card title.
Show loading spinner on switch repository

WATcher freezes before changing to new repository issues.

Let's show a loading spinner upon switching to a new repository.
Enclose PR/issues in scrollable container

User profiles are automatically hidden when scrolling down to read more 
issues, and can no longer be seen without scrolling back up. 

Being able to see user profiles at all times helps with knowing the
author of each PR/issue.

Let's change it so that the user profile mat-card is kept in sight while
scrolling through PR/issues.
Let's add link to WATcher-docs in Readme.
Let's update the pull request template to provide more details.
Add autofill for repository URL with browser cache

Adding autofill suggestions for repository location would improve the
user experience when accessing WATcher again.

Let's add repository URL autofill suggestions with the browser cache.
As a majority of the WATcher code base is ported over from CATcher,
it includes a lot of unused code. One such area is the code related to 
creating and updating issues on GitHub. Since WATcher is mainly used
to read data from GitHub and not modify data for now. 

Let's remove code that is related to modifying or creating repos
Extract method from header.component

changeRepositoryInPhaseIfValid() is more suited to phase.service than
header.component.

Let's extract the method into phase.service where appropriate.
ngx-markdown is a markdown formatter/parser that was ported over from
CATcher. As WATcher does not use any form of markdown parser, this
package currently does not serve any use in WATcher.

Therefore, let's remove the unused package and the related components.
As WATcher is ported from CATcher, there are a lot of models and methods
that are not used and are unrelated to WATcher.

Let's remove most of the unused code in core/models
Fix hover, click interaction with issue cards

Issue cards are no longer interactable as a result of the scroll shadow
implementation, likely due to specifing the z-index of issue cards.

Let's fix the interactions with issue cards so that users can hover and
click on them by modifying the implementation of scroll shadows.
chia-yh and others added 22 commits July 17, 2023 12:15
Add RepoUrlCacheService to reduce code duplication

Duplicate code for updating suggestions in localStorage and generating
filtered suggestions exist.

Let's reduce code duplication by extracting the code to a separate
class.
Let's fix incorrect type declaration to run ng test without error.
Allow keyboard enter when changing repository

Users are unable to submit input via the enter key, and must click on
the Change Repo button.

Let's change it so users are able to use the keyboard enter when
changing repositories in the Change Repository dialog.
Adds a small button to reset existing filters on issues

Previously, users have to unselect each issue tag individually.

Let's add a small button to reset existing filters.
…l bar (#163)

Change labels filter to dynamic height, fixed width, and shadow scroll

Previous, in a repository without labels, or with few labels, the
container would still be a fixed height of `400px`.

Previously, in a repository with many labels, the container would be
scrollable, but the scroll bar would be hidden.

Let's
* Change `scroll-container`'s `height` to be `max-height`
* Change `scroll-container`'s `width` to be a fixed width of `280px`
* Add shadow scroll bar
Fix elements spilling out of assignee header component when username is too long.

Let's wrap long usernames instead of using a scrollbar.
Fix bug to vary chip size of label in filter-bar with length
Show indication when no labels are found

Previously, when no labels are found, there was no indication.

Let's
* Show an indication when no labels match the input
* Show an indication when the repository has no labels
Allow users to filter their PRs by 'Merged' status.

Previously, merged PRs are only shown when status is selected as 'All'.

Let's allow users to filter their PRs by 'Merged' status.
Previously, the page would show loading spinners, with no content,
until all the data has been loaded.

Let's
* Display the page data once it is loaded.
* Display loading spinners below the content, until all data has been
  loaded.
* Change `Sync` to a spinner while the content is being loaded.
Let's allow users to use WATcher for their private repositories.
Update labels without needing to refresh

Labels are only fetched on initialization, requiring users to refresh
in order for labels to update.

Let's change it so labels are updated periodically, and when the Sync
button is clicked.
Change auth process to login before selecting repo

Users select a repository before login.

WATcher does not fix a single repository, and allows users to change the
selected repository.

Having users login to Github prior to selecting a repository would
facilitate a smoother UX.

Let's allow users to login before choosing a repository.
Remove unused method verifySessionAvailability
Throw error if there are too many pages to fetch

Previously, if a repository with too many pages was opened, the
application would hang or crash. This would not be a pleasant
experience if a user were to accidentally open such a repository.

Let's
* Detect this scenario and handle it elegantly with an error message.
Add a check if newRepo string is different from the currentRepo string

Previously, the phaseService would always be called to change the
repository if the newRepoString is a valid repo.

Let's first check if the newRepoString is different from the currentRepo
before calling the phaseService to changeRepository.
* fix missing graphql-type.ts error

* update .gitignore

* Revert "update .gitignore"

This reverts commit 4488b3d.

* Revert "fix missing graphql-type.ts error"

This reverts commit 5d09336.

* fix oction displayed for draft pr

* remove debugging message

---------

Co-authored-by: Xinyu <[email protected]>
* fix missing graphql-type.ts error

* update .gitignore

* Revert "update .gitignore"

This reverts commit 4488b3d.

* Revert "fix missing graphql-type.ts error"

This reverts commit 5d09336.

* fix deprecated async function call

* fix warning

---------

Co-authored-by: Xinyu <[email protected]>
Change auth process to login before selecting repo

Users select a repository before login.

WATcher does not fix a single repository, and allows users to change the
selected repository.

Having users login to Github prior to selecting a repository would
facilitate a smoother UX.

Let's allow users to login before choosing a repository.
Improve efficiency of saving and deleting issue models

Previously, saving and deleting issues took up to O(n^2).

Let's
* Remove unnecessary loops to achieve O(n).
Enhance error handling for switching to invalid repos

Let's re-open the page to change repos when an invalid one is entered.
@cheehongw cheehongw merged commit cb9cd75 into release Oct 6, 2023
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.