Skip to content

Latest commit

 

History

History
79 lines (55 loc) · 3.79 KB

CONTRIBUTING.md

File metadata and controls

79 lines (55 loc) · 3.79 KB

Gitify Contributing Guide

Hi! We're really excited that you're interested in contributing to Gitify! Before submitting your contribution, please read through the following guide. We also suggest you read the Project Philosophy in our documentation.

Installation

To get started, you'll need to clone the repository and install the dependencies.

pnpm install

Development

Optional: If you prefer to use your own OAuth credentials, you can do so by passing them as environment variables when bundling the app. This is optional as the app has some default "development" keys (use at your own discretion).

OAUTH_CLIENT_ID="123" OAUTH_CLIENT_SECRET="456789" pnpm build

To watch for changes (webpack) in the src directory:

pnpm watch

To run the electron app:

pnpm start

Tests

There are 2 checks:

  1. linter & formatter with biome
  2. unit tests with jest
# Run biome to check linting and formatting
pnpm lint:check

# Run unit tests with coverage
pnpm test

# If you want to pass arguments to jest (or other `pnpm` commands)
# like `--watch`, you can prepend `--` to the command
pnpm test -- --watch

Releases

The release process is automated. Follow the steps below.

  1. Verify that all features you want targeted in the release have been merged to main.
  2. Create a [new draft release][github-new-release]. Set the tag version to something with the format of v1.2.3. Save as a draft before moving to the next step
  3. Create a branch that starts with release/vX.X.X (ie. release/v1.2.3).
  4. In the same branch, bump the version of the app by running pnpm version <new-version-number. Commit these changes and open a PR. A GitHub Actions workflow will build, sign and upload the release assets for each commit to that branch as long as a branch is named like release/vX.X.X and there is a draft release with the same version number(package.json).
  5. Merge your release branch into main.
  6. Publish the release once you've finalized the release notes and confirmed all assets are there.
  7. A new homebrew cask will be automatically published (workflow runs ~3 hours)

Project Philosophy

This project is a tool for monitoring new notifications from Github. It's not meant to be a full-featured Github client. We want to keep it simple and focused on that core functionality. We're happy to accept contributions that help us achieve that goal, but we're also happy to say no to things that don't. We're not trying to be everything to everyone.

Things we won't do

  • Operating-system level features
  • Seeing past notifications. This is a tool for monitoring new notifications, not seeing old ones, which can be seen at https://github.com/notifications.
  • Specific UX/UI changes that add options and/or visual complexity for minor workflow improvements. e.g. gitify-app#358, gitify-app#411 and gitify-app#979
  • UI for something that isn't core to Gitify, and/or can be trivially done another way. e.g. gitify-app#476 and gitify-app#221
  • Support anything other than Github. Doing so would be a major undertaking that we may consider in future, but it would be a ton of work and there's so much tied to Github right now that it's not something I'd want to maintain.