📝 Provide a description of the new feature
Summary
Following the multi-forge support policy, I'd like to propose adding Gerrit Code Review (minimum supported server version: 3.12) as a new supported forge, and volunteer as its designated maintainer.
Gerrit is already listed as "💭 Considering" in the Supported forges table. I use Gerrit daily and have a working ForgeAdapter implementation I'd like to contribute.
Proposed maintainer
@QuentinBtd
Why Gerrit
Gerrit Code Review is a widely used self-hosted code review tool (Android, Chromium, Eclipse, LibreOffice, OpenStack, Wikimedia, and many companies run it internally). It has no built-in "notifications" concept comparable to GitHub/Gitea, which is presumably why it's been sitting in "Considering" — this proposal includes a concrete mapping of Gerrit's own primitives onto Gitify's notification model.
Design summary
- Notification source: Gerrit's Attention Set (
GET /a/changes/?q=attention:self) — the only Gerrit mechanism with genuine per-user, per-change server-side "needs your action" state, and the closest analogue to an unread notification. It's also the mechanism Gerrit's own dashboard ("Your turn") is built on.
- Mark as read: removes the account from the change's attention set (
POST /changes/{id}/attention/self/delete) — a real server call, not a client-side flag.
- Mark as done / unsubscribe / issues: not supported — Gerrit has no distinct "done" state beyond attention-set removal, no per-thread unsubscribe, and no built-in issue tracker. These capabilities are gated off so the UI hides them rather than no-op silently.
- Auth: HTTP Basic (username + HTTP password / authentication token) against the
/a/-prefixed API, which also sidesteps XSRF requirements for writes — same auth shape as the existing Bitbucket adapter.
- Subject type reuse: Gerrit changes map onto the existing
PullRequest subject type and OPEN/MERGED/CLOSED/DRAFT state vocabulary (same precedent as Gitea's Pull → PullRequest mapping), so the shared type/state filters and icon dispatch work with zero changes to shared code outside the adapter.
- Version floor: hard-gated at 3.12 (checked against
GET /config/server/version); older servers are not blocked if the version can't be determined, to avoid false-positive lockouts. 3.12 is not a technical requirement — Gerrit's Attention Set has existed since 3.3 (2020) — it's the oldest version Gerrit itself still actively supports. Per Gerrit's own support policy, "the community actively supports the last 3 releases"; as of writing that's 3.12, 3.13, and 3.14, with 3.11 and earlier already end-of-life. Picking the oldest non-EOL release seemed like the right balance between inclusiveness and not asking users to run something the Gerrit project itself no longer maintains. Happy to revisit this threshold as Gerrit's support window moves forward.
Compliance with the multi-forge policy
- Adapter-based: implemented entirely behind
ForgeAdapter in src/renderer/utils/forges/gerrit/ (types, client, transform, adapter + tests).
- Designated maintainer: proposing myself, @QuentinBtd, for triage/review/CI of this adapter.
- Capability-honest UI: mark-as-done, unsubscribe, and "my issues" are all gated off — the corresponding UI hides rather than no-ops.
- No core-platform churn: no Octokit dependency; uses plain
fetch like Gitea/Bitbucket. Existing Octicons/Primer usage untouched (a small custom brand SVG icon is added for Gerrit, following the same pattern as the existing BitbucketIcon).
Proposed capability matrix
| Notifications |
Mark read |
Mark done |
Unsubscribe |
Enriched details |
| ✅ |
✅ |
— |
— |
— |
Known, disclosed limitation
Because "mark as read" is implemented as a real attention-set removal (rather than a synthesized local flag), a change you've already reviewed — and are therefore no longer in the attention set for — will not resurface in Gitify if someone else later merges or abandons it, even though Gerrit still emails you about it (Gerrit's email notifications follow participation/watch settings, not attention-set membership; see the "Rules" section of Gerrit's own docs). This is a deliberate trade-off to keep every notification's "mark as read" action a real, honest server call rather than inventing client-side read state — happy to discuss alternatives if maintainers feel differently.
Current status
Happy to open the PR for review as soon as maintainers are open to this addition, and to adjust the design based on feedback.
➕ Additional Information
No response
📝 Provide a description of the new feature
Summary
Following the multi-forge support policy, I'd like to propose adding Gerrit Code Review (minimum supported server version: 3.12) as a new supported forge, and volunteer as its designated maintainer.
Gerrit is already listed as "💭 Considering" in the Supported forges table. I use Gerrit daily and have a working
ForgeAdapterimplementation I'd like to contribute.Proposed maintainer
@QuentinBtd
Why Gerrit
Gerrit Code Review is a widely used self-hosted code review tool (Android, Chromium, Eclipse, LibreOffice, OpenStack, Wikimedia, and many companies run it internally). It has no built-in "notifications" concept comparable to GitHub/Gitea, which is presumably why it's been sitting in "Considering" — this proposal includes a concrete mapping of Gerrit's own primitives onto Gitify's notification model.
Design summary
GET /a/changes/?q=attention:self) — the only Gerrit mechanism with genuine per-user, per-change server-side "needs your action" state, and the closest analogue to an unread notification. It's also the mechanism Gerrit's own dashboard ("Your turn") is built on.POST /changes/{id}/attention/self/delete) — a real server call, not a client-side flag./a/-prefixed API, which also sidesteps XSRF requirements for writes — same auth shape as the existing Bitbucket adapter.PullRequestsubject type andOPEN/MERGED/CLOSED/DRAFTstate vocabulary (same precedent as Gitea'sPull→PullRequestmapping), so the shared type/state filters and icon dispatch work with zero changes to shared code outside the adapter.GET /config/server/version); older servers are not blocked if the version can't be determined, to avoid false-positive lockouts. 3.12 is not a technical requirement — Gerrit's Attention Set has existed since 3.3 (2020) — it's the oldest version Gerrit itself still actively supports. Per Gerrit's own support policy, "the community actively supports the last 3 releases"; as of writing that's 3.12, 3.13, and 3.14, with 3.11 and earlier already end-of-life. Picking the oldest non-EOL release seemed like the right balance between inclusiveness and not asking users to run something the Gerrit project itself no longer maintains. Happy to revisit this threshold as Gerrit's support window moves forward.Compliance with the multi-forge policy
ForgeAdapterinsrc/renderer/utils/forges/gerrit/(types, client, transform, adapter + tests).fetchlike Gitea/Bitbucket. Existing Octicons/Primer usage untouched (a small custom brand SVG icon is added for Gerrit, following the same pattern as the existingBitbucketIcon).Proposed capability matrix
Known, disclosed limitation
Because "mark as read" is implemented as a real attention-set removal (rather than a synthesized local flag), a change you've already reviewed — and are therefore no longer in the attention set for — will not resurface in Gitify if someone else later merges or abandons it, even though Gerrit still emails you about it (Gerrit's email notifications follow participation/watch settings, not attention-set membership; see the "Rules" section of Gerrit's own docs). This is a deliberate trade-off to keep every notification's "mark as read" action a real, honest server call rather than inventing client-side read state — happy to discuss alternatives if maintainers feel differently.
Current status
ForgeAdapter(src/renderer/utils/forges/gerrit/)registry.tspnpm checkandpnpm testgreenMAINTAINERS.md/CODEOWNERSentry (pending green light on this proposal)Happy to open the PR for review as soon as maintainers are open to this addition, and to adjust the design based on feedback.
➕ Additional Information
No response