The checks engine, the path and the cards: me-web? 0.1 reads the connection

MeWeb.Core runs seven checks concurrently and reports each as it settles:
online or behind a login page, this connection, the public IPv4 and IPv6
seen from v4./v6.meweb, the provider from a built-in map, the router
(UPnP IGD, NAT-PMP and PCP, read-only), address sharing (router WAN
against the echo, TTL hops only as a hint), and the history kept on the
device. The app draws the path from this device to the internet and lights
it node by node, with a card per check and a sheet listing every host it
contacts.

The provider map is iptoasn's table compressed to 2.1 MB by
tools/knowledge.cs and built before every app release; eleven Italian
provider profiles carry each fact with who said it, the source and the
month. The server gains a download page (en, it) and /download/{platform}
from the latest Gitea release.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-15 04:39:03 +02:00
1 parent 16a1cecaae
commit 0dffbc27d6
61 files changed
+3750 -149

No files matched your search

+263 -7
View File
@@ -1,12 +1,12 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style Selector="TextBlock.title">
<Setter Property="FontSize" Value="34" />
<Setter Property="FontSize" Value="30" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
</Style>
<Style Selector="TextBlock.lead">
<Setter Property="FontSize" Value="18" />
<Setter Property="FontSize" Value="17" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="TextAlignment" Value="Center" />
@@ -16,11 +16,26 @@
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextAlignment" Value="Center" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="TextBlock.section">
<Setter Property="FontSize" Value="19" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="Margin" Value="8,0" />
</Style>
<Style Selector="TextBlock.small">
<Setter Property="FontSize" Value="13" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="TextBlock.body">
<Setter Property="FontSize" Value="15" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="LineHeight" Value="22" />
</Style>
<Style Selector="Button.primary">
<Setter Property="Background" Value="{StaticResource BrandRedBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
@@ -30,27 +45,268 @@
<Setter Property="CornerRadius" Value="28" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<Style Selector="Button.primary:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{StaticResource BrandRedLightBrush}" />
<Setter Property="Foreground" Value="{StaticResource GroundBrush}" />
</Style>
<Style Selector="Button.primary:disabled /template/ ContentPresenter">
<Setter Property="Background" Value="{StaticResource BrandRedDarkBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
</Style>
<Style Selector="Button.link">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource BrandRedBrush}" />
<Setter Property="Padding" Value="4,2" />
<Setter Property="Foreground" Value="{StaticResource BrandRedLightBrush}" />
<Setter Property="Padding" Value="0,2" />
<Setter Property="FontSize" Value="13" />
<Setter Property="Cursor" Value="Hand" />
</Style>
<Style Selector="Button.link:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
</Style>
<Style Selector="Button.quiet">
<Setter Property="Background" Value="{StaticResource SurfaceRaisedBrush}" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="CornerRadius" Value="18" />
<Setter Property="Padding" Value="14,8" />
</Style>
<Style Selector="Button.round">
<Setter Property="Background" Value="{StaticResource SurfaceRaisedBrush}" />
<Setter Property="CornerRadius" Value="20" />
<Setter Property="Width" Value="40" />
<Setter Property="Height" Value="40" />
<Setter Property="Padding" Value="0" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<Style Selector="Path.icon">
<Setter Property="Stroke" Value="{StaticResource TextStrongBrush}" />
<Setter Property="StrokeThickness" Value="2" />
<Setter Property="StrokeLineCap" Value="Round" />
<Setter Property="StrokeJoin" Value="Round" />
<Setter Property="Width" Value="24" />
<Setter Property="Height" Value="24" />
</Style>
<Style Selector="Ellipse.pulse">
<Setter Property="Fill" Value="{StaticResource BrandRedBrush}" />
<Style.Animations>
<Animation Duration="0:0:1.6" IterationCount="Infinite">
<KeyFrame Cue="0%">
<Setter Property="Opacity" Value="0.85" />
<Setter Property="Opacity" Value="0.7" />
<Setter Property="ScaleTransform.ScaleX" Value="0.8" />
<Setter Property="ScaleTransform.ScaleY" Value="0.8" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="Opacity" Value="0" />
<Setter Property="ScaleTransform.ScaleX" Value="1.5" />
<Setter Property="ScaleTransform.ScaleY" Value="1.5" />
<Setter Property="ScaleTransform.ScaleX" Value="1.45" />
<Setter Property="ScaleTransform.ScaleY" Value="1.45" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Border.banner">
<Setter Property="Background" Value="{StaticResource SurfaceRaisedBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource BrandRedBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="12" />
<Setter Property="Padding" Value="16,10" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
<Style Selector="Ellipse.disc">
<Setter Property="Fill" Value="{StaticResource SurfaceRaisedBrush}" />
<Setter Property="Stroke" Value="{StaticResource LineBrush}" />
<Setter Property="StrokeThickness" Value="3" />
</Style>
<Style Selector="Ellipse.disc.good">
<Setter Property="Stroke" Value="{StaticResource GoodBrush}" />
<Setter Property="Fill" Value="{StaticResource GoodTintBrush}" />
</Style>
<Style Selector="Ellipse.disc.caution">
<Setter Property="Stroke" Value="{StaticResource CautionBrush}" />
<Setter Property="Fill" Value="{StaticResource CautionTintBrush}" />
</Style>
<Style Selector="Ellipse.disc.bad">
<Setter Property="Stroke" Value="{StaticResource BadBrush}" />
<Setter Property="Fill" Value="{StaticResource BadTintBrush}" />
</Style>
<Style Selector="Ellipse.disc.unknown">
<Setter Property="Stroke" Value="{StaticResource TextSoftBrush}" />
<Setter Property="Fill" Value="{StaticResource NeutralTintBrush}" />
</Style>
<Style Selector=":is(Panel).node">
<Setter Property="Opacity" Value="0.45" />
<Setter Property="RenderTransform" Value="scale(0.9)" />
<Setter Property="Transitions">
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.45" />
<TransformOperationsTransition Property="RenderTransform" Duration="0:0:0.45" Easing="BackEaseOut" />
</Transitions>
</Setter>
</Style>
<Style Selector=":is(Panel).node.lit">
<Setter Property="Opacity" Value="1" />
<Setter Property="RenderTransform" Value="scale(1)" />
</Style>
<Style Selector="TextBlock.nodeTitle">
<Setter Property="FontSize" Value="14" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="TextBlock.nodeSubtitle">
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="TextBlock.linkLabel">
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
</Style>
<Style Selector="Line.connector">
<Setter Property="Stroke" Value="{StaticResource LineBrush}" />
<Setter Property="StrokeThickness" Value="3" />
<Setter Property="StrokeLineCap" Value="Round" />
<Setter Property="StrokeDashArray" Value="1.5,1.5" />
</Style>
<Style Selector="Line.connector.flowing">
<Setter Property="Stroke" Value="{StaticResource BrandRedBrush}" />
<Style.Animations>
<Animation Duration="0:0:0.5" IterationCount="Infinite">
<KeyFrame Cue="0%">
<Setter Property="StrokeDashOffset" Value="0" />
</KeyFrame>
<KeyFrame Cue="100%">
<Setter Property="StrokeDashOffset" Value="-3" />
</KeyFrame>
</Animation>
</Style.Animations>
</Style>
<Style Selector="Line.connector.lit">
<Setter Property="Stroke" Value="{StaticResource TextSoftBrush}" />
<Setter Property="StrokeDashArray" Value="1,0" />
</Style>
<Style Selector="Border.card">
<Setter Property="Background" Value="{StaticResource SurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource LineBrush}" />
<Setter Property="BorderThickness" Value="4,0,0,0" />
<Setter Property="CornerRadius" Value="14" />
<Setter Property="Padding" Value="18,16" />
<Setter Property="Margin" Value="8" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Transitions">
<Transitions>
<BrushTransition Property="BorderBrush" Duration="0:0:0.4" />
</Transitions>
</Setter>
</Style>
<Style Selector="Border.card.good">
<Setter Property="BorderBrush" Value="{StaticResource GoodBrush}" />
</Style>
<Style Selector="Border.card.caution">
<Setter Property="BorderBrush" Value="{StaticResource CautionBrush}" />
</Style>
<Style Selector="Border.card.bad">
<Setter Property="BorderBrush" Value="{StaticResource BadBrush}" />
</Style>
<Style Selector="Border.card.unknown, Border.card.info">
<Setter Property="BorderBrush" Value="{StaticResource TextSoftBrush}" />
</Style>
<Style Selector="Border.chip">
<Setter Property="CornerRadius" Value="10" />
<Setter Property="Padding" Value="9,3" />
<Setter Property="Background" Value="{StaticResource NeutralTintBrush}" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
<Style Selector="Border.chip TextBlock">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
</Style>
<Style Selector="Border.card.good Border.chip">
<Setter Property="Background" Value="{StaticResource GoodTintBrush}" />
</Style>
<Style Selector="Border.card.good Border.chip TextBlock">
<Setter Property="Foreground" Value="{StaticResource GoodBrush}" />
</Style>
<Style Selector="Border.card.caution Border.chip">
<Setter Property="Background" Value="{StaticResource CautionTintBrush}" />
</Style>
<Style Selector="Border.card.caution Border.chip TextBlock">
<Setter Property="Foreground" Value="{StaticResource CautionBrush}" />
</Style>
<Style Selector="Border.card.bad Border.chip">
<Setter Property="Background" Value="{StaticResource BadTintBrush}" />
</Style>
<Style Selector="Border.card.bad Border.chip TextBlock">
<Setter Property="Foreground" Value="{StaticResource BadBrush}" />
</Style>
<Style Selector="TextBlock.cardTitle">
<Setter Property="FontSize" Value="17" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="10,0" />
</Style>
<Style Selector="TextBlock.summary">
<Setter Property="FontSize" Value="15" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="LineHeight" Value="21" />
</Style>
<Style Selector="TextBlock.factLabel">
<Setter Property="FontSize" Value="13" />
<Setter Property="Foreground" Value="{StaticResource TextSoftBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="Margin" Value="0,1,10,0" />
</Style>
<Style Selector="SelectableTextBlock.factValue">
<Setter Property="FontSize" Value="13" />
<Setter Property="Foreground" Value="{StaticResource TextStrongBrush}" />
<Setter Property="TextWrapping" Value="Wrap" />
</Style>
<Style Selector="ProgressBar.thin">
<Setter Property="MinHeight" Value="3" />
<Setter Property="Height" Value="3" />
<Setter Property="Foreground" Value="{StaticResource BrandRedBrush}" />
<Setter Property="Background" Value="{StaticResource SurfaceRaisedBrush}" />
</Style>
<Style Selector="Expander.explain">
<Style.Resources>
<SolidColorBrush x:Key="ExpanderHeaderBackground" Color="{StaticResource SurfaceRaised}" />
<SolidColorBrush x:Key="ExpanderHeaderBackgroundPointerOver" Color="{StaticResource Line}" />
<SolidColorBrush x:Key="ExpanderHeaderBackgroundPressed" Color="{StaticResource Line}" />
<SolidColorBrush x:Key="ExpanderHeaderBorderBrush" Color="Transparent" />
<SolidColorBrush x:Key="ExpanderHeaderBorderBrushPointerOver" Color="Transparent" />
<SolidColorBrush x:Key="ExpanderHeaderBorderBrushPressed" Color="Transparent" />
<SolidColorBrush x:Key="ExpanderHeaderForeground" Color="{StaticResource TextStrong}" />
<SolidColorBrush x:Key="ExpanderHeaderForegroundPointerOver" Color="{StaticResource TextStrong}" />
<SolidColorBrush x:Key="ExpanderHeaderForegroundPressed" Color="{StaticResource TextStrong}" />
<SolidColorBrush x:Key="ExpanderContentBackground" Color="{StaticResource SurfaceRaised}" />
<SolidColorBrush x:Key="ExpanderContentBorderBrush" Color="Transparent" />
</Style.Resources>
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="FontSize" Value="13" />
<Setter Property="CornerRadius" Value="10" />
</Style>
<Style Selector="Border.scrim">
<Setter Property="Background" Value="{StaticResource ScrimBrush}" />
</Style>
<Style Selector="Border.sheet">
<Setter Property="Background" Value="{StaticResource SurfaceBrush}" />
<Setter Property="CornerRadius" Value="16" />
<Setter Property="Padding" Value="22,18" />
<Setter Property="MaxWidth" Value="660" />
<Setter Property="Margin" Value="16" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</Styles>