By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
Description
Name
Screenshots
users selector in private resources
roles selector in private resources
role selectors in create user
role selectors in edit user
How to test?
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/fosrl/pangolin/pull/2893
**Author:** [@Fredkiss3](https://github.com/Fredkiss3)
**Created:** 4/23/2026
**Status:** 🔄 Open
**Base:** `dev` ← **Head:** `feat/roles-and-user-multi-selectors`
---
### 📝 Commits (10+)
- [`9db5ff9`](https://github.com/fosrl/pangolin/commit/9db5ff9ff73c885959e1e42977345f4a9a2001ec) ♻️ small refactor
- [`53c48e6`](https://github.com/fosrl/pangolin/commit/53c48e6f041b3a4a3ec39f1cec54e3ed1be338c9) 🌐 update french translations
- [`b9bee28`](https://github.com/fosrl/pangolin/commit/b9bee2836b1973fbd31ad060ee60c2061c4da295) 🚧 wip
- [`da4dd88`](https://github.com/fosrl/pangolin/commit/da4dd88fddf4fc3d24b77db661bb3402dd0dee33) Merge branch 'dev' into feat/roles-and-user-multi-selectors
- [`c746e1b`](https://github.com/fosrl/pangolin/commit/c746e1bc8dd9f2f2181f517ab9f86e45c17f342d) 🚧 wip
- [`cb3fa02`](https://github.com/fosrl/pangolin/commit/cb3fa028c301ea66103aae54bdb9394de73df59e) ♻️ create custom autocomplete tag input
- [`955aa41`](https://github.com/fosrl/pangolin/commit/955aa41f53556a2d5c60eef29f64ea3b5ce14e81) ⏪ revert changes modifying existing tag input
- [`95cbaaa`](https://github.com/fosrl/pangolin/commit/95cbaaae213c45a6cdf81cff1639f41242c24c00) ✨ new multi select tag input
- [`2ea9d27`](https://github.com/fosrl/pangolin/commit/2ea9d272379e6bbb88803b9da42f88f40be6d2bd) ✨ machine selector
- [`91ce8be`](https://github.com/fosrl/pangolin/commit/91ce8bea4bdd01d2ce15409fb8b00ac47502e8e2) 🔨 add local mailer for catching emails
### 📊 Changes
**21 files changed** (+745 additions, -707 deletions)
<details>
<summary>View changed files</summary>
➕ `docker-compose.mailpit.yml` (+12 -0)
📝 `messages/fr-FR.json` (+4 -3)
📝 `src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx` (+37 -77)
📝 `src/app/[orgId]/settings/access/users/create/page.tsx` (+50 -74)
📝 `src/app/[orgId]/settings/resources/proxy/[niceId]/authentication/page.tsx` (+21 -65)
📝 `src/components/Credenza.tsx` (+1 -1)
📝 `src/components/InternalResourceForm.tsx` (+141 -184)
📝 `src/components/OrgRolesTagField.tsx` (+20 -38)
📝 `src/components/UptimeAlertSection.tsx` (+63 -92)
📝 `src/components/alert-rule-editor/AlertRuleFields.tsx` (+20 -57)
📝 `src/components/machines-selector.tsx` (+24 -65)
📝 `src/components/multi-select/multi-select-content.tsx` (+11 -6)
➕ `src/components/multi-select/multi-select-tag-input.tsx` (+98 -0)
➕ `src/components/roles-selector.tsx` (+71 -0)
📝 `src/components/tags/autocomplete.tsx` (+12 -7)
📝 `src/components/tags/tag-input.tsx` (+43 -27)
📝 `src/components/ui/command.tsx` (+4 -3)
📝 `src/components/ui/controlled-data-table.tsx` (+1 -1)
➕ `src/components/users-selector.tsx` (+63 -0)
📝 `src/lib/getUserDisplayName.ts` (+11 -1)
_...and 1 more files_
</details>
### 📄 Description
## Community Contribution License Agreement
By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
## Description
| Name | Screenshots |
| :----------------: | :-----------: |
| users selector in private resources | |
| roles selector in private resources | |
| role selectors in create user | |
| role selectors in edit user | |
## How to test?
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/2893
Author: @Fredkiss3
Created: 4/23/2026
Status: 🔄 Open
Base:
dev← Head:feat/roles-and-user-multi-selectors📝 Commits (10+)
9db5ff9♻️ small refactor53c48e6🌐 update french translationsb9bee28🚧 wipda4dd88Merge branch 'dev' into feat/roles-and-user-multi-selectorsc746e1b🚧 wipcb3fa02♻️ create custom autocomplete tag input955aa41⏪ revert changes modifying existing tag input95cbaaa✨ new multi select tag input2ea9d27✨ machine selector91ce8be🔨 add local mailer for catching emails📊 Changes
21 files changed (+745 additions, -707 deletions)
View changed files
➕
docker-compose.mailpit.yml(+12 -0)📝
messages/fr-FR.json(+4 -3)📝
src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx(+37 -77)📝
src/app/[orgId]/settings/access/users/create/page.tsx(+50 -74)📝
src/app/[orgId]/settings/resources/proxy/[niceId]/authentication/page.tsx(+21 -65)📝
src/components/Credenza.tsx(+1 -1)📝
src/components/InternalResourceForm.tsx(+141 -184)📝
src/components/OrgRolesTagField.tsx(+20 -38)📝
src/components/UptimeAlertSection.tsx(+63 -92)📝
src/components/alert-rule-editor/AlertRuleFields.tsx(+20 -57)📝
src/components/machines-selector.tsx(+24 -65)📝
src/components/multi-select/multi-select-content.tsx(+11 -6)➕
src/components/multi-select/multi-select-tag-input.tsx(+98 -0)➕
src/components/roles-selector.tsx(+71 -0)📝
src/components/tags/autocomplete.tsx(+12 -7)📝
src/components/tags/tag-input.tsx(+43 -27)📝
src/components/ui/command.tsx(+4 -3)📝
src/components/ui/controlled-data-table.tsx(+1 -1)➕
src/components/users-selector.tsx(+63 -0)📝
src/lib/getUserDisplayName.ts(+11 -1)...and 1 more files
📄 Description
Community Contribution License Agreement
By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
Description
How to test?
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.