Compare commits

..

29 commits

Author SHA1 Message Date
DHR60
7841c9fe84 Updates translations 2025-08-03 11:52:33 +08:00
DHR60
59e69b4d66 Updates sing-box documentation link 2025-08-03 11:51:03 +08:00
DHR60
be09e8bc5d Fixes 2025-08-03 11:51:03 +08:00
DHR60
257bf51ded Adds anytls reality support 2025-08-03 11:51:03 +08:00
DHR60
20883380d6 Deletes Duplicate Rules 2025-08-03 11:51:03 +08:00
DHR60
9bccdf1dac Adds sing-box DomainStrategy support 2025-08-03 11:51:03 +08:00
DHR60
3ed34eb02f Adds tag resolver supports 2025-08-03 11:51:03 +08:00
DHR60
83c862afea Support sing-box hosts 2025-08-03 11:51:03 +08:00
DHR60
8f0d4be095 Removes Wireguard listen port 2025-08-03 11:51:03 +08:00
DHR60
da8417165d Adds properties to Rule4Sbox class 2025-08-03 11:51:03 +08:00
DHR60
56b619de1c Improves DNS address parsing in Singbox
DNS type, host, port, and path
2025-08-03 11:51:03 +08:00
DHR60
0fbb2f6f32 Removes direct clash_mode domain strategy 2025-08-03 11:51:03 +08:00
DHR60
8756e078a7 Fixes wrong field 2025-08-03 11:51:03 +08:00
DHR60
4f4ca3cf91 fix singbox endpoints proxy chain not work 2025-08-03 11:51:03 +08:00
DHR60
0be355ae8c Fixes config generation 2025-08-03 11:51:03 +08:00
DHR60
9506e049e7 Refactors DNS address parsing 2025-08-03 11:51:03 +08:00
DHR60
9a56824db5 Adds IPv4 preference to DNS configurations
对应原dns.servers[].strategy = prefer_ipv4
2025-08-03 11:51:03 +08:00
DHR60
cfe56fad0c Adds Sing-box legacy DNS config support 2025-08-03 11:51:03 +08:00
DHR60
1bfd3e7d08 Utils.GetFreePort() default port to be zero 2025-08-03 11:51:03 +08:00
DHR60
aec8cb7e64 support Wireguard endpoint
Refactors Singbox config classes for dial fields
2025-08-03 11:51:03 +08:00
DHR60
0f96af3142 Fetches DNS strategy for domain resolution 2025-08-03 11:51:03 +08:00
DHR60
9030830575 Enables dhcp interface configuration 2025-08-03 11:51:02 +08:00
DHR60
fcdb46581b Simplifies local DNS address handling 2025-08-03 11:51:02 +08:00
DHR60
ddedde53ea add anytls support 2025-08-03 11:51:02 +08:00
DHR60
4f15452fe2 Improves geoip rule handling in singbox 2025-08-03 11:50:33 +08:00
DHR60
648fe837f5 Adds Google cn dns rules 2025-08-03 11:50:32 +08:00
DHR60
5cdaae0a7f Migrating to singbox 1.12 support 2025-08-03 11:50:32 +08:00
DHR60
1a75faaf4f Removes unnecessary sniffer 2025-08-03 11:50:32 +08:00
DHR60
563396031f Migrating to singbox 1.11 support 2025-08-03 11:50:32 +08:00
5 changed files with 36 additions and 43 deletions

View file

@ -1,7 +1,7 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<Version>7.13.7</Version> <Version>7.13.6</Version>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>

View file

@ -5,10 +5,10 @@
<CentralPackageVersionOverrideEnabled>false</CentralPackageVersionOverrideEnabled> <CentralPackageVersionOverrideEnabled>false</CentralPackageVersionOverrideEnabled>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.3.3" /> <PackageVersion Include="Avalonia.Controls.DataGrid" Version="11.3.2" />
<PackageVersion Include="Avalonia.Desktop" Version="11.3.3" /> <PackageVersion Include="Avalonia.Desktop" Version="11.3.2" />
<PackageVersion Include="Avalonia.Diagnostics" Version="11.3.3" /> <PackageVersion Include="Avalonia.Diagnostics" Version="11.3.2" />
<PackageVersion Include="Avalonia.ReactiveUI" Version="11.3.3" /> <PackageVersion Include="Avalonia.ReactiveUI" Version="11.3.2" />
<PackageVersion Include="CliWrap" Version="3.9.0" /> <PackageVersion Include="CliWrap" Version="3.9.0" />
<PackageVersion Include="Downloader" Version="4.0.2" /> <PackageVersion Include="Downloader" Version="4.0.2" />
<PackageVersion Include="H.NotifyIcon.Wpf" Version="2.3.0" /> <PackageVersion Include="H.NotifyIcon.Wpf" Version="2.3.0" />

View file

