Fix help donation actions and remove internal docs

This commit is contained in:
MaxFan
2026-05-11 19:55:26 +03:30
parent 290083e809
commit 7438458237
8 changed files with 46 additions and 17 deletions
+2
View File
@@ -29,6 +29,8 @@ create-ico.ps1
# Personal notes and exported documents # Personal notes and exported documents
*.docx *.docx
docs/PRIVACY_REVIEW.md
docs/PUBLISHING_CHECKLIST.md
# Logs and temporary files # Logs and temporary files
*.log *.log
+2 -1
View File
@@ -377,7 +377,8 @@ public partial class MainWindow : Window
{ {
var helpWindow = new AppTunnel.Views.HelpWindow var helpWindow = new AppTunnel.Views.HelpWindow
{ {
Owner = this Owner = this,
DataContext = _viewModel
}; };
helpWindow.ShowDialog(); helpWindow.ShowDialog();
} }
+3 -3
View File
@@ -9,9 +9,9 @@ public static class AppInfo
public const string PayPalEmail = "gallafan@gmail.com"; public const string PayPalEmail = "gallafan@gmail.com";
public const string PayPalDonateUrl = "https://www.paypal.com/donate/?business=gallafan%40gmail.com&currency_code=USD"; public const string PayPalDonateUrl = "https://www.paypal.com/donate/?business=gallafan%40gmail.com&currency_code=USD";
public const string CryptoDonationText = public const string CryptoDonationText =
"TRON / USDT-TRC20: TNWV867fQDT6zpLunHgbeMjrN6ic63LQSu\n" + "ترون / USDT روی TRC20: TNWV867fQDT6zpLunHgbeMjrN6ic63LQSu\n" +
"Bitcoin: bc1qgx3g47c458fu6smnpqpu0l05hha82rq2xjet4y\n" + "بیت‌کوین: bc1qgx3g47c458fu6smnpqpu0l05hha82rq2xjet4y\n" +
"Ethereum / USDT-ERC20: 0x72d94Bb250E8802441a0ED05686Ee925BC99Fef5\n" + "اتریوم / USDT روی ERC20: 0x72d94Bb250E8802441a0ED05686Ee925BC99Fef5\n" +
"TON: UQD65oL2Vu2OJDSrwQ0wLLSw3g668SREMJ3VPW9k8b6Sy-Yf\n" + "TON: UQD65oL2Vu2OJDSrwQ0wLLSw3g668SREMJ3VPW9k8b6Sy-Yf\n" +
"BNB Smart Chain: 0xE2a5b01cE2b3713D435Bc16d92eAdd88A82159f0\n" + "BNB Smart Chain: 0xE2a5b01cE2b3713D435Bc16d92eAdd88A82159f0\n" +
"Dogecoin: DSZRNY65yF679uvjAh6sUAt6YiEEQHwKGb"; "Dogecoin: DSZRNY65yF679uvjAh6sUAt6YiEEQHwKGb";
+21 -1
View File
@@ -64,6 +64,7 @@ public partial class MainViewModel : INotifyPropertyChanged
ClearConfigCommand = new RelayCommand(_ => SelectedV2RayConfig = "", _ => !IsConnected && CurrentTunnelType == TunnelType.V2Ray); ClearConfigCommand = new RelayCommand(_ => SelectedV2RayConfig = "", _ => !IsConnected && CurrentTunnelType == TunnelType.V2Ray);
OpenGitHubCommand = new RelayCommand(_ => OpenExternalLink(AppInfo.GitHubUrl)); OpenGitHubCommand = new RelayCommand(_ => OpenExternalLink(AppInfo.GitHubUrl));
OpenDonateCommand = new RelayCommand(_ => OpenExternalLink(AppInfo.PayPalDonateUrl)); OpenDonateCommand = new RelayCommand(_ => OpenExternalLink(AppInfo.PayPalDonateUrl));
CopyDonationInfoCommand = new RelayCommand(_ => CopyDonationInfoToClipboard());
_trafficRouter.TrafficUpdated += OnTrafficUpdated; _trafficRouter.TrafficUpdated += OnTrafficUpdated;
@@ -247,7 +248,7 @@ public partial class MainViewModel : INotifyPropertyChanged
public string AppCreatorText => AppInfo.CreatorText; public string AppCreatorText => AppInfo.CreatorText;
public string AppGitHubUrl => AppInfo.GitHubUrl; public string AppGitHubUrl => AppInfo.GitHubUrl;
public string AppLicenseText => AppInfo.LicenseName; public string AppLicenseText => AppInfo.LicenseName;
public string DonatePayPalText => $"PayPal: {AppInfo.PayPalEmail}"; public string DonatePayPalText => $"پی‌پل: {AppInfo.PayPalEmail}";
public string CryptoDonationText => AppInfo.CryptoDonationText; public string CryptoDonationText => AppInfo.CryptoDonationText;
public string ConnectButtonText => _connectionState switch public string ConnectButtonText => _connectionState switch
@@ -617,6 +618,7 @@ public partial class MainViewModel : INotifyPropertyChanged
public ICommand ClearConfigCommand { get; } public ICommand ClearConfigCommand { get; }
public ICommand OpenGitHubCommand { get; } public ICommand OpenGitHubCommand { get; }
public ICommand OpenDonateCommand { get; } public ICommand OpenDonateCommand { get; }
public ICommand CopyDonationInfoCommand { get; }
#endregion #endregion
@@ -638,6 +640,24 @@ public partial class MainViewModel : INotifyPropertyChanged
} }
} }
private void CopyDonationInfoToClipboard()
{
try
{
var text =
$"{AppInfo.AppName} - حمایت از پروژه\n" +
$"PayPal: {AppInfo.PayPalEmail}\n" +
$"PayPal link: {AppInfo.PayPalDonateUrl}\n\n" +
AppInfo.CryptoDonationText;
System.Windows.Clipboard.SetText(text);
Logger.Info("[UI] Donation info copied to clipboard");
}
catch (Exception ex)
{
Logger.Warning($"[UI] Copy donation info failed: {ex.Message}");
}
}
private void PasteConfigFromClipboard() private void PasteConfigFromClipboard()
{ {
try try
+14 -8
View File
@@ -61,7 +61,7 @@
Foreground="{StaticResource AccentBrush}" Foreground="{StaticResource AccentBrush}"
FlowDirection="LeftToRight" FlowDirection="LeftToRight"
TextWrapping="Wrap"/> TextWrapping="Wrap"/>
<TextBlock Text="{Binding AppLicenseText, StringFormat=License: {0}}" <TextBlock Text="{Binding AppLicenseText, StringFormat=لایسنس: {0}}"
FontSize="10" FontSize="10"
Foreground="{StaticResource TextSecondaryBrush}" Foreground="{StaticResource TextSecondaryBrush}"
FlowDirection="LeftToRight" FlowDirection="LeftToRight"
@@ -81,17 +81,23 @@
</StackPanel> </StackPanel>
<StackPanel Grid.Column="2" <StackPanel Grid.Column="2"
Orientation="Horizontal" Orientation="Vertical"
VerticalAlignment="Center"> VerticalAlignment="Center"
MinWidth="150">
<Button Style="{StaticResource SecondaryButton}" <Button Style="{StaticResource SecondaryButton}"
Content="GitHub" Content="باز کردن گیت‌هاب"
Command="{Binding OpenGitHubCommand}" Command="{Binding OpenGitHubCommand}"
Padding="14,8" Padding="14,8"/>
Margin="0,0,8,0"/>
<Button Style="{StaticResource PrimaryButton}" <Button Style="{StaticResource PrimaryButton}"
Content="Donate" Content="حمایت با پی‌پل"
Command="{Binding OpenDonateCommand}" Command="{Binding OpenDonateCommand}"
Padding="16,8"/> Padding="16,8"
Margin="0,8,0,0"/>
<Button Style="{StaticResource SecondaryButton}"
Content="کپی اطلاعات حمایت"
Command="{Binding CopyDonationInfoCommand}"
Padding="14,8"
Margin="0,8,0,0"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
</Border> </Border>
+1 -1
View File
@@ -2,7 +2,7 @@
## Unreleased ## Unreleased
- Prepared open-source repository documentation and GitHub release checklist. - Prepared open-source repository documentation and release guidance.
- Added in-app GitHub and donation links. - Added in-app GitHub and donation links.
- Added project metadata for MaxFan and GPL-3.0-or-later licensing. - Added project metadata for MaxFan and GPL-3.0-or-later licensing.
- Improved leak logging and traffic accounting in recent internal builds. - Improved leak logging and traffic accounting in recent internal builds.
+2 -2
View File
@@ -2,7 +2,7 @@
TunnelX is a free and open-source Windows split-tunneling client built by **MaxFan**. It routes selected apps, selected destinations, or the whole system through supported tunnel cores while keeping local and excluded destinations on the normal network path. TunnelX is a free and open-source Windows split-tunneling client built by **MaxFan**. It routes selected apps, selected destinations, or the whole system through supported tunnel cores while keeping local and excluded destinations on the normal network path.
> Status: pre-release. Review `docs/PUBLISHING_CHECKLIST.md` before publishing a public repository or release artifact. > Status: pre-release. Review the release notes in `docs/BUILD.md` before publishing a public artifact.
## Features ## Features
@@ -15,7 +15,7 @@ TunnelX is a free and open-source Windows split-tunneling client built by **MaxF
## Download ## Download
Public downloads should be attached to GitHub Releases after the checklist is complete: Public downloads should be attached to GitHub Releases after release validation is complete:
[GitHub project](https://github.com/MaxiFan/TunnelX) [GitHub project](https://github.com/MaxiFan/TunnelX)
+1 -1
View File
@@ -30,7 +30,7 @@ TunnelX-v1.2.21-standalone-compressed.exe
## Before Publishing ## Before Publishing
- Run the leak test plan in `docs/PUBLISHING_CHECKLIST.md`. - Run leak, DNS, full-route, split-route, app toggle, and reconnect tests before attaching a public artifact.
- Confirm third-party license notices are current. - Confirm third-party license notices are current.
- Confirm the app version in `AppTunnel/AppTunnel.csproj`. - Confirm the app version in `AppTunnel/AppTunnel.csproj`.
- Attach release artifacts only to GitHub Releases; do not commit generated `publish/` or `Releases/` output. - Attach release artifacts only to GitHub Releases; do not commit generated `publish/` or `Releases/` output.