"me-web?" 0.8.0: a first screen that says what's in it for you
Build / Desktop, server and tools (push) Successful in 1m11s
Release / Every platform, the server, the release (push) Successful in 8m45s

- The first screen now starts from what a home connection could do for you: a drawing of your home's internet box with the things it could host circling it (family photos, a website, reaching home from outside, a game server, a blog, mail), the question in plain words, why it matters, and one button, "Check this connection".
- Below it, the six things the check answers, and a promise: nothing on your network changes without asking you first, and the results stay on your device unless you share them.
- The codes for installing the app on another device are folded away at the bottom; open them when you need them.
- While the check runs, the offer to share your findings already waits at the end of the page, getting them ready, and becomes a button as soon as they are complete.
- Long button labels and the translation notice no longer run off narrow screens.

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-16 01:30:03 +02:00
1 parent 7e3be9ed41
commit f157a74c60
119 files changed
+935 -245

No files matched your search

+74 -16
View File
@@ -83,12 +83,12 @@
</Grid>
<StackPanel DockPanel.Dock="Bottom" Spacing="4" Margin="16,6,16,10" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Spacing="8" HorizontalAlignment="Center" IsVisible="{Binding ShowDraftNotice}">
<WrapPanel ItemSpacing="8" HorizontalAlignment="Center" IsVisible="{Binding ShowDraftNotice}">
<TextBlock Classes="small" Text="{s:Tr DraftNotice}" VerticalAlignment="Center" />
<Button Classes="link" Content="{s:Tr SuggestCorrection}"
AutomationProperties.AutomationId="main-suggest-correction"
Command="{Binding OpenCorrectionsCommand}" />
</StackPanel>
</WrapPanel>
<TextBlock Classes="small" Text="{Binding VersionFormatted}" HorizontalAlignment="Center" />
</StackPanel>
@@ -103,20 +103,66 @@
</StackPanel>
</Border>
<StackPanel Spacing="16" HorizontalAlignment="Center" MaxWidth="600" Margin="8,6,8,0" IsVisible="{Binding !HasResults}">
<Grid Width="120" Height="120" HorizontalAlignment="Center">
<Ellipse Classes="pulse" Width="120" Height="120" IsVisible="{Binding ShowChecking}" />
<Ellipse Width="96" Height="96" Fill="{StaticResource SurfaceRaisedBrush}" Stroke="{StaticResource LineBrush}" StrokeThickness="2" />
<Ellipse Width="54" Height="54" Fill="{StaticResource GoodBrush}" IsVisible="{Binding ShowOnline}" />
<Ellipse Width="54" Height="54" Fill="{StaticResource CautionBrush}" IsVisible="{Binding ShowCaptive}" />
<Ellipse Width="54" Height="54" Fill="{StaticResource BadBrush}" IsVisible="{Binding ShowOffline}" />
<Ellipse Width="54" Height="54" Fill="{StaticResource TextSoftBrush}" Opacity="0.4" IsVisible="{Binding ShowChecking}" />
</Grid>
<TextBlock Classes="status" Text="{Binding StatusFormatted}" />
<TextBlock Classes="lead" Text="{s:Tr AppTagline}" />
<Button Classes="primary" Content="{Binding CheckFormatted}"
<StackPanel Spacing="14" HorizontalAlignment="Center" MaxWidth="600" Margin="8,0,8,0" IsVisible="{Binding !HasResults}">
<Border Classes="statusChip" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Spacing="8">
<Grid Width="10" Height="10" VerticalAlignment="Center">
<Ellipse Fill="{StaticResource GoodBrush}" IsVisible="{Binding ShowOnline}" />
<Ellipse Fill="{StaticResource CautionBrush}" IsVisible="{Binding ShowCaptive}" />
<Ellipse Fill="{StaticResource BadBrush}" IsVisible="{Binding ShowOffline}" />
<Ellipse Fill="{StaticResource TextSoftBrush}" IsVisible="{Binding ShowChecking}" />
</Grid>
<TextBlock Classes="chip" Text="{Binding StatusFormatted}" />
</StackPanel>
</Border>
<Viewbox StretchDirection="DownOnly" HorizontalAlignment="Center">
<v:HomeOrbit />
</Viewbox>
<TextBlock Classes="hero" Text="{s:Tr StartTitle}" />
<TextBlock Classes="lead" Text="{s:Tr StartBody}" />
<Button Classes="primary" Content="{Binding CheckFormatted}" Margin="0,6,0,0"
AutomationProperties.AutomationId="main-check"
Command="{Binding CheckCommand}" />
<TextBlock Classes="small" Text="{s:Tr StartPromise}" TextAlignment="Center" MaxWidth="460" HorizontalAlignment="Center" />
<TextBlock Classes="section" Text="{s:Tr StartUsesTitle}" HorizontalAlignment="Center" Margin="8,14,8,0" />
<WrapPanel HorizontalAlignment="Center" ItemSpacing="10" LineSpacing="10">
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconImages}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseFiles}" />
</Grid>
</Border>
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconGlobe}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseWebsite}" />
</Grid>
</Border>
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconHouse}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseRemoteAccess}" />
</Grid>
</Border>
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconGamepad2}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseGameServer}" />
</Grid>
</Border>
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconRss}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseFediverse}" />
</Grid>
</Border>
<Border Classes="useChip">
<Grid ColumnDefinitions="Auto,*">
<Viewbox Width="20" Height="20" VerticalAlignment="Center"><Path Classes="icon" Data="{StaticResource IconMail}" /></Viewbox>
<TextBlock Grid.Column="1" Text="{s:Tr UseMail}" />
</Grid>
</Border>
</WrapPanel>
</StackPanel>
<StackPanel Spacing="6" IsVisible="{Binding HasResults}">
@@ -293,6 +339,15 @@
</Grid>
</StackPanel>
</Border>
<Border Classes="consent preparing" IsVisible="{Binding ShowSharePreparing}" MaxWidth="760">
<StackPanel Spacing="12">
<TextBlock Classes="section" Margin="0" Text="{s:Tr ShareOfferTitle}" />
<TextBlock Classes="body" Text="{s:Tr SharePreparing}" />
<ProgressBar Classes="thin" IsIndeterminate="True" />
<Button Classes="primary" Content="{s:Tr ShareOpen}" IsEnabled="False" Opacity="0.55"
AutomationProperties.AutomationId="share-open-waiting" />
</StackPanel>
</Border>
<TextBlock Classes="body" TextAlignment="Center" HorizontalAlignment="Center" MaxWidth="700"
Text="{Binding ShareResult}" IsVisible="{Binding ShowShareResult}" />
<StackPanel Spacing="4" HorizontalAlignment="Center" MinWidth="240" MaxWidth="420" IsVisible="{Binding ShowSharedId}">
@@ -317,8 +372,10 @@
Command="{Binding CheckCommand}" />
</StackPanel>
<StackPanel Spacing="12" HorizontalAlignment="Center" Margin="8,10,8,0">
<TextBlock Classes="section" Text="{s:Tr ElsewhereTitle}" HorizontalAlignment="Center" />
<Expander Classes="explain" Header="{s:Tr ElsewhereTitle}" MaxWidth="600" Margin="8,10,8,0"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
AutomationProperties.AutomationId="main-elsewhere">
<StackPanel Spacing="12" 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">
@@ -341,6 +398,7 @@
<TextBlock Classes="small" Text="{s:Tr LinkCopied}" VerticalAlignment="Center" IsVisible="{Binding LinkCopied}" />
</StackPanel>
</StackPanel>
</Expander>
</StackPanel>
</ScrollViewer>
</DockPanel>