Conversation
…iases and utility-based component styling across the UI.
…s security normalization
…deprecated support in Quantumult X
…s, and update URI parser logic.
…UI config structure
…and adding explicit TLS parameter handling
… refined menu components, and dynamic quote categories.
There was a problem hiding this comment.
Pull request overview
This PR introduces internationalization (i18n) across the UI, updates the design system color/shape tokens (e.g., primary/secondary/success/danger, rounded-*, shadow-*), and extends the backend proxy conversion layer with additional protocol/transport capabilities (notably AnyTLS/Reality/ECH/XHTTP/SplitHTTP) plus an added Egern export target.
Changes:
- Added
vue-i18nand wired a global i18n instance; replaced many hardcoded UI strings with translation keys. - Refreshed UI styling across modals, cards, toasts, menus, and views to use the newer tokenized palette and rounded/shadow utilities.
- Enhanced proxy conversion/types: added Egern conversion support and expanded transport/protocol normalization and URI conversion parameters.
Reviewed changes
Copilot reviewed 72 out of 73 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/widgets/subscription/SubscriptionModal.vue | UI copy moved to i18n keys; styling token updates. |
| src/widgets/settings/StorageBackendSwitcher.vue | i18n-ified copy + tokenized styling; uses rich-text translations for hints. |
| src/widgets/settings/HelpModal.vue | i18n-ified help content and styling updates. |
| src/widgets/profile/SubscriptionExportModal.vue | i18n-ified export UI; adds Egern option; modal styling changes. |
| src/widgets/profile/ProfileModal.vue | i18n-ified labels/placeholders; styling token updates. |
| src/widgets/profile/ProfileCard.vue | i18n-ified labels/tooltips; styling and layout tweaks. |
| src/widgets/node/SubscriptionImportModal.vue | i18n-ified import modal text; styling token updates. |
| src/widgets/node/NodeModal.vue | i18n-ified node form text; styling token updates. |
| src/widgets/node/NodeDetailsModal.vue | i18n-ified node details UI text; styling token updates. |
| src/widgets/node/ManualNodeCard.vue | i18n-ified toast/tooltips and labels; styling token updates. |
| src/widgets/dashboard/NodeDistributionChart.vue | i18n-ified chart labels; switched chart colors to theme CSS variables. |
| src/views/SubscriptionsView.vue | i18n for buttons/menus/modals; menu items now computed. |
| src/views/ProfilesView.vue | i18n for buttons/menus/modals; menu items now computed. |
| src/views/NodesView.vue | i18n for UI text; menu items now computed. |
| src/views/LoginView.vue | i18n-ified validation/errors and UI copy; styling token updates. |
| src/stores/useThemeStore.ts | Theme names/tooltips moved to i18n. |
| src/stores/useSessionStore.ts | Store error messages moved to i18n; logs standardized to English. |
| src/stores/useAppStore.ts | Save toast strings moved to i18n; default save “reason” now localized. |
| src/i18n/index.ts | New i18n instance creation and locale bootstrap logic. |
| src/entities/subscription/model/useSubscriptions.ts | i18n-ified save reasons/messages and TG notification logging text. |
| src/entities/subscription/model/useSubscriptionManagement.ts | i18n-ified toasts/save reasons and TG message composition. |
| src/entities/subscription/model/useSubscriptionForm.ts | i18n-ified validation errors and modal button/title strings. |
| src/entities/profile/model/useProfiles.ts | i18n-ified toasts/save reasons. |
| src/entities/profile/model/useProfileManagement.ts | i18n-ified toasts/validation messaging. |
| src/entities/node/model/useSubscriptionImport.ts | i18n-ified import errors/toasts and logging text. |
| src/entities/node/model/useNodeSelection.ts | i18n-ified copy-selection toasts. |
| src/entities/node/model/useNodes.ts | i18n-ified save reasons (add/update/delete/etc). |
| src/entities/node/model/useNodeManagement.ts | i18n-ified toasts/save reasons. |
| src/entities/node/model/useNodeForm.ts | i18n-ified validation and UI strings; updated auto-name extraction check. |
| src/entities/node/model/useNodeFetching.ts | i18n-ified fetch errors/toasts; logs standardized to English. |
| src/common/utils/utils.ts | Logs standardized to English; introduced i18n usage for thrown error text. |
| src/common/utils/node.ts | Logs standardized to English. |
| src/common/utils/navigation.ts | Tab title/description changed to i18n keys (used by layout). |
| src/common/utils/importer.ts | Default “unnamed” values moved to i18n. |
| src/common/utils/format.ts | Expiry formatting changed to i18n keys (needs correction). |
| src/common/utils/api.ts | i18n-ified various error messages and logs standardized to English. |
| src/common/ui/Toast.vue | Updated toast styling to tokenized palette and rounded/shadow utilities. |
| src/common/ui/Pagination.vue | i18n-ified pagination labels; styling token updates. |
| src/common/ui/MoreMenu.vue | Styling token updates and improved menu visuals. |
| src/common/ui/EmptyState.vue | Styling token updates for empty states. |
| src/common/ui/ConfirmModal.vue | i18n defaults for confirm/cancel; updated styling and message parsing. |
| src/common/ui/BulkImportModal.vue | i18n-ified copy; styling token updates. |
| src/common/ui/BatchActionToolbar.vue | i18n-ified copy; updated accent API to primary/secondary/success palette. |
| src/common/ui/BaseModal.vue | i18n-ified default title/body/button labels; styling token updates. |
| src/app/main.ts | Registers i18n plugin in app bootstrap. |
| src/app/layouts/MainLayout.vue | Uses i18n keys for tab header title/description. |
| src/app/layouts/AppSidebar.vue | Adds language toggle; i18n-ifies sidebar labels/tooltips; styling updates. |
| src/app/layouts/AppFooter.vue | i18n-ifies footer text; styling token updates. |
| package.json | Adds vue-i18n dependency. |
| package-lock.json | Locks vue-i18n and intlify deps. |
| lib/backend/proxy/types.ts | Expands supported transports/platforms and adds XHTTP/ECH-related types/fields. |
| lib/backend/proxy/parser/normalizer.ts | Normalizes TLS defaults and adds cipher/vless/reality/ech/xhttp normalization. |
| lib/backend/proxy/converter/uri.ts | Adds additional query param exports (hop interval, tuic/wg extras, xhttp/httpupgrade, ech, vless extras). |
| lib/backend/proxy/converter/surge.ts | Improves Hysteria2 TLS handling; adds Reality params support. |
| lib/backend/proxy/converter/singbox.ts | Adds Naive support; expands hysteria/tuic params; adds ECH and SplitHTTP transport mapping. |
| lib/backend/proxy/converter/shadowrocket.ts | Adds Reality/ECH cleanup and tls-fingerprint mapping; strips internal fields. |
| lib/backend/proxy/converter/quantumultx.ts | Adds AnyTLS conversion; improves VLESS + Reality handling; adds H2 transport support. |
| lib/backend/proxy/converter/loon.ts | Adds Reality helpers; improves ALPN handling; adds gRPC path and ws early-data path handling. |
| lib/backend/proxy/converter/index.ts | Registers new Egern converter and routing. |
| lib/backend/proxy/converter/clash.ts | Adds ShadowTLS SS plugin mapping; adds ECH/XHTTP normalization; expands cleanup and field ordering. |
| lib/backend/proxy/constants.ts | Adds XHTTP/SplitHTTP transport constants and VMess security normalization helpers. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
112
to
116
| <div | ||
| v-if="show" | ||
| class="fixed inset-0 z-50 flex items-center justify-center p-4 sm:p-6" | ||
| class="fixed inset-0 z-99 flex items-center justify-center bg-black/60 p-4 sm:p-6" | ||
| @click.self="emit('update:show', false)" | ||
| > |
Comment on lines
156
to
+159
| <template #title> | ||
| <div class="flex items-center gap-3"> | ||
| <!-- 图标 --> | ||
| <div | ||
| v-if="props.showIcon" | ||
| class="flex h-12 w-12 shrink-0 items-center justify-center rounded-full" | ||
| :class="colorClasses[props.type].iconBg" | ||
| > | ||
| <svg | ||
| class="h-6 w-6" | ||
| :class="colorClasses[props.type].icon" | ||
| fill="none" | ||
| viewBox="0 0 24 24" | ||
| stroke="currentColor" | ||
| stroke-width="2" | ||
| > | ||
| <path | ||
| stroke-linecap="round" | ||
| stroke-linejoin="round" | ||
| :d="iconPaths[props.type]" | ||
| /> | ||
| </svg> | ||
| <div :class="['flex h-10 w-10 shrink-0 items-center justify-center rounded-full', iconBgClass]"> | ||
| <slot name="icon"> |
Comment on lines
+11
to
+12
| // Retrieve saved locale from localStorage, or default to zh | ||
| const savedLocale = localStorage.getItem('locale') || 'zh'; |
Comment on lines
34
to
38
| return { | ||
| date: expiryDate.toLocaleDateString(), | ||
| daysRemaining: diffDays < 0 ? '已过期' : diffDays === 0 ? '今天到期' : `${diffDays} 天后`, | ||
| daysRemaining: diffDays < 0 ? i18n.global.t('widgets.subscription.filterEditor.keywords.expired') : diffDays === 0 ? i18n.global.t('widgets.subscription.filterEditor.keywords.expired') : `${diffDays} ${i18n.global.t('widgets.subscription.filterEditor.keywords.remainingTraffic')}`, | ||
| style: style | ||
| }; |
Comment on lines
47
to
51
| const faqs = [ | ||
| { | ||
| q: '如何添加订阅?', | ||
| a: '在首页点击"添加订阅"按钮,输入订阅链接(支持 HTTP/HTTPS),系统会自动解析其中的节点信息。支持 Clash、Surge、V2Ray 等多种格式链接。', | ||
| q: t('widgets.settings.help.faq.add_q'), | ||
| a: t('widgets.settings.help.faq.add_a'), | ||
| icon: 'M12 4v16m8-8H4' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fix some ui,add i18n,quntumultX anytls,