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
Main changes:
Separate Client & Proxy tables
Separate User Devices & Machine clients tables
Other changes:
Move the stored page size & stored page column visibibility to their own hooks
Screenshots
-
-
Proxy Resources
Client Resources
User devices
Machine Clients
🔄 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/1960
**Author:** [@Fredkiss3](https://github.com/Fredkiss3)
**Created:** 12/2/2025
**Status:** ✅ Merged
**Merged:** 12/3/2025
**Merged by:** [@miloschwartz](https://github.com/miloschwartz)
**Base:** `clients-user` ← **Head:** `refactor/separate-tables`
---
### 📝 Commits (10+)
- [`610e46f`](https://github.com/fosrl/pangolin/commit/610e46f2d550f7d36722e67a9196735fd0b04f5c) 🚧 WIP: separate proxy & client resources
- [`18db4a1`](https://github.com/fosrl/pangolin/commit/18db4a11c85e248e2f741bbc7dad5f5a4717d6a4) ♻️ separate client & proxy resources tables
- [`342bedc`](https://github.com/fosrl/pangolin/commit/342bedc01209a78aa920cf54bda24f768c967045) 🎨 format with prettier
- [`45a82f3`](https://github.com/fosrl/pangolin/commit/45a82f3ecc7407fbdf769ac53af3cdddca7133a3) 🚧WIP: Separate user & machine clients
- [`3d400b2`](https://github.com/fosrl/pangolin/commit/3d400b23217ac78f755e34d0327afbb7af2ff540) ♻️ ignore hydrateSaas script and `exit(0)` on PG migrations
- [`06a31bb`](https://github.com/fosrl/pangolin/commit/06a31bb7160378c82bedac588ae9ef125e1f1e95) ♻️ separate machine client & user devices tables + move common functions into hooks
- [`c93ab34`](https://github.com/fosrl/pangolin/commit/c93ab340213a9eca9131beda48c708f74de97f98) ♻️ some refactors
- [`6eb6b44`](https://github.com/fosrl/pangolin/commit/6eb6b44f41bd2b21bb5dba73eb909a7195b7cb4e) 💬 update some text labels
- [`f060063`](https://github.com/fosrl/pangolin/commit/f060063f5362956b6ea1da7fd3f6ee267a1ec2d8) 💬 update text
- [`f5bfddd`](https://github.com/fosrl/pangolin/commit/f5bfddd2622b040c4b503d31362cdef766c94c33) 🚨 run `eslint --fix`
### 📊 Changes
**31 files changed** (+4386 additions, -3232 deletions)
<details>
<summary>View changed files</summary>
📝 `.gitignore` (+2 -1)
📝 `messages/en-US.json` (+13 -5)
📝 `server/db/pg/migrate.ts` (+1 -0)
📝 `server/lib/ip.ts` (+3 -5)
📝 `server/lib/rebuildClientAssociations.ts` (+5 -5)
📝 `server/private/routers/hybrid.ts` (+1 -1)
📝 `server/routers/newt/handleGetConfigMessage.ts` (+1 -1)
📝 `server/routers/siteResource/updateSiteResource.ts` (+1 -2)
📝 `src/app/[orgId]/page.tsx` (+7 -9)
➕ `src/app/[orgId]/settings/clients/machine/page.tsx` (+78 -0)
📝 `src/app/[orgId]/settings/clients/page.tsx` (+2 -79)
➕ `src/app/[orgId]/settings/clients/user/page.tsx` (+75 -0)
➕ `src/app/[orgId]/settings/resources/client/page.tsx` (+93 -0)
📝 `src/app/[orgId]/settings/resources/page.tsx` (+3 -142)
➕ `src/app/[orgId]/settings/resources/proxy/page.tsx` (+112 -0)
📝 `src/app/layout.tsx` (+16 -16)
📝 `src/app/navigation.tsx` (+61 -29)
➕ `src/components/ClientResourcesTable.tsx` (+634 -0)
➖ `src/components/ClientsTable.tsx` (+0 -985)
📝 `src/components/CreateInternalResourceDialog.tsx` (+353 -187)
_...and 11 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
**Main changes:**
- Separate Client & Proxy tables
- Separate User Devices & Machine clients tables
**Other changes:**
- Move the stored page size & stored page column visibibility to their own hooks
## Screenshots
| - | - |
| ------ | ------ |
| Proxy Resources | <img width="1487" height="1060" alt="Screenshot 2025-12-03 at 16 43 13" src="https://github.com/user-attachments/assets/1432d559-433b-4762-af1c-112e423dd6df" /> |
| Client Resources | <img width="1487" height="1060" alt="Screenshot 2025-12-03 at 16 43 17" src="https://github.com/user-attachments/assets/b771ee30-a735-4643-9035-4831775bbe89" /> |
| User devices | <img width="1487" height="1060" alt="Screenshot 2025-12-03 at 16 43 21" src="https://github.com/user-attachments/assets/11924bb0-d2e4-471c-b3f8-0e5fbc255d8d" /> |
| Machine Clients | <img width="1487" height="1060" alt="Screenshot 2025-12-03 at 16 43 23" src="https://github.com/user-attachments/assets/10737525-3138-4294-803e-7211d42845a6" /> |
---
<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/1960
Author: @Fredkiss3
Created: 12/2/2025
Status: ✅ Merged
Merged: 12/3/2025
Merged by: @miloschwartz
Base:
clients-user← Head:refactor/separate-tables📝 Commits (10+)
610e46f🚧 WIP: separate proxy & client resources18db4a1♻️ separate client & proxy resources tables342bedc🎨 format with prettier45a82f3🚧WIP: Separate user & machine clients3d400b2♻️ ignore hydrateSaas script andexit(0)on PG migrations06a31bb♻️ separate machine client & user devices tables + move common functions into hooksc93ab34♻️ some refactors6eb6b44💬 update some text labelsf060063💬 update textf5bfddd🚨 runeslint --fix📊 Changes
31 files changed (+4386 additions, -3232 deletions)
View changed files
📝
.gitignore(+2 -1)📝
messages/en-US.json(+13 -5)📝
server/db/pg/migrate.ts(+1 -0)📝
server/lib/ip.ts(+3 -5)📝
server/lib/rebuildClientAssociations.ts(+5 -5)📝
server/private/routers/hybrid.ts(+1 -1)📝
server/routers/newt/handleGetConfigMessage.ts(+1 -1)📝
server/routers/siteResource/updateSiteResource.ts(+1 -2)📝
src/app/[orgId]/page.tsx(+7 -9)➕
src/app/[orgId]/settings/clients/machine/page.tsx(+78 -0)📝
src/app/[orgId]/settings/clients/page.tsx(+2 -79)➕
src/app/[orgId]/settings/clients/user/page.tsx(+75 -0)➕
src/app/[orgId]/settings/resources/client/page.tsx(+93 -0)📝
src/app/[orgId]/settings/resources/page.tsx(+3 -142)➕
src/app/[orgId]/settings/resources/proxy/page.tsx(+112 -0)📝
src/app/layout.tsx(+16 -16)📝
src/app/navigation.tsx(+61 -29)➕
src/components/ClientResourcesTable.tsx(+634 -0)➖
src/components/ClientsTable.tsx(+0 -985)📝
src/components/CreateInternalResourceDialog.tsx(+353 -187)...and 11 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
Main changes:
Other changes:
Screenshots
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.