@ -107,7 +107,6 @@ public class ThemeSettingViewModel : MyReactiveObject
x.OfType<Button>(), x.OfType<Button>(),
x.OfType<TextBox>(), x.OfType<TextBox>(),
x.OfType<TextBlock>(), x.OfType<TextBlock>(),
x.OfType<SelectableTextBlock>(),
x.OfType<Menu>(), x.OfType<Menu>(),
x.OfType<ContextMenu>(), x.OfType<ContextMenu>(),
x.OfType<DataGridRow>(), x.OfType<DataGridRow>(),
@ -147,7 +146,6 @@ public class ThemeSettingViewModel : MyReactiveObject
x.OfType<Button>(), x.OfType<Button>(),
x.OfType<TextBox>(), x.OfType<TextBox>(),
x.OfType<TextBlock>(), x.OfType<TextBlock>(),
x.OfType<SelectableTextBlock>(),
x.OfType<Menu>(), x.OfType<Menu>(),
x.OfType<ContextMenu>(), x.OfType<ContextMenu>(),
x.OfType<DataGridRow>(), x.OfType<DataGridRow>(),

View file

@ -69,35 +69,34 @@
IsChecked="True" IsChecked="True"
Theme="{DynamicResource SimpleToggleSwitch}" /> Theme="{DynamicResource SimpleToggleSwitch}" />
</WrapPanel> </WrapPanel>
<TextBox
<ScrollViewer x:Name="msgScrollViewer" VerticalScrollBarVisibility="Auto"> Name="txtMsg"
<SelectableTextBlock VerticalAlignment="Stretch"
Name="txtMsg" BorderThickness="0"
VerticalAlignment="Stretch" Classes="TextArea"
Classes="TextArea" IsReadOnly="True"
TextAlignment="Left" TextAlignment="Left"
TextWrapping="Wrap"> TextWrapping="Wrap">
<SelectableTextBlock.ContextMenu> <TextBox.ContextMenu>
<ContextMenu> <ContextMenu>
<MenuItem <MenuItem
x:Name="menuMsgViewSelectAll" x:Name="menuMsgViewSelectAll"
Click="menuMsgViewSelectAll_Click" Click="menuMsgViewSelectAll_Click"
Header="{x:Static resx:ResUI.menuMsgViewSelectAll}" /> Header="{x:Static resx:ResUI.menuMsgViewSelectAll}" />
<MenuItem <MenuItem
x:Name="menuMsgViewCopy" x:Name="menuMsgViewCopy"
Click="menuMsgViewCopy_Click" Click="menuMsgViewCopy_Click"
Header="{x:Static resx:ResUI.menuMsgViewCopy}" /> Header="{x:Static resx:ResUI.menuMsgViewCopy}" />
<MenuItem <MenuItem
x:Name="menuMsgViewCopyAll" x:Name="menuMsgViewCopyAll"
Click="menuMsgViewCopyAll_Click" Click="menuMsgViewCopyAll_Click"
Header="{x:Static resx:ResUI.menuMsgViewCopyAll}" /> Header="{x:Static resx:ResUI.menuMsgViewCopyAll}" />
<MenuItem <MenuItem
x:Name="menuMsgViewClear" x:Name="menuMsgViewClear"
Click="menuMsgViewClear_Click" Click="menuMsgViewClear_Click"
Header="{x:Static resx:ResUI.menuMsgViewClear}" /> Header="{x:Static resx:ResUI.menuMsgViewClear}" />
</ContextMenu> </ContextMenu>
</SelectableTextBlock.ContextMenu> </TextBox.ContextMenu>
</SelectableTextBlock> </TextBox>
</ScrollViewer>
</DockPanel> </DockPanel>
</UserControl> </UserControl>

View file

@ -1,5 +1,4 @@
using System.Reactive.Disposables; using System.Reactive.Disposables;
using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
using Avalonia.Threading; using Avalonia.Threading;
@ -10,12 +9,9 @@ namespace v2rayN.Desktop.Views;
public partial class MsgView : ReactiveUserControl<MsgViewModel> public partial class MsgView : ReactiveUserControl<MsgViewModel>
{ {
private readonly ScrollViewer _scrollViewer;
public MsgView() public MsgView()
{ {
InitializeComponent(); InitializeComponent();
_scrollViewer = this.FindControl<ScrollViewer>("msgScrollViewer");
ViewModel = new MsgViewModel(UpdateViewHandler); ViewModel = new MsgViewModel(UpdateViewHandler);
@ -47,14 +43,14 @@ public partial class MsgView : ReactiveUserControl<MsgViewModel>
txtMsg.Text = msg.ToString(); txtMsg.Text = msg.ToString();
if (togScrollToEnd.IsChecked ?? true) if (togScrollToEnd.IsChecked ?? true)
{ {
_scrollViewer?.ScrollToEnd(); txtMsg.CaretIndex = int.MaxValue;
} }
} }
public void ClearMsg() public void ClearMsg()
{ {
ViewModel?.ClearMsg(); ViewModel?.ClearMsg();
txtMsg.Text = ""; txtMsg.Clear();
} }
private void menuMsgViewSelectAll_Click(object? sender, RoutedEventArgs e) private void menuMsgViewSelectAll_Click(object? sender, RoutedEventArgs e)