Skip to content

feat: Community tab on the Members page (pitch #3806, scope B) - #3821

Merged
Anty0 merged 3 commits into
jirikuchynka/community-contributorsfrom
jirikuchynka/community-contributors-members-tab
Jul 24, 2026
Merged

feat: Community tab on the Members page (pitch #3806, scope B)#3821
Anty0 merged 3 commits into
jirikuchynka/community-contributorsfrom
jirikuchynka/community-contributors-members-tab

Conversation

@Anty0

@Anty0 Anty0 commented Jul 24, 2026

Copy link
Copy Markdown
Member

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}/contributors endpoint shipped in scope A.

  • Team / Community tabs, held in the URL (?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.
  • The Team tab keeps the existing member and invitation lists (unchanged).
  • Email-free by construction: the Community row exposes name + avatar only — no email in the model, row, or payload (pitch hard-constraint no. 1).
  • Read-only. The optional "Invite as member" button (scope D) is not included.

Tests

  • Cypress spec communityMembersTab.cy.ts: tab gating (public-with-contributors shows tabs; public-empty and private hide them), Team↔Community mutual exclusivity, contributor rows via gcyAdvanced, distinct first/last dates, and the no-email assertion.
  • Backend e2e data controller (members-community) seeding contributor activity, driven off the shared ContributorsTestData fixture (extended with public / public-empty projects rather than duplicated).

Notes

  • Frontend-only apart from the e2e data controller/fixture; no API change, no schema regeneration (endpoint + generated types already on the branch).
  • New t() keys are used with inline defaultValue; they still need creating on the Tolgee project for the production tsc check.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 52b10b78-097b-4dc3-b4be-4a2a53683f9d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jirikuchynka/community-contributors-members-tab

Comment @coderabbitai help to get the list of available commands.

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
Anty0 force-pushed the jirikuchynka/community-contributors-members-tab branch from d4cccc3 to 1f2af8b Compare July 24, 2026 10:40
Anty0 added 2 commits July 24, 2026 13:09
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
Anty0 merged commit 34b9f46 into jirikuchynka/community-contributors Jul 24, 2026
70 of 74 checks passed
@Anty0
Anty0 deleted the jirikuchynka/community-contributors-members-tab branch July 24, 2026 11:54
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
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant