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
To reload the app with the changes that pnpm watch
has detected, you can use the CmdOrCtrl+R
shortcut.
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
. - Check the Renovate Dependency Dashboard to see if there are any updates you want included.
- Create a new draft 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 this branch you need to:
- Run
pnpm version <new-version-number
to bump the version of the app . - 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
).
- Merge your release branch into
main
. - Publish the release once you've finalized the release notes and confirmed all assets are there.
- Edit current Milestone to have:
- description: link to the release notes
- due date: date of release
- close milestone
- Create a New Milestone for upcoming release.
- A new homebrew cask will be automatically published (workflow runs ~3 hours)
- Use sentence case where possible
- Use GitHub's Octicons for iconography
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. #416 (comment)
- Persistent notifications like #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. #358, #411 and #979
- UI for something that isn't core to Gitify, and/or can be trivially done another way. e.g. #476 and #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.