me-web? skeleton: Avalonia 12 app, server, packaging and CI
Build / Desktop, server and tools (push) Successful in 1m7s

The first screen (online or not, a Check button, every language with a
draft notice), the desktop and Android heads, the server's /api/info and
/api/ip, a release tool that builds deb, rpm, a Windows exe, macOS zips,
a signed APK and the server, and the Gitea workflows that run it. Rules
adapted from passolo; AGPL-3.0.

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 01:14:44 +02:00
commit 7589121846
76 files changed
+3082

No files matched your search

+50
View File
@@ -0,0 +1,50 @@
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:MeWeb.App.ViewModels"
xmlns:s="using:MeWeb.App.Services"
x:Class="MeWeb.App.Views.MainView"
x:DataType="vm:MainViewModel"
FlowDirection="{Binding Flow}"
Background="{StaticResource GroundBrush}">
<DockPanel Margin="24,18">
<Grid DockPanel.Dock="Top" ColumnDefinitions="*,Auto">
<TextBlock Grid.Column="0" Classes="title" Text="me-web?" VerticalAlignment="Center" />
<ComboBox Grid.Column="1" MinWidth="180" VerticalAlignment="Center"
AutomationProperties.AutomationId="main-language"
AutomationProperties.Name="{s:Tr Language}"
ItemsSource="{Binding Languages}"
SelectedItem="{Binding SelectedLanguage}">
<ComboBox.ItemTemplate>
<DataTemplate x:DataType="s:Language">
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
<StackPanel DockPanel.Dock="Bottom" Spacing="6" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Spacing="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>
<TextBlock Classes="small" Text="{Binding VersionFormatted}" HorizontalAlignment="Center" />
</StackPanel>
<StackPanel Spacing="22" VerticalAlignment="Center" HorizontalAlignment="Center" MaxWidth="560">
<Grid Width="140" Height="140" HorizontalAlignment="Center">
<Ellipse Classes="pulse" Width="140" Height="140" Fill="{StaticResource BrandRedBrush}" IsVisible="{Binding ShowChecking}" />
<Ellipse Width="112" Height="112" Fill="{StaticResource SurfaceRaisedBrush}" Stroke="{StaticResource LineBrush}" StrokeThickness="2" />
<Ellipse Width="64" Height="64" Fill="{StaticResource GoodBrush}" IsVisible="{Binding ShowOnline}" />
<Ellipse Width="64" Height="64" Fill="{StaticResource BadBrush}" IsVisible="{Binding ShowOffline}" />
<Ellipse Width="64" Height="64" 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="{s:Tr Check}"
AutomationProperties.AutomationId="main-check"
Command="{Binding RefreshCommand}" />
</StackPanel>
</DockPanel>
</UserControl>
+21
View File
@@ -0,0 +1,21 @@
using Avalonia.Controls;
using Avalonia.Interactivity;
using MeWeb.App.ViewModels;
namespace MeWeb.App.Views;
public partial class MainView : UserControl
{
public MainView() => InitializeComponent();
protected override void OnLoaded(RoutedEventArgs e)
{
base.OnLoaded(e);
if (DataContext is MainViewModel model)
{
model.Launcher = TopLevel.GetTopLevel(this)?.Launcher;
model.RefreshCommand.Execute(null);
}
}
}
+8
View File
@@ -0,0 +1,8 @@
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="MeWeb.App.Views.MainWindow"
Title="me-web?"
Icon="/Assets/meweb.png"
Width="1100" Height="760" MinWidth="380" MinHeight="560"
Background="{StaticResource GroundBrush}"
WindowStartupLocation="CenterScreen" />
+8
View File
@@ -0,0 +1,8 @@
using Avalonia.Controls;
namespace MeWeb.App.Views;
public partial class MainWindow : Window
{
public MainWindow() => InitializeComponent();
}