me-web? 0.2: the test from outside, calls and games, mail, and what you can host
Build / Desktop, server and tools (push) Successful in 59s
Release / Every platform, the server, the release (push) Successful in 7m27s

Phases two and three ship together, because their code grew in the same
files. With consent the app asks the router to open 80, 443 and a high
port for ten minutes (UPnP, NAT-PMP or PCP), and the server, holding a
single-use ticket bound to the caller's own address, connects back and
must get an HMAC only the app can give; the mappings are removed after the
run and remembered until then, so a crash cannot leave one open. Hairpin
is tried from inside. Two STUN servers, the outside one first, tell easy
from hard NAT.

Mail gets port 25 to Gmail and Outlook, the reverse name and five
blocklists through the user's own resolver, network-wide UCEPROTECT
listings counted as a caution. DNS, speed against the server (four at a
time, twelve an hour per address) and the device follow, and six uses
(website, home from outside, files, game server, fediverse, mail) close
the run as possible, possible with a named workaround, or can't tell.

Findings can be shared after reading the exact JSON: a file per submission
under the unit's state directory, ten a day per address, deletable by the
token the app keeps, swept after twelve months; /privacy says all of it in
English and Italian. QR codes lead to the downloads. Every language carries
every string.

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 05:41:44 +02:00
1 parent f79682eaef
commit 7cfc8b6de5
161 files changed
+23159 -305

No files matched your search

