Skip to content

One - #51

Merged
binbankm merged 11 commits into
mainfrom
one
Jun 16, 2026
Merged

One#51
binbankm merged 11 commits into
mainfrom
one

Conversation

@binbankm

Copy link
Copy Markdown
Owner

fix some ui,add i18n,quntumultX anytls,

Copilot AI review requested due to automatic review settings June 16, 2026 13:59
@binbankm
binbankm merged commit b9493c9 into main Jun 16, 2026
2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-i18n and 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 thread src/i18n/index.ts
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'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants