chore: rebrand to FlowerRealm; update links; add Debian packaging; docs: quick Linux x64 build

This commit is contained in:
FlowerRealm 2025-10-18 20:41:16 +08:00
parent 815ad26d00
commit fdcb713a7d
17 changed files with 52 additions and 48 deletions

View file

@ -16,24 +16,24 @@ jobs:
- name: Submit v2ray package to Windows Package Manager Community Repository - name: Submit v2ray package to Windows Package Manager Community Repository
run: | run: |
$wingetPackage = "2dust.v2rayN" $wingetPackage = "FlowerRealm.v2rayN"
$gitToken = "${{ secrets.PT_WINGET }}" $gitToken = "${{ secrets.PT_WINGET }}"
$github = Invoke-RestMethod -uri "https://api.github.com/repos/2dust/v2rayN/releases" $github = Invoke-RestMethod -uri "https://api.github.com/repos/FlowerRealm/v2rayN/releases"
$targetRelease = $github | Where-Object -Property prerelease -match 'False' | Select -First 1 $targetRelease = $github | Where-Object -Property prerelease -match 'False' | Select -First 1
$x64InstallerUrl = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'v2rayN-windows-64\.zip' | Select -ExpandProperty browser_download_url $x64InstallerUrl = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'v2rayN-windows-64\.zip' | Select -ExpandProperty browser_download_url
$arm64InstallerUrl = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'v2rayN-windows-arm64\.zip' | Select -ExpandProperty browser_download_url $arm64InstallerUrl = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'v2rayN-windows-arm64\.zip' | Select -ExpandProperty browser_download_url
$ver = $targetRelease.tag_name $ver = $targetRelease.tag_name
# getting latest wingetcreate file # getting latest wingetcreate file
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
Write-Host "Updating with both x64 and arm64 installers" Write-Host "Updating with both x64 and arm64 installers"
Write-Host "Version: $ver" Write-Host "Version: $ver"
Write-Host "x64 URL: $x64InstallerUrl" Write-Host "x64 URL: $x64InstallerUrl"
Write-Host "arm64 URL: $arm64InstallerUrl" Write-Host "arm64 URL: $arm64InstallerUrl"
.\wingetcreate.exe update $wingetPackage -s -v $ver -u "$x64InstallerUrl|x64" "$arm64InstallerUrl|arm64" -t $gitToken .\wingetcreate.exe update $wingetPackage -s -v $ver -u "$x64InstallerUrl|x64" "$arm64InstallerUrl|arm64" -t $gitToken

4
.gitignore vendored
View file