+149 -6
View File
@@ -130,6 +130,56 @@
</ItemsControl>
</StackPanel>
<Border Classes="consent" IsVisible="{Binding AskReach}" MaxWidth="760">
<StackPanel Spacing="10">
<TextBlock Classes="section" Margin="0" Text="{s:Tr ReachAskTitle}" />
<TextBlock Classes="body" Text="{s:Tr ReachAskBody}" />
<TextBlock Classes="small" Text="{s:Tr ReachAskPorts}" IsVisible="{Binding CanOpenPorts}" />
<WrapPanel HorizontalAlignment="Right" ItemSpacing="10" LineSpacing="10">
<Button Classes="quiet" Content="{s:Tr ReachSkip}"
AutomationProperties.AutomationId="reach-skip"
Command="{Binding ReachSkipCommand}" />
<Button Classes="quiet" Content="{s:Tr ReachAsIs}"
AutomationProperties.AutomationId="reach-as-is"
Command="{Binding ReachAsIsCommand}" />
<Button Classes="primary small" Content="{s:Tr ReachOpenPorts}" IsVisible="{Binding CanOpenPorts}"
AutomationProperties.AutomationId="reach-open-ports"
Command="{Binding ReachOpenPortsCommand}" />
</WrapPanel>
</StackPanel>
</Border>
<StackPanel Spacing="8" IsVisible="{Binding HasResults}">
<TextBlock Classes="section" Text="{s:Tr UsesTitle}" HorizontalAlignment="Center" />
<ItemsControl ItemsSource="{Binding Uses}" HorizontalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ItemWidth="{Binding CardWidth}" HorizontalAlignment="Center" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:UseViewModel">
<Border Classes="card use" AutomationProperties.AutomationId="{Binding AutomationId}"
Classes.good="{Binding IsGood}" Classes.caution="{Binding IsCaution}"
Classes.bad="{Binding IsBad}" Classes.unknown="{Binding IsUnknown}">
<StackPanel Spacing="8">
<Grid ColumnDefinitions="Auto,*,Auto">
<Path Grid.Column="0" Classes="icon" Data="{Binding Icon}" VerticalAlignment="Center" />
<TextBlock Grid.Column="1" Classes="cardTitle" Text="{Binding Title}" />
<Border Grid.Column="2" Classes="chip">
<TextBlock Text="{Binding VerdictFormatted}" />
</Border>
</Grid>
<TextBlock Classes="summary" Text="{Binding Reason}" />
<TextBlock Classes="body" FontSize="14" Foreground="{StaticResource TextSoftBrush}" Text="{Binding Advice}" IsVisible="{Binding ShowAdvice}" />
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<StackPanel Spacing="8" IsVisible="{Binding HasResults}">
<TextBlock Classes="section" Text="{s:Tr ResultsTitle}" HorizontalAlignment="Center" />
<ItemsControl ItemsSource="{Binding Cards}" HorizontalAlignment="Center">
@@ -181,6 +231,46 @@
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<Border Classes="consent" IsVisible="{Binding OfferShare}" MaxWidth="760">
<StackPanel Spacing="12">
<TextBlock Classes="section" Margin="0" Text="{s:Tr ShareOfferTitle}" />
<TextBlock Classes="body" Text="{s:Tr ShareOfferBody}" />
<Grid HorizontalAlignment="Center">
<Border Classes="halo" />
<Button Classes="primary" Content="{s:Tr ShareOpen}"
AutomationProperties.AutomationId="share-open"
Command="{Binding OpenShareCommand}" />
</Grid>
</StackPanel>
</Border>
<TextBlock Classes="body" TextAlignment="Center" HorizontalAlignment="Center" MaxWidth="700"
Text="{Binding ShareResult}" IsVisible="{Binding ShowShareResult}" />
<StackPanel Spacing="12" HorizontalAlignment="Center" Margin="8,10,8,0">
<TextBlock Classes="section" Text="{s:Tr ElsewhereTitle}" HorizontalAlignment="Center" />
<TextBlock Classes="small" Text="{s:Tr ElsewhereBody}" HorizontalAlignment="Center" TextAlignment="Center" MaxWidth="560" />
<WrapPanel HorizontalAlignment="Center" ItemSpacing="28" LineSpacing="16">
<StackPanel Spacing="8" Width="170">
<Border Classes="code">
<Path Data="{Binding AndroidCode}" Fill="{StaticResource GroundBrush}" Stretch="Uniform" />
</Border>
<TextBlock Classes="small" Text="{s:Tr ElsewhereAndroid}" TextAlignment="Center" />
</StackPanel>
<StackPanel Spacing="8" Width="170">
<Border Classes="code">
<Path Data="{Binding DownloadsCode}" Fill="{StaticResource GroundBrush}" Stretch="Uniform" />
</Border>
<TextBlock Classes="small" Text="{s:Tr ElsewhereAll}" TextAlignment="Center" />
</StackPanel>
</WrapPanel>
<StackPanel Orientation="Horizontal" Spacing="12" HorizontalAlignment="Center">
<Button Classes="quiet" Content="{s:Tr CopyLink}"
AutomationProperties.AutomationId="elsewhere-copy-link"
Command="{Binding CopyLinkCommand}" />
<TextBlock Classes="small" Text="{s:Tr LinkCopied}" VerticalAlignment="Center" IsVisible="{Binding LinkCopied}" />
</StackPanel>
</StackPanel>
</StackPanel>
</ScrollViewer>
</DockPanel>
@@ -196,7 +286,7 @@
Command="{Binding ToggleContactsCommand}" />
</Grid>
<TextBlock Classes="body" Text="{s:Tr ContactsIntro}" />
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto">
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<Path Grid.Row="0" Classes="icon" Data="{StaticResource IconServer}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="0" Grid.Column="1" Classes="body" Text="{s:Tr ContactServer}" Margin="0,0,0,12" />
<Path Grid.Row="1" Classes="icon" Data="{StaticResource IconRouter}" VerticalAlignment="Top" Margin="0,0,12,12" />
@@ -205,9 +295,33 @@
<TextBlock Grid.Row="2" Grid.Column="1" Classes="body" Text="{s:Tr ContactRoute}" Margin="0,0,0,12" />
<Path Grid.Row="3" Classes="icon" Data="{StaticResource IconGlobe}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="3" Grid.Column="1" Classes="body" Text="{s:Tr ContactDns}" Margin="0,0,0,12" />
<Path Grid.Row="4" Classes="icon" Data="{StaticResource IconArrowUpRight}" VerticalAlignment="Top" Margin="0,0,12,0" />
<TextBlock Grid.Row="4" Grid.Column="1" Classes="body" Text="{s:Tr ContactLinks}" />
<Path Grid.Row="4" Classes="icon" Data="{StaticResource IconRadioTower}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="4" Grid.Column="1" Classes="body" Text="{s:Tr ContactStun}" Margin="0,0,0,12" />
<Path Grid.Row="5" Classes="icon" Data="{StaticResource IconShare2}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="5" Grid.Column="1" Classes="body" Text="{s:Tr ContactShare}" Margin="0,0,0,12" />
<Path Grid.Row="6" Classes="icon" Data="{StaticResource IconMail}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="6" Grid.Column="1" Classes="body" Text="{s:Tr ContactMail}" Margin="0,0,0,12" />
<Path Grid.Row="7" Classes="icon" Data="{StaticResource IconGauge}" VerticalAlignment="Top" Margin="0,0,12,12" />
<TextBlock Grid.Row="7" Grid.Column="1" Classes="body" Text="{s:Tr ContactSpeed}" Margin="0,0,0,12" />
<Path Grid.Row="8" Classes="icon" Data="{StaticResource IconArrowUpRight}" VerticalAlignment="Top" Margin="0,0,12,0" />
<TextBlock Grid.Row="8" Grid.Column="1" Classes="body" Text="{s:Tr ContactLinks}" />
</Grid>
<StackPanel Spacing="6" IsVisible="{Binding ShowShared}">
<TextBlock Classes="body" FontWeight="SemiBold" Text="{s:Tr SharedTitle}" />
<ItemsControl ItemsSource="{Binding Shared}">
<ItemsControl.ItemTemplate>
<DataTemplate x:DataType="vm:SubmissionViewModel">
<StackPanel Orientation="Horizontal" Spacing="12" Margin="0,2">
<TextBlock Classes="small" Text="{Binding Description}" VerticalAlignment="Center" />
<Button Classes="link" Content="{s:Tr SubmissionDelete}"
AutomationProperties.AutomationId="{Binding AutomationId}"
Command="{Binding DeleteCommand}" />
<TextBlock Classes="small" Text="{s:Tr SubmissionDeleteFailed}" IsVisible="{Binding Failed}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
<TextBlock Classes="body" Text="{s:Tr PrivacyLine}" />
<StackPanel Orientation="Horizontal" Spacing="12">
<Button Classes="quiet" Content="{s:Tr ClearHistory}"
@@ -216,14 +330,43 @@
<TextBlock Classes="small" Text="{s:Tr HistoryCleared}" VerticalAlignment="Center" IsVisible="{Binding HistoryCleared}" />
</StackPanel>
<TextBlock Classes="small" Text="{s:Tr AboutLine}" />
<Button Classes="link" Content="{s:Tr SourceCode}"
AutomationProperties.AutomationId="contacts-source"
Command="{Binding OpenSourceCommand}" />
<StackPanel Orientation="Horizontal" Spacing="16">
<Button Classes="link" Content="{s:Tr SourceCode}"
AutomationProperties.AutomationId="contacts-source"
Command="{Binding OpenSourceCommand}" />
<Button Classes="link" Content="{s:Tr PrivacyPage}"
AutomationProperties.AutomationId="contacts-privacy"
Command="{Binding OpenPrivacyCommand}" />
</StackPanel>
<TextBlock Classes="small" Text="{Binding MapFormatted}" />
<TextBlock Classes="small" Text="{s:Tr IconsCredit}" />
</StackPanel>
</ScrollViewer>
</Border>
</Border>
<Border Classes="scrim" IsVisible="{Binding ShowShareSheet}">
<Border Classes="sheet">
<ScrollViewer HorizontalScrollBarVisibility="Disabled">
<StackPanel Spacing="12">
<TextBlock Classes="section" Margin="0" Text="{s:Tr ShareTitle}" />
<TextBlock Classes="body" Text="{s:Tr ShareWho}" />
<TextBlock Classes="body" Text="{s:Tr ShareWhy}" />
<TextBlock Classes="body" Text="{s:Tr ShareKeep}" />
<TextBlock Classes="small" Text="{s:Tr ShareExact}" />
<TextBox Classes="payload" Text="{Binding SharePreview}" IsReadOnly="True" AcceptsReturn="True"
AutomationProperties.AutomationId="share-preview" />
<WrapPanel HorizontalAlignment="Right" ItemSpacing="10" LineSpacing="10">
<Button Classes="quiet" Content="{s:Tr Cancel}"
AutomationProperties.AutomationId="share-cancel"
Command="{Binding CloseShareCommand}" />
<Button Classes="primary small" Content="{s:Tr ShareSend}"
AutomationProperties.AutomationId="share-send"
Command="{Binding SendCommand}" />
</WrapPanel>
</StackPanel>
</ScrollViewer>
</Border>
</Border>
</Grid>
</UserControl>
+2
View File
@@ -15,6 +15,8 @@ public partial class MainView : UserControl
base.OnLoaded(e);
if (DataContext is not MainViewModel model) return;
model.Launcher = TopLevel.GetTopLevel(this)?.Launcher;
model.Clipboard = TopLevel.GetTopLevel(this)?.Clipboard;
_ = model.CleanLeftovers();
model.AvailableWidth = Bounds.Width;
model.StartCommand.Execute(null);
}