From f9f048905d24b966efb1b027b8a9d82fafa43db4 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Tue, 13 Oct 2026 19:03:41 +0200
Subject: [PATCH] Task/improve labels of client of last request (#8149)
* Improve labels
* Update changelog
---
CHANGELOG.md | 4 ++++
.../app/components/admin-users/admin-users.component.ts | 2 ++
.../src/app/components/admin-users/admin-users.html | 2 +-
.../user-detail-dialog/user-detail-dialog.component.ts | 2 ++
.../user-detail-dialog/user-detail-dialog.html | 4 +++-
libs/ui/src/lib/i18n.ts | 9 ++++++++-
6 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d2c687cf74..5db73ad9f1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added support to paste a file in the import activities dialog
+### Changed
+
+- Improved the labels of the client of the last request in the users section of the admin control panel
+
### Fixed
- Fixed the link of the _Manage Asset Profile_ button in the holding detail dialog before the holding has loaded
diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts
index 04d5daa907..8e459b4a40 100644
--- a/apps/client/src/app/components/admin-users/admin-users.component.ts
+++ b/apps/client/src/app/components/admin-users/admin-users.component.ts
@@ -22,6 +22,7 @@ import {
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
import { RequestClient } from '@ghostfolio/prisma/enums';
+import { translate } from '@ghostfolio/ui/i18n';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { AdminService, DataService } from '@ghostfolio/ui/services';
@@ -114,6 +115,7 @@ export class GfAdminUsersComponent implements OnInit {
internalRoutes.adminControl.subRoutes.users.routerLink;
protected totalItems = 0;
+ protected readonly translate = translate;
protected user: User;
private readonly deviceType = computed(
diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html
index 3b8b09235b..f61006e0cc 100644
--- a/apps/client/src/app/components/admin-users/admin-users.html
+++ b/apps/client/src/app/components/admin-users/admin-users.html
@@ -197,7 +197,7 @@
} @else {
diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
index db8c94abcd..f34555efc2 100644
--- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
+++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
@@ -6,6 +6,7 @@ import {
} from '@ghostfolio/common/helper';
import { AdminUserResponse } from '@ghostfolio/common/interfaces';
import type { Subscription } from '@ghostfolio/prisma/browser';
+import { translate } from '@ghostfolio/ui/i18n';
import { AdminService, DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
@@ -70,6 +71,7 @@ export class GfUserDetailDialogComponent implements OnInit {
'expiresAt'
];
+ protected readonly translate = translate;
protected user: AdminUserResponse;
protected readonly data = inject(MAT_DIALOG_DATA);
diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
index 599b5cde71..d52a7d5b51 100644
--- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
@@ -174,7 +174,9 @@
i18n
size="medium"
[isLoading]="isLoading"
- [value]="user?.lastRequestClient || '-'"
+ [value]="
+ user?.lastRequestClient ? translate(user.lastRequestClient) : '-'
+ "
>Client
diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts
index 4040b45c57..5dcf17b2b3 100644
--- a/libs/ui/src/lib/i18n.ts
+++ b/libs/ui/src/lib/i18n.ts
@@ -3,6 +3,7 @@ import type {
ProductPlatform,
SectorName
} from '@ghostfolio/common/types';
+import { RequestClient } from '@ghostfolio/prisma/enums';
import '@angular/localize/init';
@@ -121,9 +122,15 @@ const locales = {
LINUX: 'Linux',
MACOS: 'macOS',
WEB: $localize`Web`,
- WINDOWS: 'Windows'
+ WINDOWS: 'Windows',
+
+ // Request clients (WEB is defined above under Product platforms)
+ API: 'API',
+ MCP: 'MCP',
+ SELF_HOSTING: $localize`Self-Hosting`
} satisfies Record &
Record &
+ Record &
Record &
Record;