Skip to content

feat(OIDC): adjusts for the trust relationships UI - #8313

Open
talissoncosta wants to merge 4 commits into
mainfrom
chore/trust-relationships-ds-fixes
Open

feat(OIDC): adjusts for the trust relationships UI#8313
talissoncosta wants to merge 4 commits into
mainfrom
chore/trust-relationships-ds-fixes

Conversation

@talissoncosta

@talissoncosta talissoncosta commented Aug 17, 2026

Copy link
Copy Markdown
Contributor
  • I have read the Contributing Guide.
  • I have added information to docs/ if required so people know about the feature.
  • I have filled in the "Changes" section below.
  • I have filled in the "How did you test this code" section below.

Changes

Follow-up to #8044, against that branch so it lands with the feature.

  • Design system components instead of hand-rolled markup: Chip for role chips (drops both ionicons imports), FieldLabel for labels, trash-in-a-square for row removal, Link for the integration link, isLoading on both save buttons.
  • Accessible names: the list's delete button had none, claim rule buttons all read "Remove rule", the wildcard hint wasn't referenced, and InputGroup's component prop was orphaning labels.
  • Provider chooser rebuilt as ProviderCard, and step two now names the chosen provider with a Change action, since the modal title reads the same on both steps.
  • GitHub mark defaulted to #000000 and vanished in dark mode.

How did you test this code?

By hand in both themes, plus keyboard traversal of the claim rule rows. Lint and typecheck clean on the changed files, 449 unit tests pass. No new tests: markup and prop changes only.

@vercel

vercel Bot commented Aug 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flagsmith-frontend-preview Ready Ready Preview Aug 18, 2026 4:12pm
flagsmith-frontend-staging Ready Ready Preview Aug 18, 2026 4:12pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Ignored Ignored Preview Aug 18, 2026 4:12pm

Request Review

@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 72af9e1e-6b61-47d8-8f2b-5ac33629ee7b

📥 Commits

Reviewing files that changed from the base of the PR and between fa5da34 and 41f5321.

📒 Files selected for processing (1)
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/TrustRelationshipModal/TrustRelationshipModal.tsx

Included review availability: Your plan includes up to 8 reviews per rolling hour; 4 remain after this review.


📝 Walkthrough

Walkthrough

The trust relationship UI now uses shared provider definitions and reusable provider cards for GitHub and OIDC selection. The modal focuses the first available form field after provider selection. Form controls now include accessible IDs, labels, grouped claim rules, removable role chips, read-only values, and separate loading states. GitHub integration links use Link, and provider and delete icons use updated rendering and colour behaviour.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: 🔵 Low · up to 41f53

The PR updates the trust relationships UI and is otherwise mergeable, but one frontend import path still does not follow the repository’s configured alias convention and should be corrected or explicitly accepted by the owner.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions github-actions Bot added the front-end Issue related to the React Front End Dashboard label Aug 17, 2026
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch 3 times, most recently from 94b0d0b to daaed40 Compare August 17, 2026 13:45
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch from 740d490 to a588777 Compare August 17, 2026 17:36
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch from a588777 to c80c2b9 Compare August 17, 2026 17:37
@talissoncosta talissoncosta changed the title refactor(OIDC): Design system fixes for the trust relationships UI refactor(OIDC): DS fixes for the trust relationships UI Aug 17, 2026
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch from c80c2b9 to 5e82000 Compare August 17, 2026 17:45
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch from 5e82000 to bd2c46c Compare August 17, 2026 17:48
@talissoncosta
talissoncosta force-pushed the chore/trust-relationships-ds-fixes branch from bd2c46c to 55a5746 Compare August 17, 2026 17:51
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Docker builds report

Image Build Status Security report
ghcr.io/flagsmith/flagsmith-api:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-private-cloud:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-frontend:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-api-test:pr-8313 Finished ✅ Skipped
ghcr.io/flagsmith/flagsmith-e2e:pr-8313 Finished ✅ Skipped
ghcr.io/flagsmith/flagsmith-api:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-frontend:pr-8313 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-private-cloud:pr-8313 Finished ✅ Results

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor
❌ private-cloud · depot-ubuntu-latest-arm-16 — run #19517 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

failed  3 failed

Details

stats  3 tests across 3 suites
duration  23.3 seconds
commit  48b3dbb
info  📦 Artifacts: View test results and HTML report
🔄 Run: #19517 (attempt 1)

Failed tests

firefox › tests/change-request-test.pw.ts › Change Request Tests › Change requests can be created, approved, and published with four-eyes approval @enterprise
firefox › tests/roles-test.pw.ts › Roles Tests › Roles can be created with project and environment permissions @enterprise
firefox › tests/sso-test.pw.ts › SCIM Tests › SCIM configuration can be created, regenerated, and deleted @enterprise

🗂️ Previous results
✅ private-cloud · depot-ubuntu-latest-16 — run #19520 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  56.2 seconds
commit  41f5321
info  🔄 Run: #19520 (attempt 1)

✅ private-cloud · depot-ubuntu-latest-arm-16 — run #19520 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  2 passed

Details

stats  2 tests across 2 suites
duration  38.4 seconds
commit  41f5321
info  🔄 Run: #19520 (attempt 1)

✅ oss · depot-ubuntu-latest-arm-16 — run #19520 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  45.6 seconds
commit  41f5321
info  🔄 Run: #19520 (attempt 1)

✅ oss · depot-ubuntu-latest-16 — run #19520 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  32.6 seconds
commit  41f5321
info  🔄 Run: #19520 (attempt 1)