@ -17,8 +17,6 @@
mono_crash.* mono_crash.*
# Build results # Build results
build-area/
debian/
[Dd]ebug/ [Dd]ebug/
[Dd]ebugPublic/ [Dd]ebugPublic/
[Rr]elease/ [Rr]elease/
@ -141,7 +139,7 @@ _TeamCity*
# DotCover is a Code Coverage Tool # DotCover is a Code Coverage Tool
*.dotCover *.dotCover
修改 README 移除那段安装脚本说明
# AxoCover is a Code Coverage Tool # AxoCover is a Code Coverage Tool
.axoCover/* .axoCover/*
!.axoCover/settings.json !.axoCover/settings.json

2
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "v2rayN/GlobalHotKeys"] [submodule "v2rayN/GlobalHotKeys"]
path = v2rayN/GlobalHotKeys path = v2rayN/GlobalHotKeys
url = https://github.com/2dust/GlobalHotKeys url = https://github.com/FlowerRealm/GlobalHotKeys

View file

@ -21,6 +21,18 @@
- Use other runtime identifiers (`win-arm64`, `osx-x64`, etc.) similarly. - Use other runtime identifiers (`win-arm64`, `osx-x64`, etc.) similarly.
- Tests (NUnit): `dotnet test v2rayN/GlobalHotKeys/src/GlobalHotKeys.Test -c Release --collect:"XPlat Code Coverage"` - Tests (NUnit): `dotnet test v2rayN/GlobalHotKeys/src/GlobalHotKeys.Test -c Release --collect:"XPlat Code Coverage"`
### Quick Linux x64 build (single executable)
Minimal commands to produce a self-contained Linux x64 executable (with normal output):
```
git submodule update --init --recursive
dotnet publish v2rayN/v2rayN.Desktop/v2rayN.Desktop.csproj \
-c Release -r linux-x64 --self-contained true \
-o v2rayN/Release/linux-64
echo ./v2rayN/Release/linux-64/v2rayN
```
## Coding Style & Naming ## Coding Style & Naming
- Formatting from `.editorconfig`: UTF-8, CRLF, spaces=4. - Formatting from `.editorconfig`: UTF-8, CRLF, spaces=4.
- C#: filescoped namespaces; System usings first; braces required; prefer `var` when type is apparent; PascalCase for types/members; fields/private locals use camelCase. - C#: filescoped namespaces; System usings first; braces required; prefer `var` when type is apparent; PascalCase for types/members; fields/private locals use camelCase.

View file

@ -632,7 +632,7 @@ state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.> <one line to give the program's name and a brief idea of what it does.>
Copyright (C) 2019-Present 2dust Copyright (C) 2019-Present FlowerRealm
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: notice like this when it starts in an interactive mode:
v2rayN Copyright (C) 2019-Present 2dust v2rayN Copyright (C) 2019-Present FlowerRealm
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.

View file

@ -2,17 +2,11 @@
A GUI client for Windows, Linux and macOS, support [Xray](https://github.com/XTLS/Xray-core) A GUI client for Windows, Linux and macOS, support [Xray](https://github.com/XTLS/Xray-core)
and [sing-box](https://github.com/SagerNet/sing-box) and [sing-box](https://github.com/SagerNet/sing-box)
and [others](https://github.com/2dust/v2rayN/wiki/List-of-supported-cores) and [others](https://github.com/FlowerRealm/v2rayN/wiki/List-of-supported-cores)
[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/2dust/v2rayN)](https://github.com/2dust/v2rayN/commits/master) [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/FlowerRealm/v2rayN)](https://github.com/FlowerRealm/v2rayN/commits/master)
[![CodeFactor](https://www.codefactor.io/repository/github/2dust/v2rayn/badge)](https://www.codefactor.io/repository/github/2dust/v2rayn) [![GitHub Releases](https://img.shields.io/github/downloads/FlowerRealm/v2rayN/latest/total?logo=github)](https://github.com/FlowerRealm/v2rayN/releases)
[![GitHub Releases](https://img.shields.io/github/downloads/2dust/v2rayN/latest/total?logo=github)](https://github.com/2dust/v2rayN/releases)
[![Chat on Telegram](https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg)](https://t.me/v2rayn)
## How to use ## How to use
Read the [Wiki](https://github.com/2dust/v2rayN/wiki) for details. Read the [Wiki](https://github.com/FlowerRealm/v2rayN/wiki) for details.
## Telegram Channel
[github_2dust](https://t.me/github_2dust)

View file

@ -5,7 +5,7 @@ OutputPath="$2"
Version="$3" Version="$3"
FileName="v2rayN-${Arch}.zip" FileName="v2rayN-${Arch}.zip"
wget -nv -O $FileName "https://github.com/2dust/v2rayN-core-bin/raw/refs/heads/master/$FileName" wget -nv -O $FileName "https://github.com/FlowerRealm/v2rayN-core-bin/raw/refs/heads/master/$FileName"
7z x $FileName 7z x $FileName
cp -rf v2rayN-${Arch}/* $OutputPath cp -rf v2rayN-${Arch}/* $OutputPath
@ -16,7 +16,7 @@ cp -rf $OutputPath "${PackagePath}/opt/v2rayN"
echo "When this file exists, app will not store configs under this folder" > "${PackagePath}/opt/v2rayN/NotStoreConfigHere.txt" echo "When this file exists, app will not store configs under this folder" > "${PackagePath}/opt/v2rayN/NotStoreConfigHere.txt"
if [ $Arch = "linux-64" ]; then if [ $Arch = "linux-64" ]; then
Arch2="amd64" Arch2="amd64"
else else
Arch2="arm64" Arch2="arm64"
fi fi
@ -27,7 +27,7 @@ cat >"${PackagePath}/DEBIAN/control" <<-EOF
Package: v2rayN Package: v2rayN
Version: $Version Version: $Version
Architecture: $Arch2 Architecture: $Arch2
Maintainer: https://github.com/2dust/v2rayN Maintainer: https://github.com/FlowerRealm/v2rayN
Depends: desktop-file-utils, xdg-utils Depends: desktop-file-utils, xdg-utils
Description: A GUI client for Windows and Linux, support Xray core and sing-box-core and others Description: A GUI client for Windows and Linux, support Xray core and sing-box-core and others
EOF EOF

View file

@ -5,7 +5,7 @@ OutputPath="$2"
Version="$3" Version="$3"
FileName="v2rayN-${Arch}.zip" FileName="v2rayN-${Arch}.zip"
wget -nv -O $FileName "https://github.com/2dust/v2rayN-core-bin/raw/refs/heads/master/$FileName" wget -nv -O $FileName "https://github.com/FlowerRealm/v2rayN-core-bin/raw/refs/heads/master/$FileName"
7z x $FileName 7z x $FileName
cp -rf v2rayN-${Arch}/* $OutputPath cp -rf v2rayN-${Arch}/* $OutputPath
@ -32,7 +32,7 @@ cat >"$PackagePath/v2rayN.app/Contents/Info.plist" <<-EOF
<key>CFBundleIconName</key> <key>CFBundleIconName</key>
<string>AppIcon</string> <string>AppIcon</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>2dust.v2rayN</string> <string>FlowerRealm.v2rayN</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>v2rayN</string> <string>v2rayN</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>

View file

@ -6,7 +6,7 @@ OutputPath="$2"
OutputArch="v2rayN-${Arch}" OutputArch="v2rayN-${Arch}"
FileName="v2rayN-${Arch}.zip" FileName="v2rayN-${Arch}.zip"
wget -nv -O $FileName "https://github.com/2dust/v2rayN-core-bin/raw/refs/heads/master/$FileName" wget -nv -O $FileName "https://github.com/FlowerRealm/v2rayN-core-bin/raw/refs/heads/master/$FileName"
ZipPath64="./$OutputArch" ZipPath64="./$OutputArch"
mkdir $ZipPath64 mkdir $ZipPath64

View file

@ -193,7 +193,7 @@ choose_channel() {
get_latest_tag_latest() { get_latest_tag_latest() {
# Resolve /releases/latest → tag_name # Resolve /releases/latest → tag_name
curl -fsSL "https://api.github.com/repos/2dust/v2rayN/releases/latest" \ curl -fsSL "https://api.github.com/repos/FlowerRealm/v2rayN/releases/latest" \
| grep -Eo '"tag_name":\s*"v?[^"]+"' \ | grep -Eo '"tag_name":\s*"v?[^"]+"' \
| head -n1 \ | head -n1 \
| sed -E 's/.*"tag_name":\s*"v?([^"]+)".*/\1/' | sed -E 's/.*"tag_name":\s*"v?([^"]+)".*/\1/'
@ -202,7 +202,7 @@ get_latest_tag_latest() {
get_latest_tag_prerelease() { get_latest_tag_prerelease() {
# Resolve newest prerelease=true tag; prefer jq, fallback to sed/grep (no awk) # Resolve newest prerelease=true tag; prefer jq, fallback to sed/grep (no awk)
local json tag local json tag
json="$(curl -fsSL "https://api.github.com/repos/2dust/v2rayN/releases?per_page=20")" || return 1 json="$(curl -fsSL "https://api.github.com/repos/FlowerRealm/v2rayN/releases?per_page=20")" || return 1
# 1) Use jq if present # 1) Use jq if present
if command -v jq >/dev/null 2>&1; then if command -v jq >/dev/null 2>&1; then
@ -380,9 +380,9 @@ download_mihomo() {
local outroot="$1" local outroot="$1"
local url="" local url=""
if [[ "$RID_DIR" == "linux-arm64" ]]; then if [[ "$RID_DIR" == "linux-arm64" ]]; then
url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-arm64/bin/mihomo/mihomo" url="https://raw.githubusercontent.com/FlowerRealm/v2rayN-core-bin/refs/heads/master/v2rayN-linux-arm64/bin/mihomo/mihomo"
else else
url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-64/bin/mihomo/mihomo" url="https://raw.githubusercontent.com/FlowerRealm/v2rayN-core-bin/refs/heads/master/v2rayN-linux-64/bin/mihomo/mihomo"
fi fi
echo "[+] Download mihomo: $url" echo "[+] Download mihomo: $url"
mkdir -p "$outroot/bin/mihomo" mkdir -p "$outroot/bin/mihomo"
@ -438,13 +438,13 @@ download_geo_assets() {
geoip-private.srs geoip-cn.srs geoip-facebook.srs geoip-fastly.srs \ geoip-private.srs geoip-cn.srs geoip-facebook.srs geoip-fastly.srs \
geoip-google.srs geoip-netflix.srs geoip-telegram.srs geoip-twitter.srs; do geoip-google.srs geoip-netflix.srs geoip-telegram.srs geoip-twitter.srs; do
curl -fsSL -o "$srss_dir/$f" \ curl -fsSL -o "$srss_dir/$f" \
"https://raw.githubusercontent.com/2dust/sing-box-rules/rule-set-geoip/$f" || true "https://raw.githubusercontent.com/FlowerRealm/sing-box-rules/rule-set-geoip/$f" || true
done done
for f in \ for f in \
geosite-cn.srs geosite-gfw.srs geosite-greatfire.srs \ geosite-cn.srs geosite-gfw.srs geosite-greatfire.srs \
geosite-geolocation-cn.srs geosite-category-ads-all.srs geosite-private.srs; do geosite-geolocation-cn.srs geosite-category-ads-all.srs geosite-private.srs; do
curl -fsSL -o "$srss_dir/$f" \ curl -fsSL -o "$srss_dir/$f" \
"https://raw.githubusercontent.com/2dust/sing-box-rules/rule-set-geosite/$f" || true "https://raw.githubusercontent.com/FlowerRealm/sing-box-rules/rule-set-geosite/$f" || true
done done
# Unify to bin/ # Unify to bin/
@ -456,9 +456,9 @@ download_v2rayn_bundle() {
local outroot="$1" local outroot="$1"
local url="" local url=""
if [[ "$RID_DIR" == "linux-arm64" ]]; then if [[ "$RID_DIR" == "linux-arm64" ]]; then
url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-arm64.zip" url="https://raw.githubusercontent.com/FlowerRealm/v2rayN-core-bin/refs/heads/master/v2rayN-linux-arm64.zip"
else else
url="https://raw.githubusercontent.com/2dust/v2rayN-core-bin/refs/heads/master/v2rayN-linux-64.zip" url="https://raw.githubusercontent.com/FlowerRealm/v2rayN-core-bin/refs/heads/master/v2rayN-linux-64.zip"
fi fi
echo "[+] Try v2rayN bundle archive: $url" echo "[+] Try v2rayN bundle archive: $url"
local tmp zipname local tmp zipname
@ -608,8 +608,8 @@ Version: __VERSION__
Release: 1%{?dist} Release: 1%{?dist}
Summary: v2rayN (Avalonia) GUI client for Linux (x86_64/aarch64) Summary: v2rayN (Avalonia) GUI client for Linux (x86_64/aarch64)
License: GPL-3.0-only License: GPL-3.0-only
URL: https://github.com/2dust/v2rayN URL: https://github.com/FlowerRealm/v2rayN
BugURL: https://github.com/2dust/v2rayN/issues BugURL: https://github.com/FlowerRealm/v2rayN/issues
ExclusiveArch: aarch64 x86_64 ExclusiveArch: aarch64 x86_64
Source0: __PKGROOT__.tar.gz Source0: __PKGROOT__.tar.gz
@ -622,7 +622,7 @@ v2rayN Linux for Red Hat Enterprise Linux
Support vless / vmess / Trojan / http / socks / Anytls / Hysteria2 / Shadowsocks / tuic / WireGuard Support vless / vmess / Trojan / http / socks / Anytls / Hysteria2 / Shadowsocks / tuic / WireGuard
Support Red Hat Enterprise Linux / Fedora Linux / Rocky Linux / AlmaLinux / CentOS Support Red Hat Enterprise Linux / Fedora Linux / Rocky Linux / AlmaLinux / CentOS
For more information, Please visit our website For more information, Please visit our website
https://github.com/2dust/v2rayN https://github.com/FlowerRealm/v2rayN
%prep %prep
%setup -q -n __PKGROOT__ %setup -q -n __PKGROOT__

View file

@ -11,7 +11,7 @@
<NoWarn>CA1031;CS1591;NU1507;CA1416;IDE0058</NoWarn> <NoWarn>CA1031;CS1591;NU1507;CA1416;IDE0058</NoWarn>
<Nullable>annotations</Nullable> <Nullable>annotations</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Authors>2dust</Authors> <Authors>FlowerRealm</Authors>
<PackageLicenseExpression>GPL-3.0</PackageLicenseExpression> <PackageLicenseExpression>GPL-3.0</PackageLicenseExpression>
<Copyright>Copyright © 2017-$([System.DateTime]::UtcNow.Year) $(Authors)</Copyright> <Copyright>Copyright © 2017-$([System.DateTime]::UtcNow.Year) $(Authors)</Copyright>
<InvariantGlobalization>false</InvariantGlobalization> <InvariantGlobalization>false</InvariantGlobalization>

View file

@ -8,7 +8,7 @@ public class Global
public const string GithubUrl = "https://github.com"; public const string GithubUrl = "https://github.com";
public const string GithubApiUrl = "https://api.github.com/repos"; public const string GithubApiUrl = "https://api.github.com/repos";
public const string GeoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat"; public const string GeoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/{0}.dat";
public const string SingboxRulesetUrl = @"https://raw.githubusercontent.com/2dust/sing-box-rules/rule-set-{0}/{1}.srs"; public const string SingboxRulesetUrl = @"https://raw.githubusercontent.com/FlowerRealm/sing-box-rules/rule-set-{0}/{1}.srs";
public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw="; public const string PromotionUrl = @"aHR0cHM6Ly85LjIzNDQ1Ni54eXovYWJjLmh0bWw=";
public const string ConfigFileName = "guiNConfig.json"; public const string ConfigFileName = "guiNConfig.json";
@ -316,7 +316,7 @@ public class Global
]; ];
public static readonly HashSet<EConfigType> SingboxOnlyConfigType = SingboxSupportConfigType.Except(XraySupportConfigType).ToHashSet(); public static readonly HashSet<EConfigType> SingboxOnlyConfigType = SingboxSupportConfigType.Except(XraySupportConfigType).ToHashSet();
public static readonly List<string> DomainStrategies = public static readonly List<string> DomainStrategies =
[ [
AsIs, AsIs,
@ -572,7 +572,7 @@ public class Global
{ ECoreType.overtls, "ShadowsocksR-Live/overtls" }, { ECoreType.overtls, "ShadowsocksR-Live/overtls" },
{ ECoreType.shadowquic, "spongebob888/shadowquic" }, { ECoreType.shadowquic, "spongebob888/shadowquic" },
{ ECoreType.mieru, "enfein/mieru" }, { ECoreType.mieru, "enfein/mieru" },
{ ECoreType.v2rayN, "2dust/v2rayN" }, { ECoreType.v2rayN, "FlowerRealm/v2rayN" },
}; };
public static readonly List<string> OtherGeoUrls = public static readonly List<string> OtherGeoUrls =

View file

@ -3,7 +3,7 @@ using System.Text.Json.Serialization;
namespace ServiceLib.Models; namespace ServiceLib.Models;
/// <summary> /// <summary>
/// https://github.com/2dust/v2rayN/wiki/ /// https://github.com/FlowerRealm/v2rayN/wiki/
/// </summary> /// </summary>
[Serializable] [Serializable]
public class VmessQRCode public class VmessQRCode

View file

@ -47,7 +47,7 @@ public partial class FullConfigTemplateWindow : WindowBase<FullConfigTemplateVie
private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e) private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e)
{ {
ProcUtils.ProcessStart("https://github.com/2dust/v2rayN/wiki/Description-of-some-ui#%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE"); ProcUtils.ProcessStart("https://github.com/FlowerRealm/v2rayN/wiki/Description-of-some-ui#%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE");
} }
private void Window_Loaded(object? sender, RoutedEventArgs e) private void Window_Loaded(object? sender, RoutedEventArgs e)

View file

@ -208,6 +208,6 @@ public partial class RoutingRuleSettingWindow : WindowBase<RoutingRuleSettingVie
private void linkCustomRulesetPath4Singbox(object? sender, RoutedEventArgs e) private void linkCustomRulesetPath4Singbox(object? sender, RoutedEventArgs e)
{ {
ProcUtils.ProcessStart("https://github.com/2dust/v2rayCustomRoutingList/blob/master/singbox_custom_ruleset_example.json"); ProcUtils.ProcessStart("https://github.com/FlowerRealm/v2rayCustomRoutingList/blob/master/singbox_custom_ruleset_example.json");
} }
} }

View file

@ -47,6 +47,6 @@ public partial class FullConfigTemplateWindow
private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e) private void linkFullConfigTemplateDoc_Click(object sender, RoutedEventArgs e)
{ {
ProcUtils.ProcessStart("https://github.com/2dust/v2rayN/wiki/Description-of-some-ui#%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE"); ProcUtils.ProcessStart("https://github.com/FlowerRealm/v2rayN/wiki/Description-of-some-ui#%E5%AE%8C%E6%95%B4%E9%85%8D%E7%BD%AE%E6%A8%A1%E6%9D%BF%E8%AE%BE%E7%BD%AE");
} }
} }

View file

@ -201,6 +201,6 @@ public partial class RoutingRuleSettingWindow
private void linkCustomRulesetPath4Singbox(object sender, RoutedEventArgs e) private void linkCustomRulesetPath4Singbox(object sender, RoutedEventArgs e)
{ {
ProcUtils.ProcessStart("https://github.com/2dust/v2rayCustomRoutingList/blob/master/singbox_custom_ruleset_example.json"); ProcUtils.ProcessStart("https://github.com/FlowerRealm/v2rayCustomRoutingList/blob/master/singbox_custom_ruleset_example.json");
} }
} }