Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions src/WindowController.App/AppBuildInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace WindowController.App;

internal static class AppBuildInfo
{
private static Assembly Assembly => typeof(AppBuildInfo).Assembly;

public static string InformationalVersion
=> Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion
?? "不明";

public static string FileVersion
=> Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version
?? "不明";

public static string AssemblyVersion
=> Assembly.GetName().Version?.ToString() ?? "不明";

public static IReadOnlyDictionary<string, string> Metadata
=> Assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
.Where(a => !string.IsNullOrWhiteSpace(a.Key))
.GroupBy(a => a.Key)
.ToDictionary(g => g.Key, g => g.Last().Value ?? "");

public static string GetMetadata(string key, string fallback = "不明")
=> Metadata.TryGetValue(key, out var value) && !string.IsNullOrWhiteSpace(value)
? value
: fallback;
}
6 changes: 5 additions & 1 deletion src/WindowController.App/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
mc:Ignorable="d"
Title="Window-Controller" Height="800" Width="1140"
Title="Window-Controller" Height="800" Width="1140" MinWidth="720"
WindowStartupLocation="CenterScreen"
ExtendsContentIntoTitleBar="True"
WindowBackdropType="Mica"
UseLayoutRounding="True"
SnapsToDevicePixels="True"
Closing="Window_Closing">

<Grid>
Expand Down Expand Up @@ -81,6 +83,7 @@
RowHeight="32"
RowStyle="{StaticResource RoundedRow}"
CellStyle="{StaticResource TransparentCell}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
PreviewMouseWheel="DataGrid_PreviewMouseWheel"
Margin="0,0,0,10">
<DataGrid.Columns>
Expand Down Expand Up @@ -169,6 +172,7 @@
RowHeight="32"
RowStyle="{StaticResource RoundedRow}"
CellStyle="{StaticResource TransparentCell}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
PreviewMouseWheel="DataGrid_PreviewMouseWheel"
Margin="0,0,0,10">
<DataGrid.ContextMenu>
Expand Down
49 changes: 48 additions & 1 deletion src/WindowController.App/SettingsWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
xmlns:local="clr-namespace:WindowController.App"
mc:Ignorable="d"
Title="設定 - Window-Controller" Height="680" Width="900"
Title="設定 - Window-Controller" Height="680" Width="900" MinWidth="640"
WindowStartupLocation="CenterScreen"
ExtendsContentIntoTitleBar="True"
WindowBackdropType="Mica"
UseLayoutRounding="True"
SnapsToDevicePixels="True"
Closing="Window_Closing"
PreviewKeyDown="Window_PreviewKeyDown">

Expand Down Expand Up @@ -197,6 +199,7 @@
RowHeight="32"
RowStyle="{StaticResource RoundedRow}"
CellStyle="{StaticResource TransparentCell}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Margin="0,0,0,10">
<DataGrid.Columns>
<DataGridTemplateColumn Header="既定" Width="60" MinWidth="60">
Expand Down Expand Up @@ -266,6 +269,7 @@
RowHeight="32"
RowStyle="{StaticResource RoundedRow}"
CellStyle="{StaticResource TransparentCell}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Margin="0,0,0,10">
<DataGrid.Columns>
<DataGridTextColumn Header="プロファイル" Binding="{Binding ProfileName}" Width="*" IsReadOnly="True"/>
Expand Down Expand Up @@ -303,6 +307,49 @@
</Grid>
</Border>

<!-- ═══════ Section 6 : About / Version Info ═══════ -->
<TextBlock Text="バージョン情報" Style="{StaticResource SectionHeader}"/>
<TextBlock Text="不具合報告時などに参照してください(ビルド時に自動取得)" Style="{StaticResource SectionDescription}"/>

<Border Style="{StaticResource SectionCard}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="220"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<TextBlock Grid.Row="0" Grid.Column="0" Text="Informational Version" FontSize="14" VerticalAlignment="Center"/>
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding AppInformationalVersion}" TextWrapping="Wrap"/>

<TextBlock Grid.Row="1" Grid.Column="0" Text="File Version" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AppFileVersion}" TextWrapping="Wrap" Margin="0,8,0,0"/>

<TextBlock Grid.Row="2" Grid.Column="0" Text="Assembly Version" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding AppAssemblyVersion}" TextWrapping="Wrap" Margin="0,8,0,0"/>

<TextBlock Grid.Row="3" Grid.Column="0" Text="Build Timestamp (UTC)" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding BuildTimestampUtc}" TextWrapping="Wrap" Margin="0,8,0,0"/>

<TextBlock Grid.Row="4" Grid.Column="0" Text="Configuration" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding BuildConfiguration}" TextWrapping="Wrap" Margin="0,8,0,0"/>

<TextBlock Grid.Row="5" Grid.Column="0" Text="Target Framework" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding BuildTargetFramework}" TextWrapping="Wrap" Margin="0,8,0,0"/>

<TextBlock Grid.Row="6" Grid.Column="0" Text="Runtime Identifier" FontSize="14" VerticalAlignment="Center" Margin="0,8,0,0"/>
<TextBlock Grid.Row="6" Grid.Column="1" Text="{Binding BuildRuntimeIdentifier}" TextWrapping="Wrap" Margin="0,8,0,0"/>
</Grid>
</Border>

</StackPanel>
</ScrollViewer>

Expand Down
10 changes: 10 additions & 0 deletions src/WindowController.App/ViewModels/SettingsViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using CommunityToolkit.Mvvm.Input;
using Microsoft.Win32;
using Serilog;
using WindowController.App;
using WindowController.Core;
using WindowController.Core.Models;

Expand Down Expand Up @@ -75,6 +76,15 @@ public partial class SettingsViewModel : ObservableObject

[ObservableProperty] private string _statusText = "";

// ========== About / Build info (read-only) ==========
public string AppInformationalVersion { get; } = AppBuildInfo.InformationalVersion;
public string AppFileVersion { get; } = AppBuildInfo.FileVersion;
public string AppAssemblyVersion { get; } = AppBuildInfo.AssemblyVersion;
public string BuildTimestampUtc { get; } = AppBuildInfo.GetMetadata("BuildTimestampUtc");
public string BuildConfiguration { get; } = AppBuildInfo.GetMetadata("BuildConfiguration");
public string BuildTargetFramework { get; } = AppBuildInfo.GetMetadata("BuildTargetFramework");
public string BuildRuntimeIdentifier { get; } = AppBuildInfo.GetMetadata("BuildRuntimeIdentifier", fallback: "(未指定)");

public SettingsViewModel(
ProfileStore profileStore,
AppSettingsStore appSettingsStore,
Expand Down
10 changes: 10 additions & 0 deletions src/WindowController.App/WindowController.App.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,18 @@
<PublishTrimmed>false</PublishTrimmed>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<DebugType>embedded</DebugType>

<!-- Build metadata (embedded into assembly at build time) -->
<BuildTimestampUtc>$([System.DateTime]::UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ"))</BuildTimestampUtc>
</PropertyGroup>

<ItemGroup>
<AssemblyMetadata Include="BuildTimestampUtc" Value="$(BuildTimestampUtc)" />
<AssemblyMetadata Include="BuildConfiguration" Value="$(Configuration)" />
<AssemblyMetadata Include="BuildTargetFramework" Value="$(TargetFramework)" />
<AssemblyMetadata Include="BuildRuntimeIdentifier" Value="$(RuntimeIdentifier)" Condition="'$(RuntimeIdentifier)' != ''" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageReference Include="Hardcodet.NotifyIcon.Wpf" Version="1.1.0" />
Expand Down