✅ private-cloud · depot-ubuntu-latest-arm-16 — run #19519 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  2 passed

Details

stats  2 tests across 2 suites
duration  1 minute, 3 seconds
commit  fc9b05e
info  🔄 Run: #19519 (attempt 1)

✅ private-cloud · depot-ubuntu-latest-16 — run #19519 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  3 passed

Details

stats  3 tests across 3 suites
duration  32.8 seconds
commit  fc9b05e
info  🔄 Run: #19519 (attempt 1)

✅ private-cloud · depot-ubuntu-latest-16 — run #19518 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  2 passed

Details

stats  2 tests across 2 suites
duration  36.2 seconds
commit  fa5da34
info  🔄 Run: #19518 (attempt 1)

✅ oss · depot-ubuntu-latest-arm-16 — run #19519 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  45.2 seconds
commit  fc9b05e
info  🔄 Run: #19519 (attempt 1)

✅ oss · depot-ubuntu-latest-16 — run #19519 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  36.6 seconds
commit  fc9b05e
info  🔄 Run: #19519 (attempt 1)

✅ private-cloud · depot-ubuntu-latest-arm-16 — run #19518 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  38.5 seconds
commit  fa5da34
info  🔄 Run: #19518 (attempt 1)

✅ oss · depot-ubuntu-latest-16 — run #19518 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  41.8 seconds
commit  fa5da34
info  🔄 Run: #19518 (attempt 1)

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Visual Regression

15 screenshots compared. See report for details.
View full report

talissoncosta and others added 2 commits August 18, 2026 13:02
A FieldLabel can only point at a control that has an id, and Switch did not
accept one, so its label could not be associated; rc-switch already spreads
unknown props onto its <button>, which is labelable. FieldLabel takes an id
so an aria-labelledby elsewhere can name a group of controls from it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
It defaulted to #000000, so it disappeared on dark surfaces. Defaults to
currentColor now, following the text colour in both themes. The one caller
that wants white passes it explicitly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7bf484e3-6e2b-4656-a010-9a6072bb0f9e

📥 Commits

Reviewing files that changed from the base of the PR and between b7676e4 and 4e462d2.

📒 Files selected for processing (15)
  • frontend/web/components/Switch.tsx
  • frontend/web/components/base/forms/FieldLabel.tsx
  • frontend/web/components/icons/GithubIcon.tsx
  • frontend/web/components/icons/Icon.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/GithubTrustRelationshipForm/GithubTrustRelationshipForm.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/NewTrustRelationshipModal/NewTrustRelationshipModal.scss
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/NewTrustRelationshipModal/NewTrustRelationshipModal.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/ProviderCard/ProviderCard.scss
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/ProviderCard/ProviderCard.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/ProviderCard/index.ts
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/TrustRelationshipModal/TrustRelationshipModal.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/TrustRelationshipPermissionsFields/TrustRelationshipPermissionsFields.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/TrustRelationships/TrustRelationships.tsx
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/github.ts
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/providers.tsx

Included review availability: Your plan includes up to 8 reviews per rolling hour; 7 remain after this review.

Comment thread frontend/web/components/icons/Icon.tsx Outdated
talissoncosta and others added 2 commits August 18, 2026 13:10
Swaps hand-rolled markup for the components that cover it, and fixes the
accessible names those controls were missing:

- Role chips become Chip, so removal sits on its own button rather than the
  whole chip being a delete target, and both ionicons imports go.
- Labels become FieldLabel, with htmlFor wiring "Is admin" to its switch.
  The role chips and claim rules sit in groups named by their label, since a
  label cannot point at a set of controls.
- The read-only InputGroups drop `component`, which bypassed the default
  Input and the label and error wiring with it. The Select keeps it.
- Claim rule rows remove with a trash in the resting-grey square the other
  removable rows use; close stays for chips and dismissible banners. Each
  row's inputs and remove button carry its number, rather than three
  identical placeholders and three buttons reading "Remove rule".
- The wildcard hint is referenced with aria-describedby, so it is announced
  on reaching a values field.
- The list's delete button had no accessible name at all; it gains one and
  drops a data-test nothing referenced.
- Both save buttons use isLoading instead of folding the mutation flags into
  disabled, so they show a spinner.
- The integration link becomes Link rather than a Button with an href.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The chooser cards become ProviderCard: leading icon tile, an inline
Recommended chip, and a trailing chevron. Its own component rather than an
extension of SelectableCard, which stacks its icon above the title and has
four consumers, two of which would move.

Step two used to give no sign of which provider was picked and no way to
change it, since the modal title reads the same on both steps. It now opens
with a Provider summary naming the choice, with Change to go back, and focus
lands on the first editable field.

The provider registry carries the chooser's copy too, so a preset is one
entry rather than a label and icon in the registry and the same pair again in
the chooser. Its icon became a function of size, since the list badge and the
card want different ones, and the GitHub label moved next to GITHUB_ISSUER.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: bceb4fa0-c0bd-482a-9de6-d29400a5a163

📥 Commits

Reviewing files that changed from the base of the PR and between 4e462d2 and fa5da34.

📒 Files selected for processing (1)
  • frontend/web/components/pages/organisation-settings/tabs/trust-relationships/providers.tsx

Included review availability: Your plan includes up to 8 reviews per rolling hour; 5 remain after this review.

@talissoncosta

Copy link
Copy Markdown
Contributor Author

@khvn26
I really appreciate you feedback on this one.

@khvn26 khvn26 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup sorry — this LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or request front-end Issue related to the React Front End Dashboard

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants