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
6 changes: 3 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project>
<PropertyGroup>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionPrefix>1.0.1</VersionPrefix>
<VersionSuffix>preview</VersionSuffix>
<Version>$(VersionPrefix)-$(VersionSuffix)</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<AssemblyVersion>1.0.1.0</AssemblyVersion>
<FileVersion>1.0.1.0</FileVersion>
<InformationalVersion>$(Version)</InformationalVersion>
<Company>WinDama Contributors</Company>
<Authors>Touil Gho; WinDama Contributors</Authors>
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ The self-contained package normally requires no separate .NET installation.

## Current baseline

- Version: `1.0.0-preview`
- Version: `1.0.1-preview`
- Engine: `Core engine 2026.07`
- Validation: `101 passed, 0 failed`
- Framework: `.NET 10.0 Windows / WPF`
Expand Down
20 changes: 20 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Release Notes

## WinDama 1.0.1-preview
### Platform and build
- Migrated the WPF application to `.NET 10` and `net10.0-windows`.
- Migrated the reusable Core engine and NUnit tests to `net10.0`.
- Added reproducible SDK selection through `global.json`.
- Updated GitHub Actions for .NET 10.
- Updated the Windows x64 publishing workflow.
### Code quality
- Corrected nullable-reference handling in the WPF application.
- Removed the remaining compiler warnings.
- Preserved the existing 101-test regression baseline.
### Documentation
- Reorganized the README into a concise project overview.
- Added architecture, move-generation, AI-search, bitboard, FPGA, and
screenshot documentation.
- Updated requirements for Visual Studio Community 2026.
### Distribution
- Added a new self-contained Windows x64 package.
- A separate .NET installation is normally not required.

## Platform migration to .NET 10

