feat: Community tab on the Members page (pitch #3806, scope B) - #3821
Merged
Anty0 merged 3 commits intoJul 24, 2026
Merged
Conversation
Contributor
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Adds a Community tab listing non-member project contributors (avatar, name,
first/last contribution date), email-free and gated behind MEMBERS_VIEW. The
tab bar appears only when the project is public and has at least one
contributor; the Team tab keeps the existing member and invitation lists.
Consumes the existing GET /v2/projects/{projectId}/contributors endpoint.
Includes a Cypress e2e spec and an e2e data controller (extending the shared
ContributorsTestData fixture) covering tab gating, contributor row rendering,
and the no-email constraint.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
force-pushed
the
jirikuchynka/community-contributors-members-tab
branch
from
July 24, 2026 10:40
d4cccc3 to
1f2af8b
Compare
The Members-tab e2e controller drove its test data from the shared ContributorsTestData, which carries soft-deleted and disabled users (it tests their exclusion). cleanTestData deletes users via findActive(), so those users survive cleanup and collide on the next generate — a DataIntegrityViolation that broke every generate/clean cycle in the e2e run. Switch back to a dedicated MembersCommunityE2eData fixture with only active, clean-removable users, and document why it must not be re-consolidated.
cleanTestData looked up users via findActive(), which filters out deletedAt/disabledAt, so fixture-created deleted and disabled users survived teardown and collided on the next generate — a DataIntegrityViolation that broke the e2e generate/clean lifecycle for any fixture containing such users (e.g. ContributorsTestData). Look users up regardless of state (findAnyByUsername) and delete them; delete() soft-deletes and renames the username to 'former', and username uniqueness is a partial index excluding deleted rows, so the original username is freed and 'former' tombstones never collide. With teardown fixed, the Members-tab e2e fixture reuses the shared ContributorsTestData again; the dedicated MembersCommunityE2eData is removed.
Anty0
merged commit Jul 24, 2026
34b9f46
into
jirikuchynka/community-contributors
70 of 74 checks passed
Anty0
added a commit
that referenced
this pull request
Jul 25, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, first/last contribution date), email-free and gated behind
MEMBERS_VIEW; the tab bar appears only when the project is public and has >=1
contributor. Consumes the existing GET /v2/projects/{projectId}/contributors
endpoint. Includes a Cypress e2e spec + e2e data controller, and fixes
cleanTestData to tear down deleted/disabled fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
added a commit
that referenced
this pull request
Jul 25, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, first/last contribution date), email-free and gated behind
MEMBERS_VIEW; the tab bar appears only when the project is public and has >=1
contributor. Consumes the existing GET /v2/projects/{projectId}/contributors
endpoint. Includes a Cypress e2e spec + e2e data controller, and fixes
cleanTestData to tear down deleted/disabled fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
added a commit
that referenced
this pull request
Jul 26, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, first/last contribution date), email-free and gated behind
MEMBERS_VIEW; the tab bar appears only when the project is public and has >=1
contributor. Consumes the existing GET /v2/projects/{projectId}/contributors
endpoint. Includes a Cypress e2e spec + e2e data controller, and fixes
cleanTestData to tear down deleted/disabled fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
added a commit
that referenced
this pull request
Jul 27, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, first/last contribution date), email-free and gated behind
MEMBERS_VIEW; the tab bar appears only when the project is public and has >=1
contributor. Consumes the existing GET /v2/projects/{projectId}/contributors
endpoint. Includes a Cypress e2e spec + e2e data controller, and fixes
cleanTestData to tear down deleted/disabled fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
added a commit
that referenced
this pull request
Jul 27, 2026
Anty0
added a commit
that referenced
this pull request
Jul 27, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, e-mail address, first/last contribution date), gated behind
MEMBERS_VIEW like the Team tab; the tab bar appears only when the project is
public and has >=1 contributor. Consumes the existing
GET /v2/projects/{projectId}/contributors endpoint. Includes a Cypress e2e spec
+ e2e data controller, and fixes cleanTestData to tear down deleted/disabled
fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
Anty0
added a commit
that referenced
this pull request
Jul 27, 2026
Adds a Community tab to the project Members page listing non-member contributors
(avatar, name, e-mail address, first/last contribution date), gated behind
MEMBERS_VIEW like the Team tab; the tab bar appears only when the project is
public and has >=1 contributor. Consumes the existing
GET /v2/projects/{projectId}/contributors endpoint. Includes a Cypress e2e spec
+ e2e data controller, and fixes cleanTestData to tear down deleted/disabled
fixture users.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of pitch #3806 (Community translation v1.1 — Contributors), scope B. Targets the integration branch (PR #3819), not
main.What
Adds a Community tab to the project Members page listing everyone who contributed to the project but is not currently a member — avatar, name, and first/last contribution date. It consumes the existing
GET /v2/projects/{projectId}/contributorsendpoint shipped in scope A.?tab=) like the page's existing agency filter. The tab bar appears only when the project is public and has ≥1 contributor; otherwise the member list renders unchanged.Tests
communityMembersTab.cy.ts: tab gating (public-with-contributors shows tabs; public-empty and private hide them), Team↔Community mutual exclusivity, contributor rows viagcyAdvanced, distinct first/last dates, and the no-email assertion.members-community) seeding contributor activity, driven off the sharedContributorsTestDatafixture (extended with public / public-empty projects rather than duplicated).Notes
t()keys are used with inlinedefaultValue; they still need creating on the Tolgee project for the production tsc check.