From ae09a39e55b371b7246bd0d1f081e8f3ea2d1507 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Thu, 11 Jun 2026 00:09:01 +0800 Subject: [PATCH] fix(desktop): update IM adapter setup guidance Put Telegram first in the IM adapter settings, add a single documentation link in the setup copy, and keep per-platform settings focused on configuration. Tested: cd desktop && bun run test AdapterSettings.test.tsx Tested: bun run check:desktop Scope-risk: narrow Confidence: high --- desktop/src/i18n/locales/en.ts | 4 ++- desktop/src/i18n/locales/jp.ts | 4 ++- desktop/src/i18n/locales/kr.ts | 4 ++- desktop/src/i18n/locales/zh-TW.ts | 4 ++- desktop/src/i18n/locales/zh.ts | 4 ++- desktop/src/pages/AdapterSettings.test.tsx | 18 ++++++++++++ desktop/src/pages/AdapterSettings.tsx | 33 +++++++++++++++------- 7 files changed, 56 insertions(+), 15 deletions(-) diff --git a/desktop/src/i18n/locales/en.ts b/desktop/src/i18n/locales/en.ts index 39f2393b..f45e3859 100644 --- a/desktop/src/i18n/locales/en.ts +++ b/desktop/src/i18n/locales/en.ts @@ -444,7 +444,9 @@ export const en = { // Settings > Adapters 'settings.tab.adapters': 'IM Adapters', - 'settings.adapters.description': 'Configure IM adapters to chat with Claude Code via WeChat, DingTalk, WhatsApp, Telegram, or Feishu.', + 'settings.adapters.description': 'Configure IM adapters to chat with Claude Code via Telegram, WeChat, DingTalk, WhatsApp, or Feishu. For setup details, see', + 'settings.adapters.configurationDocs': 'documentation link', + 'settings.adapters.descriptionAfterDocs': '.', 'settings.adapters.telegram': 'Telegram', 'settings.adapters.feishu': 'Feishu', 'settings.adapters.wechat': 'WeChat', diff --git a/desktop/src/i18n/locales/jp.ts b/desktop/src/i18n/locales/jp.ts index f47eaa1c..7ffd862f 100644 --- a/desktop/src/i18n/locales/jp.ts +++ b/desktop/src/i18n/locales/jp.ts @@ -446,7 +446,9 @@ export const jp: Record = { // Settings > Adapters 'settings.tab.adapters': 'IM アダプター', - 'settings.adapters.description': 'WeChat、DingTalk、WhatsApp、Telegram、Feishu 経由で Claude Code とチャットできるよう IM アダプターを設定します。', + 'settings.adapters.description': 'Telegram、WeChat、DingTalk、WhatsApp、Feishu 経由で Claude Code とチャットできるよう IM アダプターを設定します。詳しい設定手順は', + 'settings.adapters.configurationDocs': 'ドキュメントリンク', + 'settings.adapters.descriptionAfterDocs': 'を参照してください。', 'settings.adapters.telegram': 'Telegram', 'settings.adapters.feishu': 'Feishu', 'settings.adapters.wechat': 'WeChat', diff --git a/desktop/src/i18n/locales/kr.ts b/desktop/src/i18n/locales/kr.ts index d69c7ba2..be7d79c1 100644 --- a/desktop/src/i18n/locales/kr.ts +++ b/desktop/src/i18n/locales/kr.ts @@ -446,7 +446,9 @@ export const kr: Record = { // Settings > Adapters 'settings.tab.adapters': 'IM 어댑터', - 'settings.adapters.description': 'WeChat, DingTalk, WhatsApp, Telegram, Feishu를 통해 Claude Code와 채팅할 수 있도록 IM 어댑터를 구성합니다.', + 'settings.adapters.description': 'Telegram, WeChat, DingTalk, WhatsApp, Feishu를 통해 Claude Code와 채팅할 수 있도록 IM 어댑터를 구성합니다. 자세한 설정은', + 'settings.adapters.configurationDocs': '문서 링크', + 'settings.adapters.descriptionAfterDocs': '를 참고하세요.', 'settings.adapters.telegram': 'Telegram', 'settings.adapters.feishu': 'Feishu', 'settings.adapters.wechat': 'WeChat', diff --git a/desktop/src/i18n/locales/zh-TW.ts b/desktop/src/i18n/locales/zh-TW.ts index fa49b3ea..28654fcc 100644 --- a/desktop/src/i18n/locales/zh-TW.ts +++ b/desktop/src/i18n/locales/zh-TW.ts @@ -446,7 +446,9 @@ export const zh: Record = { // Settings > Adapters 'settings.tab.adapters': 'IM 接入', - 'settings.adapters.description': '配置即時通訊介面卡,透過微信、釘釘、WhatsApp、Telegram 或飛書與 Claude Code 對話。', + 'settings.adapters.description': '配置即時通訊介面卡,透過 Telegram、微信、釘釘、WhatsApp 或飛書與 Claude Code 對話。首次配置請參考', + 'settings.adapters.configurationDocs': '文件地址', + 'settings.adapters.descriptionAfterDocs': '。', 'settings.adapters.telegram': 'Telegram', 'settings.adapters.feishu': '飛書', 'settings.adapters.wechat': '微信', diff --git a/desktop/src/i18n/locales/zh.ts b/desktop/src/i18n/locales/zh.ts index 17cfbe15..cb6e3833 100644 --- a/desktop/src/i18n/locales/zh.ts +++ b/desktop/src/i18n/locales/zh.ts @@ -446,7 +446,9 @@ export const zh: Record = { // Settings > Adapters 'settings.tab.adapters': 'IM 接入', - 'settings.adapters.description': '配置即时通讯适配器,通过微信、钉钉、WhatsApp、Telegram 或飞书与 Claude Code 对话。', + 'settings.adapters.description': '配置即时通讯适配器,通过 Telegram、微信、钉钉、WhatsApp 或飞书与 Claude Code 对话。首次配置请参考', + 'settings.adapters.configurationDocs': '文档地址', + 'settings.adapters.descriptionAfterDocs': '。', 'settings.adapters.telegram': 'Telegram', 'settings.adapters.feishu': '飞书', 'settings.adapters.wechat': '微信', diff --git a/desktop/src/pages/AdapterSettings.test.tsx b/desktop/src/pages/AdapterSettings.test.tsx index ac137ee3..e6ed8d15 100644 --- a/desktop/src/pages/AdapterSettings.test.tsx +++ b/desktop/src/pages/AdapterSettings.test.tsx @@ -8,6 +8,7 @@ import { useSettingsStore } from '../stores/settingsStore' import type { AdapterFileConfig } from '../types/adapter' const FEISHU_CREATE_BOT_URL = 'https://open.feishu.cn/page/openclaw?form=multiAgent' +const IM_CONFIG_DOCS_URL = 'https://claudecode-haha.relakkesyang.org/im/' function renderAdapterSettings( config: AdapterFileConfig, @@ -44,9 +45,25 @@ afterEach(() => { useSettingsStore.setState(useSettingsStore.getInitialState(), true) }) +describe('AdapterSettings IM setup entry', () => { + it('shows Telegram first by default and links to the unified documentation URL', () => { + renderAdapterSettings({}) + + const tabs = screen.getAllByRole('tab').map((tab) => tab.textContent) + expect(tabs).toEqual(['Telegram', 'Feishu', 'WeChat', 'DingTalk', 'WhatsApp']) + expect(screen.getByRole('tab', { name: 'Telegram' })).toHaveAttribute('aria-selected', 'true') + expect(screen.getByLabelText('Bot Token')).toBeInTheDocument() + expect(screen.getByRole('link', { name: 'documentation link' })).toHaveAttribute( + 'href', + IM_CONFIG_DOCS_URL, + ) + }) +}) + describe('AdapterSettings Feishu onboarding', () => { it('shows the documented one-click Feishu bot link before credentials are configured', () => { renderAdapterSettings({}) + fireEvent.click(screen.getByRole('tab', { name: 'Feishu' })) expect(screen.getByText('Need a Feishu bot?')).toBeInTheDocument() expect(screen.getByText(/OpenClaw template/)).toBeInTheDocument() @@ -65,6 +82,7 @@ describe('AdapterSettings Feishu onboarding', () => { appSecret: '****cret', }, }) + fireEvent.click(screen.getByRole('tab', { name: 'Feishu' })) expect(screen.queryByRole('link', { name: /create feishu bot/i })).not.toBeInTheDocument() expect(screen.queryByText('Need a Feishu bot?')).not.toBeInTheDocument() diff --git a/desktop/src/pages/AdapterSettings.tsx b/desktop/src/pages/AdapterSettings.tsx index c181635f..215ace9b 100644 --- a/desktop/src/pages/AdapterSettings.tsx +++ b/desktop/src/pages/AdapterSettings.tsx @@ -7,11 +7,12 @@ import { DirectoryPicker } from '../components/shared/DirectoryPicker' import { ConfirmDialog } from '../components/shared/ConfirmDialog' import QRCode from 'qrcode' -type ImTab = 'feishu' | 'wechat' | 'dingtalk' | 'whatsapp' | 'telegram' +type ImTab = 'telegram' | 'feishu' | 'wechat' | 'dingtalk' | 'whatsapp' type ImPlatform = 'telegram' | 'feishu' | 'wechat' | 'dingtalk' | 'whatsapp' type AdapterUnbindTarget = 'wechatAccount' | 'dingtalkBot' | 'whatsappAccount' const FEISHU_CREATE_BOT_URL = 'https://open.feishu.cn/page/openclaw?form=multiAgent' +const IM_CONFIG_DOCS_URL = 'https://claudecode-haha.relakkesyang.org/im/' export function AdapterSettings() { const t = useTranslation() @@ -33,8 +34,8 @@ export function AdapterSettings() { unbindWhatsAppAccount, } = useAdapterStore() - // Active IM tab —— Feishu 默认展示,在前 - const [activeIm, setActiveIm] = useState('feishu') + // Active IM tab + const [activeIm, setActiveIm] = useState('telegram') // Server —— serverUrl 不再暴露在 UI 里(见下方 Server URL 注释), // 桌面端用 sidecar env var 注入动态端口。 @@ -498,7 +499,19 @@ export function AdapterSettings() {
{/* Description */}
-

{t('settings.adapters.description')}

+

+ {t('settings.adapters.description')}{' '} + + {t('settings.adapters.configurationDocs')} + + + {t('settings.adapters.descriptionAfterDocs')} +

{/* Pairing */} @@ -587,9 +600,14 @@ export function AdapterSettings() {

- {/* IM Adapter Tabs —— Feishu 默认在前,Telegram 在后 */} + {/* IM Adapter Tabs */}
+ setActiveIm('telegram')} + /> setActiveIm('whatsapp')} /> - setActiveIm('telegram')} - />
{activeIm === 'feishu' && (