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.
To get started, you'll need to clone the repository and install the dependencies.
pnpm install
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
There are 2 checks:
# 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
The release process is automated. Follow the steps below.
- Verify that all features you want targeted in the release have been merged to
main
. - 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 - Create a branch that starts with
release/vX.X.X
(ie.release/v1.2.3
). - 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 likerelease/vX.X.X
and there is a draft release with the same version number(package.json
). - Merge your release branch into
main
. - Publish the release once you've finalized the release notes and confirmed all assets are there.
- A new homebrew cask will be automatically published (workflow runs ~3 hours)
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.
- Operating-system level features
- Do not disturb, including on schedules. gitify-app#416 (comment)
- Persistent notifications like gitify-app#281. e.g. macOS has Alerts, instead of Banners, which makes them persistent
- 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.