From 465732858fcfa371d289f598b3d2dd3d83454870 Mon Sep 17 00:00:00 2001 From: Bohdan Triapitsyn Date: Thu, 11 Jun 2026 18:59:58 +0300 Subject: [PATCH] fix: clarify GitHub token settings --- .../sections/openchamber/GitHubSettings.tsx | 31 ++++++++++++++++--- .../ui/src/lib/i18n/messages/en.settings.ts | 3 +- .../ui/src/lib/i18n/messages/es.settings.ts | 3 +- .../ui/src/lib/i18n/messages/fr.settings.ts | 3 +- .../ui/src/lib/i18n/messages/ko.settings.ts | 3 +- .../ui/src/lib/i18n/messages/pl.settings.ts | 3 +- .../src/lib/i18n/messages/pt-BR.settings.ts | 3 +- .../ui/src/lib/i18n/messages/uk.settings.ts | 3 +- .../src/lib/i18n/messages/zh-CN.settings.ts | 3 +- .../src/lib/i18n/messages/zh-TW.settings.ts | 3 +- packages/web/server/lib/github/routes.js | 12 ++++++- 11 files changed, 56 insertions(+), 14 deletions(-) diff --git a/packages/ui/src/components/sections/openchamber/GitHubSettings.tsx b/packages/ui/src/components/sections/openchamber/GitHubSettings.tsx index c480a272..37164f16 100644 --- a/packages/ui/src/components/sections/openchamber/GitHubSettings.tsx +++ b/packages/ui/src/components/sections/openchamber/GitHubSettings.tsx @@ -269,7 +269,7 @@ export const GitHubSettings: React.FC = () => {
-

GitHub

+

{t('settings.github.page.oauth.title')}

@@ -457,10 +457,33 @@ export const GitHubSettings: React.FC = () => {
-
- -
+ {ghCli.user?.avatarUrl ? ( + {ghCli.user.login + ) : ( +
+ +
+ )}
+ {!ghCli.disabled && ghCli.user && ( +
+ {ghCli.user.name?.trim() || ghCli.user.login || 'GitHub'} +
+ )} + {!ghCli.disabled && ghCli.user?.login && ( +
+ + {ghCli.user.login} + {ghCli.user.email && } + {ghCli.user.email && {ghCli.user.email}} +
+ )}
{ghCli.disabled ? t('settings.github.page.ghCli.disabledDescription') diff --git a/packages/ui/src/lib/i18n/messages/en.settings.ts b/packages/ui/src/lib/i18n/messages/en.settings.ts index a2c45ebc..40eb398e 100644 --- a/packages/ui/src/lib/i18n/messages/en.settings.ts +++ b/packages/ui/src/lib/i18n/messages/en.settings.ts @@ -1407,7 +1407,8 @@ export const settingsDict = { 'settings.github.page.toast.disconnectFailed': 'Failed to disconnect GitHub', 'settings.github.page.toast.accountSwitched': 'GitHub account switched', 'settings.github.page.toast.accountSwitchFailed': 'Failed to switch GitHub account', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'GitHub OAuth Token', + 'settings.github.page.ghCli.title': 'GitHub CLI Token', 'settings.github.page.ghCli.activeDescription': 'Authenticated via the gh CLI', 'settings.github.page.ghCli.fallbackDescription': 'Available as fallback if OpenChamber auth is removed', 'settings.github.page.ghCli.disabledDescription': 'Installed but not used as a fallback', diff --git a/packages/ui/src/lib/i18n/messages/es.settings.ts b/packages/ui/src/lib/i18n/messages/es.settings.ts index 127692bd..745e2593 100644 --- a/packages/ui/src/lib/i18n/messages/es.settings.ts +++ b/packages/ui/src/lib/i18n/messages/es.settings.ts @@ -1374,7 +1374,8 @@ export const settingsDict = { "settings.github.page.toast.disconnectFailed": "No se pudo desconectar de GitHub", "settings.github.page.toast.accountSwitched": "Cuenta de GitHub cambiada", "settings.github.page.toast.accountSwitchFailed": "No se pudo cambiar de cuenta de GitHub", - "settings.github.page.ghCli.title": "gh CLI", + "settings.github.page.oauth.title": "Token OAuth de GitHub", + "settings.github.page.ghCli.title": "Token CLI de GitHub", "settings.github.page.ghCli.activeDescription": "Autenticado a través de gh CLI", "settings.github.page.ghCli.fallbackDescription": "Disponible como respaldo si se elimina la autenticación de OpenChamber", "settings.github.page.ghCli.disabledDescription": "Instalado pero no usado como respaldo", diff --git a/packages/ui/src/lib/i18n/messages/fr.settings.ts b/packages/ui/src/lib/i18n/messages/fr.settings.ts index f1ae5cfe..f89c43e3 100644 --- a/packages/ui/src/lib/i18n/messages/fr.settings.ts +++ b/packages/ui/src/lib/i18n/messages/fr.settings.ts @@ -1363,7 +1363,8 @@ export const settingsDict = { 'settings.github.page.toast.disconnectFailed': 'Échec de la déconnexion du GitHub', 'settings.github.page.toast.accountSwitched': 'Le compte GitHub a changé', 'settings.github.page.toast.accountSwitchFailed': 'Échec du changement de compte GitHub', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'Token OAuth GitHub', + 'settings.github.page.ghCli.title': 'Token CLI GitHub', 'settings.github.page.ghCli.activeDescription': 'Authentifié via gh CLI', 'settings.github.page.ghCli.fallbackDescription': 'Disponible comme solution de secours si l’authentification OpenChamber est supprimée', 'settings.github.page.ghCli.disabledDescription': 'Installé, mais non utilisé comme solution de secours', diff --git a/packages/ui/src/lib/i18n/messages/ko.settings.ts b/packages/ui/src/lib/i18n/messages/ko.settings.ts index 86845342..a46c8e5c 100644 --- a/packages/ui/src/lib/i18n/messages/ko.settings.ts +++ b/packages/ui/src/lib/i18n/messages/ko.settings.ts @@ -1374,7 +1374,8 @@ export const settingsDict = { 'settings.github.page.toast.disconnectFailed': 'GitHub 연결을 해제하지 못했습니다', 'settings.github.page.toast.accountSwitched': 'GitHub 계정이 전환되었습니다', 'settings.github.page.toast.accountSwitchFailed': 'GitHub 계정을 전환하지 못했습니다', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'GitHub OAuth 토큰', + 'settings.github.page.ghCli.title': 'GitHub CLI 토큰', 'settings.github.page.ghCli.activeDescription': 'gh CLI를 통해 인증됨', 'settings.github.page.ghCli.fallbackDescription': 'OpenChamber 인증이 제거된 경우 대체로 사용 가능', 'settings.github.page.ghCli.disabledDescription': '설치되어 있지만 대체로 사용되지 않음', diff --git a/packages/ui/src/lib/i18n/messages/pl.settings.ts b/packages/ui/src/lib/i18n/messages/pl.settings.ts index af1e2a9b..6ada90f1 100644 --- a/packages/ui/src/lib/i18n/messages/pl.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pl.settings.ts @@ -249,7 +249,8 @@ export const settingsDict = { 'settings.github.page.toast.ghCliEnabled': 'Rezerwa gh CLI włączona', 'settings.github.page.toast.ghCliDisabled': 'Rezerwa gh CLI wyłączona', 'settings.github.page.toast.ghCliUpdateFailed': 'Nie udało się zaktualizować ustawienia gh CLI', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'Token OAuth GitHub', + 'settings.github.page.ghCli.title': 'Token CLI GitHub', 'settings.github.page.ghCli.activeDescription': 'Uwierzytelniono przez gh CLI', 'settings.github.page.ghCli.fallbackDescription': 'Dostępne jako rezerwa, jeśli uwierzytelnienie OpenChamber zostanie usunięte', 'settings.github.page.ghCli.disabledDescription': 'Zainstalowane, ale nieużywane jako rezerwa', diff --git a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts index a021ec35..c27874c7 100644 --- a/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts +++ b/packages/ui/src/lib/i18n/messages/pt-BR.settings.ts @@ -1374,7 +1374,8 @@ export const settingsDict = { "settings.github.page.toast.disconnectFailed": "Não foi possível desconectar de GitHub", "settings.github.page.toast.accountSwitched": "Conta de GitHub cambiada", "settings.github.page.toast.accountSwitchFailed": "Não foi possível mudar de conta de GitHub", - "settings.github.page.ghCli.title": "gh CLI", + "settings.github.page.oauth.title": "Token OAuth do GitHub", + "settings.github.page.ghCli.title": "Token CLI do GitHub", "settings.github.page.ghCli.activeDescription": "Autenticado via gh CLI", "settings.github.page.ghCli.fallbackDescription": "Disponível como alternativa se a autenticação do OpenChamber for removida", "settings.github.page.ghCli.disabledDescription": "Instalado, mas não usado como alternativa", diff --git a/packages/ui/src/lib/i18n/messages/uk.settings.ts b/packages/ui/src/lib/i18n/messages/uk.settings.ts index 9252990a..0399e985 100644 --- a/packages/ui/src/lib/i18n/messages/uk.settings.ts +++ b/packages/ui/src/lib/i18n/messages/uk.settings.ts @@ -1374,7 +1374,8 @@ export const settingsDict = { "settings.github.page.toast.disconnectFailed": "Не вдалося відключити GitHub", "settings.github.page.toast.accountSwitched": "Обліковий запис GitHub змінено", "settings.github.page.toast.accountSwitchFailed": "Не вдалося змінити обліковий запис GitHub", - "settings.github.page.ghCli.title": "gh CLI", + "settings.github.page.oauth.title": "GitHub OAuth Token", + "settings.github.page.ghCli.title": "GitHub CLI Token", "settings.github.page.ghCli.activeDescription": "Автентифіковано через gh CLI", "settings.github.page.ghCli.fallbackDescription": "Доступно як резервний варіант, якщо автентифікацію OpenChamber видалено", "settings.github.page.ghCli.disabledDescription": "Встановлено, але не використовується як резервний варіант", diff --git a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts index 7210d246..0d203aa5 100644 --- a/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-CN.settings.ts @@ -1374,7 +1374,8 @@ export const settingsDict = { 'settings.github.page.toast.disconnectFailed': '断开 GitHub 失败', 'settings.github.page.toast.accountSwitched': 'GitHub 账号已切换', 'settings.github.page.toast.accountSwitchFailed': '切换 GitHub 账号失败', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'GitHub OAuth 令牌', + 'settings.github.page.ghCli.title': 'GitHub CLI 令牌', 'settings.github.page.ghCli.activeDescription': '已通过 gh CLI 认证', 'settings.github.page.ghCli.fallbackDescription': '在 OpenChamber 认证被移除时可作为备用', 'settings.github.page.ghCli.disabledDescription': '已安装但未作为备用使用', diff --git a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts index 116bae0d..89ade3e0 100644 --- a/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts +++ b/packages/ui/src/lib/i18n/messages/zh-TW.settings.ts @@ -1295,7 +1295,8 @@ 'settings.github.page.toast.disconnectFailed': '中斷 GitHub 失敗', 'settings.github.page.toast.accountSwitched': 'GitHub 帳號已切換', 'settings.github.page.toast.accountSwitchFailed': '切換 GitHub 帳號失敗', - 'settings.github.page.ghCli.title': 'gh CLI', + 'settings.github.page.oauth.title': 'GitHub OAuth 權杖', + 'settings.github.page.ghCli.title': 'GitHub CLI 權杖', 'settings.github.page.ghCli.activeDescription': '已透過 gh CLI 認證', 'settings.github.page.ghCli.fallbackDescription': '在 OpenChamber 認證被移除時可作為備用', 'settings.github.page.ghCli.disabledDescription': '已安裝但未作為備用使用', diff --git a/packages/web/server/lib/github/routes.js b/packages/web/server/lib/github/routes.js index a23f8ab4..93fa4ebf 100644 --- a/packages/web/server/lib/github/routes.js +++ b/packages/web/server/lib/github/routes.js @@ -84,12 +84,22 @@ export function registerGitHubRoutes(app) { const ghCliDisabled = isGhCliDisabled(); const ghToken = getGhCliToken(); const usingOwnToken = Boolean(auth?.accessToken); + let ghCliUser = null; + + if (ghToken !== null && !ghCliDisabled && usingOwnToken) { + try { + const { Octokit } = await import('@octokit/rest'); + ghCliUser = await getGitHubUserSummary(new Octokit({ auth: ghToken })); + } catch { + ghCliUser = null; + } + } const buildGhCli = (activeUser = null) => ({ available: ghToken !== null, disabled: ghCliDisabled, active: !usingOwnToken && ghToken !== null && !ghCliDisabled, - ...(activeUser ? { user: activeUser } : {}), + ...(!ghCliDisabled && (activeUser || ghCliUser) ? { user: activeUser || ghCliUser } : {}), }); const octokit = getOctokitOrNull();