From 2a4b9f4e5b5cded75eea5907fa761b8a9add9402 Mon Sep 17 00:00:00 2001 From: StarHeart Date: Sun, 29 Mar 2026 18:54:56 +0800 Subject: [PATCH] feat: support user agent config per sub (#1712) * feat: add user agent support in profile configuration * Introduced a new user agent field in profile settings, allowing users to specify a custom user agent. * Updated relevant components and localization files to support the new user agent feature. * Added a new pnpm workspace configuration for built dependencies. * feat: enhance profile settings with user agent input and toggle functionality * Added a user agent input field to the advanced profile settings. * Implemented toggle icons for showing/hiding advanced settings. * Updated layout to accommodate the new user agent input alongside the existing auth token field. * chore: remove pnpm workspace configuration for built dependencies --- src/main/config/profile.ts | 3 +- .../components/profiles/edit-info-modal.tsx | 11 +++++ src/renderer/src/locales/en-US.json | 2 + src/renderer/src/locales/fa-IR.json | 2 + src/renderer/src/locales/ru-RU.json | 2 + src/renderer/src/locales/zh-CN.json | 2 + src/renderer/src/locales/zh-TW.json | 2 + src/renderer/src/pages/profiles.tsx | 42 +++++++++++++------ src/shared/types.d.ts | 1 + 9 files changed, 53 insertions(+), 14 deletions(-) diff --git a/src/main/config/profile.ts b/src/main/config/profile.ts index fd91204..48b4339 100644 --- a/src/main/config/profile.ts +++ b/src/main/config/profile.ts @@ -248,6 +248,7 @@ export async function createProfile(item: Partial): Promise): Promise = { url: item.url, mixedPort, - userAgent: userAgent || `mihomo.party/v${app.getVersion()} (clash.meta)`, + userAgent: item.userAgent || userAgent || `mihomo.party/v${app.getVersion()} (clash.meta)`, authToken: item.authToken, substore: newItem.substore || false } diff --git a/src/renderer/src/components/profiles/edit-info-modal.tsx b/src/renderer/src/components/profiles/edit-info-modal.tsx index e0d3082..c56084b 100644 --- a/src/renderer/src/components/profiles/edit-info-modal.tsx +++ b/src/renderer/src/components/profiles/edit-info-modal.tsx @@ -108,6 +108,17 @@ const EditInfoModal: React.FC = (props) => { placeholder={t('profiles.editInfo.authTokenPlaceholder')} /> + + { + setValues({ ...values, userAgent: v || undefined }) + }} + placeholder={t('profiles.editInfo.userAgentPlaceholder')} + /> + { const [sortedItems, setSortedItems] = useState(items) const [useProxy, setUseProxy] = useState(false) const [authToken, setAuthToken] = useState('') + const [userAgent, setUserAgent] = useState('') const [showAdvanced, setShowAdvanced] = useState(false) const [subStoreImporting, setSubStoreImporting] = useState(false) const [importing, setImporting] = useState(false) @@ -135,10 +136,12 @@ const Profiles: React.FC = () => { type: 'remote', url, useProxy, - authToken: authToken || undefined + authToken: authToken || undefined, + userAgent: userAgent || undefined }) setUrl('') setAuthToken('') + setUserAgent('') setImporting(false) } const pageRef = useRef(null) @@ -300,7 +303,11 @@ const Profiles: React.FC = () => { isIconOnly onPress={() => setShowAdvanced(!showAdvanced)} > - 🔑 + {showAdvanced ? ( + + ) : ( + + )}