- Retargeted the reusable Core engine and NUnit tests to `net10.0`.
Expand Down
11 changes: 7 additions & 4 deletions WinDama1.0/BoardRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void Draw(
int? selectedRow,
int? selectedColumn,
IReadOnlyList<Move> highlightedLegalMoves,
Move lastMove)
Move? lastMove)
{
if (canvas == null || board == null)
{
Expand All @@ -70,10 +70,13 @@ public void Draw(
for (int column = 0; column < board.GetLength(1); column++)
{
bool isSelectedSquare = pieceSelected && selectedRow == row && selectedColumn == column;
Move highlightedMove = highlightedLegalMoves?.FirstOrDefault(m => m.End.Item1 == row && m.End.Item2 == column);
Move? highlightedMove =
highlightedLegalMoves.FirstOrDefault(
m => m.End.Item1 == row && m.End.Item2 == column);

bool isMoveTarget = highlightedMove != null;
bool isCaptureTarget = isMoveTarget && highlightedMove.CapturedPieces.Count > 0;
bool isLastMoveStart = lastMove != null && lastMove.Start.Item1 == row && lastMove.Start.Item2 == column;
bool isCaptureTarget =
highlightedMove?.CapturedPieces.Count > 0; bool isLastMoveStart = lastMove != null && lastMove.Start.Item1 == row && lastMove.Start.Item2 == column;
bool isLastMoveEnd = lastMove != null && lastMove.End.Item1 == row && lastMove.End.Item2 == column;
bool isLastCapturedSquare = lastMove != null && lastMove.CapturedPieces.Any(c => c.Item1 == row && c.Item2 == column);
bool isLastMoveSquare = isLastMoveStart || isLastMoveEnd;
Expand Down
39 changes: 25 additions & 14 deletions WinDama1.0/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Media;
using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Media;
using System.Windows.Threading;
using System.Threading;
using System.IO;
using System.Text;
using System.Text.Json;
using System.ComponentModel;
using Microsoft.Win32;

using WinDama.Core;
using static System.Net.Mime.MediaTypeNames;
namespace WinDama
{
/// <summary>
Expand Down Expand Up @@ -1080,7 +1080,9 @@ private void UpdateAnalysisFields(SearchResult? result)

string summary = result == null
? string.Empty
: analysisPanelUpdater?.UpdateFromResult(result, GetSearchModeLabel(result.Mode));
: (analysisPanelUpdater?.UpdateFromResult(
result,
GetSearchModeLabel(result.Mode)) ?? string.Empty);

if (result == null)
{
Expand All @@ -1101,7 +1103,11 @@ private void UpdateAnalysisProgress(WinDama.Core.SearchProgress progress)
return;
}

string summary = analysisPanelUpdater?.UpdateFromProgress(progress, GetSearchModeLabel(selectedAiSearchMode));
string summary =
analysisPanelUpdater?.UpdateFromProgress(
progress,
GetSearchModeLabel(selectedAiSearchMode))
?? string.Empty;
if (!string.IsNullOrWhiteSpace(summary))
{
SetAnalysisSummary(summary);
Expand Down Expand Up @@ -1256,7 +1262,7 @@ private void SavePositionButton_Click(object sender, RoutedEventArgs e)
try
{
Directory.CreateDirectory(DefaultTestPositionsFolder);
string suggestedName = BoardEditorController.BuildSafePositionFileName(PositionNameTextBox?.Text);
string suggestedName = BoardEditorController.BuildSafePositionFileName(PositionNameTextBox.Text ?? string.Empty);
SaveFileDialog dialog = new SaveFileDialog
{
Title = "Save WinDama test position",
Expand Down Expand Up @@ -1383,7 +1389,7 @@ private void SynchronizeEditedPosition(string reason, bool saveUndo, bool resetL
CancelBackgroundPositionAnalysis();
ClearMoveSelection(redraw: false);

Move lastMoveForState = resetLastMove ? null : lastMove;
Move? lastMoveForState = resetLastMove ? null : lastMove;
gameController.SetGameMode(selectedGameMode);
gameController.RestoreState(board, currentPlayer, isGameOver: false, lastMove: lastMoveForState);
SynchronizeFieldsFromGameController();
Expand Down Expand Up @@ -1499,7 +1505,9 @@ private async void StartBackgroundPositionAnalysis(string reason)
{
if (!Dispatcher.CheckAccess())
{
Dispatcher.BeginInvoke(new Action(() => StartBackgroundPositionAnalysis(reason)));
_ = Dispatcher.BeginInvoke(
new Action(() => StartBackgroundPositionAnalysis(reason)));

return;
}

Expand Down Expand Up @@ -3394,7 +3402,10 @@ private void HandleSquareClick(int row, int column)
// Empty target square after a piece was selected.
if (pieceSelected && selectedRow.HasValue && selectedColumn.HasValue)
{
Move validMove = highlightedLegalMoves.FirstOrDefault(move => move.End.Item1 == row && move.End.Item2 == column);
Move? validMove =
highlightedLegalMoves.FirstOrDefault(
move => move.End.Item1 == row &&
move.End.Item2 == column);
if (validMove != null)
{
ClearMoveSelection(redraw: false);
Expand Down
8 changes: 4 additions & 4 deletions WinDama1.0/WinDama.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
<ApplicationIcon>Resources\256.ico</ApplicationIcon>

<!-- Application version -->
<Version>1.0.0-preview</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<InformationalVersion>1.0.0-preview</InformationalVersion>
<Version>1.0.1-preview</Version>
<AssemblyVersion>1.0.1.0</AssemblyVersion>
<FileVersion>1.0.1.0</FileVersion>
<InformationalVersion>1.0.1-preview</InformationalVersion>

<!-- Application metadata -->
<AssemblyName>WinDama</AssemblyName>
Expand Down
2 changes: 1 addition & 1 deletion scripts/Publish-Release-x64.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ $Project = Join-Path $RepoRoot "WinDama1.0\WinDama.csproj"
$TestProject = Join-Path $RepoRoot "WinDama.Tests\WinDama.Tests.csproj"
$PublishDir = Join-Path $RepoRoot "artifacts\publish\WinDama-win-x64"
$PackageDir = Join-Path $RepoRoot "artifacts\packages"
$PackagePath = Join-Path $PackageDir "WinDama-1.0.0-preview-win-x64.zip"
$PackagePath = Join-Path $PackageDir "WinDama-1.0.1-preview-win-x64.zip"

Write-Host "WinDama Release x64 publish" -ForegroundColor Cyan
Write-Host "Repository: $RepoRoot"
Expand Down