From 9adfb6d1a023d1bbeb8572cde61f84d8f1188e25 Mon Sep 17 00:00:00 2001 From: "github-action[bot]" Date: Fri, 24 May 2024 20:29:35 +0200 Subject: [PATCH] Update On Fri May 24 20:29:34 CEST 2024 --- .github/update.log | 1 + .../.github/workflows/build-debug.yaml | 2 +- .../.github/workflows/build-release.yaml | 2 +- .../workflows/update-dependencies.yaml | 10 +- clash-nyanpasu/.github/workflows/dev.yaml | 4 + clash-nyanpasu/backend/Cargo.lock | 35 +- clash-nyanpasu/backend/tauri/Cargo.toml | 2 +- .../frontend/interface/ipc/useClash.ts | 47 ++- .../frontend/interface/package.json | 2 +- .../frontend/interface/service/tauri.ts | 14 + clash-nyanpasu/frontend/nyanpasu/package.json | 9 +- .../profiles/new-profile-button.tsx | 186 +-------- .../components/profiles/profile-dialog.tsx | 219 ++++++++++ .../src/components/profiles/quick-import.tsx | 4 + .../components/floatingButton/index.tsx | 2 +- .../ui/materialYou/components/index.ts | 1 + .../frontend/ui/materialYou/createTheme.ts | 4 + .../themeComponents/MuiLinearProgress.ts | 14 + .../ui/materialYou/themeComponents/MuiMenu.ts | 10 + .../ui/materialYou/themeComponents/index.ts | 2 + clash-nyanpasu/frontend/ui/package.json | 4 +- clash-nyanpasu/package.json | 2 +- clash-nyanpasu/pnpm-lock.yaml | 273 +++++------- clash-nyanpasu/scripts/package.json | 3 +- clash-nyanpasu/scripts/telegram-notify.ts | 21 +- clash-verge-rev/src/locales/fa.json | 255 ++++++++++- echo/examples/block.json | 36 ++ echo/go.mod | 35 +- echo/go.sum | 67 +-- echo/internal/constant/constant.go | 2 + echo/internal/relay/conf/cfg.go | 16 +- echo/internal/transporter/base.go | 34 +- .../firmware/linux-firmware/realtek.mk | 2 +- ...ediatek-add-support-for-coherent-DMA.patch | 9 + ...ediatek-add-support-for-coherent-DMA.patch | 9 + openwrt-packages/adguardhome/Makefile | 6 +- openwrt-packages/alist/Makefile | 5 +- .../Ryujinx.Graphics.Vulkan/PipelineState.cs | 4 +- .../.github/workflows/build-and-test.yml | 10 +- .../.github/workflows/build-msrv.yml | 10 +- .../workflows/build-nightly-release.yml | 18 +- .../.github/workflows/build-release.yml | 18 +- .../.github/workflows/clippy-check.yml | 10 +- shadowsocks-rust/Cargo.lock | 395 ++++++++++-------- shadowsocks-rust/Cargo.toml | 45 +- shadowsocks-rust/Dockerfile | 2 +- shadowsocks-rust/clippy.toml | 1 + .../crates/shadowsocks-service/Cargo.toml | 15 +- .../crates/shadowsocks-service/build.rs | 11 - .../src/local/fake_dns/manager.rs | 61 +-- .../src/local/fake_dns/proto.rs | 55 +++ .../src/local/fake_dns/proto/fake_dns.proto | 22 - .../src/local/fake_dns/proto/mod.rs | 3 - .../src/local/tun/fake_tun.rs | 144 +++++++ .../shadowsocks-service/src/local/tun/mod.rs | 24 +- .../src/local/tun/sys/mod.rs | 3 + .../src/local/tun/sys/others.rs | 23 + .../src/local/tun/sys/unix/android.rs | 12 +- .../src/local/tun/sys/unix/apple/macos.rs | 9 +- .../src/local/tun/sys/unix/apple/others.rs | 9 +- .../src/local/tun/sys/unix/bsd.rs | 9 +- .../src/local/tun/sys/unix/linux.rs | 12 +- .../src/local/tun/sys/unix/mod.rs | 3 + .../src/local/tun/sys/unix/others.rs | 23 + .../src/local/tun/sys/windows/mod.rs | 12 +- .../crates/shadowsocks/Cargo.toml | 4 +- shadowsocks-rust/snap/snapcraft.yaml | 5 +- shadowsocks-rust/src/service/local.rs | 8 +- .../app/src/main/res/values-vi/strings.xml | 142 +++---- yass/.circleci/config.yml | 4 + yass/.cirrus.yml | 4 - yass/.github/workflows/clang-tidy.yml | 14 + yass/.github/workflows/compiler.yml | 20 + .../workflows/releases-android-binary.yml | 6 + yass/.github/workflows/releases-deb.yml | 2 +- .../workflows/releases-freebsd-binary.yml | 6 + .../workflows/releases-linux-binary.yml | 6 + yass/.github/workflows/releases-mingw-new.yml | 6 + yass/.github/workflows/releases-mingw.yml | 9 +- .../workflows/releases-openwrt-binary.yml | 6 + yass/.github/workflows/releases-windows.yml | 17 +- yass/.github/workflows/sanitizers.yml | 6 + yass/README.md | 70 ++-- yass/doc/yass_cli.1 | 5 +- yass/doc/yass_cli.md | 5 +- yass/doc/yass_server.1 | 8 +- yass/doc/yass_server.md | 8 +- yass/docker/centos7.Dockerfile | 7 + yass/docker/centos8.Dockerfile | 7 + yass/docker/centos9.Dockerfile | 7 + yass/docker/fedora39.Dockerfile | 7 + yass/docker/opensuse15.Dockerfile | 7 + yass/openwrt/Makefile.tmpl | 1 - yass/scripts/build-deb.sh | 16 +- yass/scripts/build-rpm.sh | 16 +- yass/src/config/config.cpp | 8 +- yass/src/config/config_tls.cpp | 14 +- yass/src/net/asio_ssl.cpp | 12 +- yass/tools/build.go | 32 +- yt-dlp/yt_dlp/extractor/_extractors.py | 1 - yt-dlp/yt_dlp/extractor/orf.py | 183 +------- 101 files changed, 1892 insertions(+), 1099 deletions(-) create mode 100644 clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx create mode 100644 clash-nyanpasu/frontend/ui/materialYou/themeComponents/MuiLinearProgress.ts create mode 100644 clash-nyanpasu/frontend/ui/materialYou/themeComponents/MuiMenu.ts create mode 100644 echo/examples/block.json create mode 100644 shadowsocks-rust/clippy.toml delete mode 100644 shadowsocks-rust/crates/shadowsocks-service/build.rs create mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto.rs delete mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto/fake_dns.proto delete mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/fake_dns/proto/mod.rs create mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/tun/fake_tun.rs create mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/others.rs create mode 100644 shadowsocks-rust/crates/shadowsocks-service/src/local/tun/sys/unix/others.rs diff --git a/.github/update.log b/.github/update.log index 18263b329d..5452d633b5 100644 --- a/.github/update.log +++ b/.github/update.log @@ -656,3 +656,4 @@ Update On Mon May 20 20:29:32 CEST 2024 Update On Tue May 21 20:28:45 CEST 2024 Update On Wed May 22 20:31:05 CEST 2024 Update On Thu May 23 20:29:12 CEST 2024 +Update On Fri May 24 20:29:24 CEST 2024 diff --git a/clash-meta-android/.github/workflows/build-debug.yaml b/clash-meta-android/.github/workflows/build-debug.yaml index 76f9733299..9f8e46f9b0 100644 --- a/clash-meta-android/.github/workflows/build-debug.yaml +++ b/clash-meta-android/.github/workflows/build-debug.yaml @@ -23,7 +23,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.20" + go-version: "1.22" - uses: actions/cache@v4 with: diff --git a/clash-meta-android/.github/workflows/build-release.yaml b/clash-meta-android/.github/workflows/build-release.yaml index 1d81a8a89d..75389ee611 100644 --- a/clash-meta-android/.github/workflows/build-release.yaml +++ b/clash-meta-android/.github/workflows/build-release.yaml @@ -28,7 +28,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.20" + go-version: "1.22" - uses: actions/cache@v4 with: diff --git a/clash-meta-android/.github/workflows/update-dependencies.yaml b/clash-meta-android/.github/workflows/update-dependencies.yaml index 9ea637af2c..7b7130bb8d 100644 --- a/clash-meta-android/.github/workflows/update-dependencies.yaml +++ b/clash-meta-android/.github/workflows/update-dependencies.yaml @@ -24,7 +24,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: "1.20" + go-version: "1.22" - uses: actions/cache@v4 with: @@ -39,14 +39,20 @@ jobs: run: | ./gradlew :core:downloadGeoipDatabase + - name: Install update-go-mod-replace + run: | + go install github.com/metacubex/update-go-mod-replace@latest + - name: Update Foss Gomod run: | cd ${{ github.workspace }}/core/src/foss/golang/ + update-go-mod-replace ${{ github.workspace }}/core/src/foss/golang/clash/go.mod $(pwd)/go.mod go mod tidy - name: Update Main Gomod run: | - cd ${{ github.workspace }}/core/src/main/golang/native/ + cd ${{ github.workspace }}/core/src/main/golang/ + update-go-mod-replace ${{ github.workspace }}/core/src/foss/golang/clash/go.mod $(pwd)/go.mod go mod tidy - uses: tibdex/github-app-token@v2 diff --git a/clash-nyanpasu/.github/workflows/dev.yaml b/clash-nyanpasu/.github/workflows/dev.yaml index 574d760411..9c5c3b1f6f 100644 --- a/clash-nyanpasu/.github/workflows/dev.yaml +++ b/clash-nyanpasu/.github/workflows/dev.yaml @@ -210,6 +210,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: latest + - uses: pnpm/action-setup@v4 name: Install pnpm with: diff --git a/clash-nyanpasu/backend/Cargo.lock b/clash-nyanpasu/backend/Cargo.lock index c15ef4e6d4..6b8c1fc72f 100644 --- a/clash-nyanpasu/backend/Cargo.lock +++ b/clash-nyanpasu/backend/Cargo.lock @@ -932,7 +932,7 @@ dependencies = [ "windows-sys 0.52.0", "winreg 0.52.0", "wry", - "zip 1.3.0", + "zip 2.0.0", "zip-extensions", ] @@ -945,15 +945,6 @@ dependencies = [ "error-code", ] -[[package]] -name = "cmake" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" -dependencies = [ - "cc", -] - [[package]] name = "cocoa" version = "0.24.1" @@ -1804,7 +1795,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ "crc32fast", - "libz-ng-sys", "miniz_oxide", ] @@ -3114,16 +3104,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libz-ng-sys" -version = "1.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5" -dependencies = [ - "cmake", - "libc", -] - [[package]] name = "line-wrap" version = "0.2.0" @@ -5781,9 +5761,9 @@ checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "tauri" -version = "1.6.6" +version = "1.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f99c42ed6e39885ad1bb14317b0379bc99aad7ffe20db517cd761267b30343" +checksum = "67c7177b6be45bbb875aa239578f5adc982a1b3d5ea5b315ccd100aeb0043374" dependencies = [ "anyhow", "base64 0.21.7", @@ -5795,6 +5775,7 @@ dependencies = [ "encoding_rs", "flate2", "futures-util", + "getrandom 0.2.15", "glib", "glob", "gtk", @@ -5939,9 +5920,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "0.14.7" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2af45aeb15b1cadb4ca91248423f4438a0864b836298cecb436892afbfdff4" +checksum = "1989b3b4d611f5428b3414a4abae6fa6df30c7eb8ed33250ca90a5f7e5bb3655" dependencies = [ "arboard", "cocoa 0.24.1", @@ -7852,9 +7833,9 @@ dependencies = [ [[package]] name = "zip" -version = "1.3.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f4a27345eb6f7aa7bd015ba7eb4175fa4e1b462a29874b779e0bbcf96c6ac7" +checksum = "fccb210625924ecbbe92f9bb497d04b167b64fe5540cec75f10b16e0c51ee92b" dependencies = [ "aes", "arbitrary", diff --git a/clash-nyanpasu/backend/tauri/Cargo.toml b/clash-nyanpasu/backend/tauri/Cargo.toml index 9db29cb205..cfb370f43c 100644 --- a/clash-nyanpasu/backend/tauri/Cargo.toml +++ b/clash-nyanpasu/backend/tauri/Cargo.toml @@ -52,7 +52,7 @@ window-vibrancy = { version = "0.5.0" } window-shadows = { version = "0.2.2" } wry = { version = "0.24.6" } semver = "1.0" -zip = "1.2.3" +zip = "2.0.0" zip-extensions = "0.6.2" gunzip = { version = "0.1.0", git = "https://github.com/TechHara/gunzip.git" } tempfile = "3.9.0" diff --git a/clash-nyanpasu/frontend/interface/ipc/useClash.ts b/clash-nyanpasu/frontend/interface/ipc/useClash.ts index a6334c8f39..b2da65cf11 100644 --- a/clash-nyanpasu/frontend/interface/ipc/useClash.ts +++ b/clash-nyanpasu/frontend/interface/ipc/useClash.ts @@ -42,17 +42,10 @@ export const useClash = () => { const getProfiles = useSWR("getProfiles", tauri.getProfiles); - const setProfiles = async (payload: { - index: string; - profile: Partial; - }) => { - try { - await tauri.setProfiles(payload); + const setProfiles = async (index: string, profile: Partial) => { + await tauri.setProfiles({ index, profile }); - await getProfiles.mutate(); - } finally { - return getProfiles.data; - } + await getProfiles.mutate(); }; const setProfilesConfig = async (profiles: Profile.Config) => { @@ -65,6 +58,36 @@ export const useClash = () => { } }; + const createProfile = async (item: Partial, data?: string) => { + await tauri.createProfile(item, data); + + await getProfiles.mutate(); + }; + + const getProfileFile = async (id?: string) => { + if (id) { + const result = await tauri.readProfileFile(id); + + if (result) { + return result; + } else { + return ""; + } + } else { + return ""; + } + }; + + const importProfile = async (url: string, option?: Profile.Option) => { + await tauri.importProfile(url, option); + + await getProfiles.mutate(); + }; + + const getRuntimeLogs = useSWR("getRuntimeLogs", tauri.getRuntimeLogs, { + refreshInterval: 1000, + }); + return { getClashInfo, setClashInfo, @@ -77,5 +100,9 @@ export const useClash = () => { getProfiles, setProfiles, setProfilesConfig, + createProfile, + importProfile, + getProfileFile, + getRuntimeLogs, }; }; diff --git a/clash-nyanpasu/frontend/interface/package.json b/clash-nyanpasu/frontend/interface/package.json index 402c152477..484c4934d9 100644 --- a/clash-nyanpasu/frontend/interface/package.json +++ b/clash-nyanpasu/frontend/interface/package.json @@ -10,6 +10,6 @@ "swr": "2.2.5" }, "devDependencies": { - "@types/react": "18.3.2" + "@types/react": "18.3.3" } } diff --git a/clash-nyanpasu/frontend/interface/service/tauri.ts b/clash-nyanpasu/frontend/interface/service/tauri.ts index daf7e9e825..606ba3355e 100644 --- a/clash-nyanpasu/frontend/interface/service/tauri.ts +++ b/clash-nyanpasu/frontend/interface/service/tauri.ts @@ -29,6 +29,10 @@ export const getRuntimeExists = async () => { return await invoke("get_runtime_exists"); }; +export const getRuntimeLogs = async () => { + return await invoke>("get_runtime_logs"); +}; + export const createProfile = async ( item: Partial, fileData?: string | null, @@ -59,6 +63,16 @@ export const saveProfileFile = async (index: string, fileData: string) => { return await invoke("save_profile_file", { index, fileData }); }; +export const importProfile = async ( + url: string, + option: Profile.Option = { with_proxy: true }, +) => { + return await invoke("import_profile", { + url, + option, + }); +}; + export const getCoreVersion = async ( coreType: Required["clash_core"], ) => { diff --git a/clash-nyanpasu/frontend/nyanpasu/package.json b/clash-nyanpasu/frontend/nyanpasu/package.json index 4c2dcb4582..7e9da2cc0a 100644 --- a/clash-nyanpasu/frontend/nyanpasu/package.json +++ b/clash-nyanpasu/frontend/nyanpasu/package.json @@ -23,19 +23,20 @@ "@nyanpasu/interface": "workspace:^", "@nyanpasu/ui": "workspace:^", "@tauri-apps/api": "1.5.6", - "ahooks": "3.7.11", + "ahooks": "3.8.0", "axios": "1.7.2", "dayjs": "1.11.11", "framer-motion": "11.2.6", "i18next": "23.11.5", "jotai": "2.8.1", - "monaco-editor": "0.48.0", + "monaco-editor": "0.49.0", "mui-color-input": "2.0.3", "react": "18.3.1", "react-dom": "18.3.1", "react-error-boundary": "4.0.13", "react-fast-marquee": "1.6.4", "react-hook-form": "7.51.5", + "react-hook-form-mui": "7.0.0", "react-i18next": "14.1.2", "react-markdown": "9.0.1", "react-router-dom": "6.23.1", @@ -48,12 +49,12 @@ "@emotion/babel-plugin": "11.11.0", "@emotion/react": "11.11.4", "@types/js-cookie": "3.0.6", - "@types/react": "18.3.2", + "@types/react": "18.3.3", "@types/react-dom": "18.3.0", "@types/react-transition-group": "4.4.10", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", - "@vitejs/plugin-react": "4.2.1", + "@vitejs/plugin-react": "4.3.0", "sass": "1.77.2", "shiki": "1.6.0", "vite": "5.2.11", diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx index 3f6d1c9cf8..82ec60b6fc 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/new-profile-button.tsx @@ -1,196 +1,18 @@ import { Add } from "@mui/icons-material"; -import { Profile, useClash } from "@nyanpasu/interface"; -import { BaseDialog, FloatingButton } from "@nyanpasu/ui"; -import { useRef, useState } from "react"; -import { useForm, Controller } from "react-hook-form"; -import { SelectElement, TextFieldElement } from "react-hook-form-mui"; -import { useTranslation } from "react-i18next"; -import { version } from "~/package.json"; -import { LabelSwitch } from "../setting/modules/clash-field"; -import { ReadProfile } from "./read-profile"; -import { InputAdornment } from "@mui/material"; +import { FloatingButton } from "@nyanpasu/ui"; +import { useState } from "react"; +import { ProfileDialog } from "./profile-dialog"; export const NewProfileButton = () => { - const { t } = useTranslation(); - - const { createProfile } = useClash(); - const [open, setOpen] = useState(false); - const localProfile = useRef(""); - - const [localProfileMessage, setLocalProfileMessage] = useState(""); - - const { control, watch, handleSubmit, reset } = useForm({ - defaultValues: { - type: "remote", - name: `New Profile`, - desc: "", - url: "", - option: { - // user_agent: "", - with_proxy: false, - self_proxy: false, - }, - }, - }); - - const isRemote = watch("type") === "remote"; - - const commonProps = { - autoComplete: "off", - autoCorrect: "off", - fullWidth: true, - }; - - const handleProfileSelected = (content: string) => { - localProfile.current = content; - - setLocalProfileMessage(""); - }; - - const onSubmit = handleSubmit(async (form) => { - try { - if (isRemote) { - await createProfile(form); - } else { - if (localProfile.current) { - await createProfile(form, localProfile.current); - } else { - setLocalProfileMessage("Not selected profile"); - - return; - } - } - - setTimeout(() => reset(), 300); - - setOpen(false); - } finally { - } - }); - return ( <> setOpen(true)}> - setOpen(false)} - onOk={onSubmit} - divider - > -
- - - - - - - {isRemote ? ( - <> - - - - - mins - ), - }} - /> - - ( - - )} - /> - - ( - - )} - /> - - ) : ( - <> - - - {localProfileMessage && ( -
{localProfileMessage}
- )} - - )} -
-
+ setOpen(false)} /> ); }; diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx new file mode 100644 index 0000000000..a3cfbad8bb --- /dev/null +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/profile-dialog.tsx @@ -0,0 +1,219 @@ +import { Profile, useClash } from "@nyanpasu/interface"; +import { BaseDialog } from "@nyanpasu/ui"; +import { useRef, useState } from "react"; +import { + Controller, + SelectElement, + TextFieldElement, + useForm, +} from "react-hook-form-mui"; +import { useTranslation } from "react-i18next"; +import { version } from "~/package.json"; +import { LabelSwitch } from "../setting/modules/clash-field"; +import { ReadProfile } from "./read-profile"; +import { InputAdornment } from "@mui/material"; + +export interface ProfileDialogProps { + profile?: Profile.Item; + open: boolean; + onClose: () => void; +} + +export const ProfileDialog = ({ + profile, + open, + onClose, +}: ProfileDialogProps) => { + const { t } = useTranslation(); + + const { createProfile, setProfiles } = useClash(); + + const localProfile = useRef(""); + + const [localProfileMessage, setLocalProfileMessage] = useState(""); + + const { control, watch, handleSubmit, reset } = useForm({ + defaultValues: profile || { + type: "remote", + name: `New Profile`, + desc: "", + url: "", + option: { + // user_agent: "", + with_proxy: false, + self_proxy: false, + }, + }, + }); + + const isRemote = watch("type") === "remote"; + + const isEdit = Boolean(profile); + + const commonProps = { + autoComplete: "off", + autoCorrect: "off", + fullWidth: true, + }; + + const handleProfileSelected = (content: string) => { + localProfile.current = content; + + setLocalProfileMessage(""); + }; + + const onSubmit = handleSubmit(async (form) => { + const toCreate = async () => { + if (isRemote) { + await createProfile(form); + } else { + if (localProfile.current) { + await createProfile(form, localProfile.current); + } else { + setLocalProfileMessage("Not selected profile"); + + return; + } + } + }; + + const toUpdate = async () => { + await setProfiles(form.uid, form); + }; + + try { + if (isEdit) { + await toUpdate(); + } else { + await toCreate(); + } + + setTimeout(() => reset(), 300); + + onClose(); + } finally { + } + }); + + return ( + onClose()} + onOk={onSubmit} + divider + > +
+ {!isEdit && ( + + )} + + + + + + {isRemote ? ( + <> + + + + + mins + ), + }} + /> + + ( + + )} + /> + + ( + + )} + /> + + ) : ( + !isEdit && ( + <> + + + {localProfileMessage && ( +
{localProfileMessage}
+ )} + + ) + )} +
+
+ ); +}; diff --git a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/quick-import.tsx b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/quick-import.tsx index 270e1dc754..abe8c8e663 100644 --- a/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/quick-import.tsx +++ b/clash-nyanpasu/frontend/nyanpasu/src/components/profiles/quick-import.tsx @@ -83,6 +83,10 @@ export const QuickImport = () => { sx: { borderRadius: 7, backgroundColor: alpha(palette.primary.main, 0.1), + + fieldset: { + border: "none", + }, }, endAdornment: endAdornment(), }; diff --git a/clash-nyanpasu/frontend/ui/materialYou/components/floatingButton/index.tsx b/clash-nyanpasu/frontend/ui/materialYou/components/floatingButton/index.tsx index 1b3f3a1e2c..47ece3d9f6 100644 --- a/clash-nyanpasu/frontend/ui/materialYou/components/floatingButton/index.tsx +++ b/clash-nyanpasu/frontend/ui/materialYou/components/floatingButton/index.tsx @@ -17,7 +17,7 @@ export const FloatingButton = ({