Skip to content

Commit 202bff9

Browse files
committed
Merge branch 'main' of https://github.com/s-barn/WindowSeat
2 parents 3acaacb + 485b6e2 commit 202bff9

21 files changed

Lines changed: 229 additions & 39 deletions

.github/workflows/build.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,20 @@ jobs:
1414
- name: Checkout
1515
uses: actions/checkout@v4
1616

17-
- name: Setup .NET 8
17+
- name: Setup .NET 10
1818
uses: actions/setup-dotnet@v4
1919
with:
20-
dotnet-version: '8.0.x'
20+
dotnet-version: '10.0.x'
2121

2222
- name: Restore dependencies
23-
run: dotnet restore WindowSeat.sln
23+
run: |
24+
dotnet restore src/WindowSeat.App/WindowSeat.App.csproj
25+
dotnet restore src/WindowSeat.Tests/WindowSeat.Tests.csproj
2426
2527
- name: Build (Release)
26-
run: dotnet build WindowSeat.sln --configuration Release --no-restore
28+
run: |
29+
dotnet build src/WindowSeat.App/WindowSeat.App.csproj --configuration Release --no-restore
30+
dotnet build src/WindowSeat.Tests/WindowSeat.Tests.csproj --configuration Release --no-restore
2731
2832
- name: Run tests
2933
run: dotnet test src/WindowSeat.Tests/WindowSeat.Tests.csproj --configuration Release --no-build --verbosity normal --logger trx --results-directory TestResults

.github/workflows/release.yml

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@ jobs:
1313
- name: Checkout
1414
uses: actions/checkout@v4
1515

16-
- name: Setup .NET 8
16+
- name: Setup .NET 10
1717
uses: actions/setup-dotnet@v4
1818
with:
19-
dotnet-version: '8.0.x'
19+
dotnet-version: '10.0.x'
20+
21+
- name: Setup MSBuild
22+
uses: microsoft/setup-msbuild@v2
2023

2124
- name: Extract version from tag
2225
id: version
@@ -27,14 +30,14 @@ jobs:
2730
echo "VERSION=$version" >> $env:GITHUB_OUTPUT
2831
2932
- name: Restore dependencies
30-
run: dotnet restore WindowSeat.sln
33+
run: |
34+
dotnet restore src/WindowSeat.App/WindowSeat.App.csproj
35+
dotnet restore src/WindowSeat.Tests/WindowSeat.Tests.csproj
3136
3237
- name: Build (Release)
33-
run: >
34-
dotnet build WindowSeat.sln
35-
--configuration Release
36-
--no-restore
37-
/p:Version=${{ steps.version.outputs.VERSION }}
38+
run: |
39+
dotnet build src/WindowSeat.App/WindowSeat.App.csproj --configuration Release --no-restore /p:Version=${{ steps.version.outputs.VERSION }}
40+
dotnet build src/WindowSeat.Tests/WindowSeat.Tests.csproj --configuration Release --no-restore
3841
3942
- name: Run tests
4043
run: >
@@ -52,16 +55,40 @@ jobs:
5255
--output publish/
5356
/p:Version=${{ steps.version.outputs.VERSION }}
5457
55-
# ── MSIX packaging ────────────────────────────────────────────────────
56-
# TODO: Wire up Windows Application Packaging Project (wapproj) here
57-
# once packaging/ scaffold is complete. For v1.0, zip the publish output
58-
# as a stopgap so users can still download and run.
59-
60-
- name: Package (stopgap zip)
58+
# ── ZIP (GitHub Releases sideload) ────────────────────────────────────
59+
- name: Package zip
6160
shell: pwsh
6261
run: |
6362
Compress-Archive -Path publish/* -DestinationPath "WindowSeat-${{ steps.version.outputs.VERSION }}-win-x64.zip"
6463
64+
# ── MSIX (Microsoft Store submission) ─────────────────────────────────
65+
- name: Patch manifest version
66+
shell: pwsh
67+
run: |
68+
$v = "${{ steps.version.outputs.VERSION }}.0"
69+
$path = "packaging/WindowSeat.Package/Package.appxmanifest"
70+
(Get-Content $path -Raw) `
71+
-replace '(?<=<Identity[^>]*Version=")[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+', $v |
72+
Set-Content $path
73+
Write-Host "Manifest version set to $v"
74+
75+
- name: Build MSIX package
76+
shell: pwsh
77+
run: |
78+
msbuild packaging/WindowSeat.Package/WindowSeat.Package.wapproj `
79+
/p:Configuration=Release `
80+
/p:Platform=x64 `
81+
/p:AppxPackageSigningEnabled=false `
82+
/p:AppxAutoIncrementPackageRevision=false `
83+
/p:GenerateTestArtifacts=false `
84+
"/p:AppxPackageDir=${{ github.workspace }}\artifacts\msix\\"
85+
86+
- name: Upload MSIX (Store submission artifact)
87+
uses: actions/upload-artifact@v4
88+
with:
89+
name: WindowSeat-${{ steps.version.outputs.VERSION }}-store-package
90+
path: artifacts/msix/*.msix
91+
6592
- name: Create GitHub Release
6693
uses: softprops/action-gh-release@v2
6794
with:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ For advanced configuration see [docs/power-user-guide.md](docs/power-user-guide.
5959
## Building from Source
6060

6161
**Prerequisites**
62-
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
62+
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
6363
- Visual Studio 2022 (17.8+) with the **Windows application development** workload, or VS Code with the C# Dev Kit extension
6464

6565
**Clone and build**

WindowSeat.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowSeat.Settings", "src\
1010
EndProject
1111
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowSeat.Tests", "src\WindowSeat.Tests\WindowSeat.Tests.csproj", "{A1B2C3D4-0004-0004-0004-000000000004}"
1212
EndProject
13+
Project("{C7167F0D-BC9F-4E6A-9F78-5F2B13F8E92E}") = "WindowSeat.Package", "packaging\WindowSeat.Package\WindowSeat.Package.wapproj", "{D1E2F3A4-0005-0005-0005-000000000005}"
14+
EndProject
1315
Global
1416
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1517
Debug|Any CPU = Debug|Any CPU
@@ -32,5 +34,9 @@ Global
3234
{A1B2C3D4-0004-0004-0004-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU
3335
{A1B2C3D4-0004-0004-0004-000000000004}.Release|Any CPU.ActiveCfg = Release|Any CPU
3436
{A1B2C3D4-0004-0004-0004-000000000004}.Release|Any CPU.Build.0 = Release|Any CPU
37+
{D1E2F3A4-0005-0005-0005-000000000005}.Debug|Any CPU.ActiveCfg = Debug|x64
38+
{D1E2F3A4-0005-0005-0005-000000000005}.Debug|Any CPU.Build.0 = Debug|x64
39+
{D1E2F3A4-0005-0005-0005-000000000005}.Release|Any CPU.ActiveCfg = Release|x64
40+
{D1E2F3A4-0005-0005-0005-000000000005}.Release|Any CPU.Build.0 = Release|x64
3541
EndGlobalSection
3642
EndGlobal

docs/WindowSeat-Scope.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
**Last Updated:** 2026-03-30
55
**License:** MIT
66
**Target Platform:** Windows 11 (primary), Windows 10 22H2+ (best effort)
7-
**Stack:** .NET 8 LTS, C#, WPF, PowerShell (build/packaging tooling)
7+
**Stack:** .NET 10, C#, WPF, PowerShell (build/packaging tooling)
88

99
---
1010

docs/contributing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Thank you for your interest in contributing. This document covers everything you
66

77
## Prerequisites
88

9-
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
9+
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
1010
- Visual Studio 2022 (17.8+) with the **Windows application development** workload
1111
_or_ VS Code with the [C# Dev Kit](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit) extension
1212
- Git

docs/user-guide.md

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,26 @@ When you open an application on a multi-monitor Windows setup, Windows often ign
2020

2121
## Installation
2222

23+
### Microsoft Store (Recommended)
24+
25+
1. Open the **Microsoft Store** on your PC
26+
2. Search for **WindowSeat** or follow the link from the [GitHub Releases page](https://github.com/stmba/WindowSeat/releases)
27+
3. Click **Get** (or **Install**)
28+
4. WindowSeat starts automatically — look for the 🪑 icon in your system tray
29+
30+
The Store version updates automatically and can be uninstalled cleanly from Settings → Apps.
31+
32+
### ZIP Download (Technical Users / Sideload)
33+
34+
If you prefer not to use the Store:
35+
2336
1. Go to the [Releases page](https://github.com/stmba/WindowSeat/releases) on GitHub
24-
2. Download the latest `WindowSeat.msix` file
25-
3. Double-click the downloaded file
26-
4. If Windows SmartScreen appears, click **More info** then **Run anyway**
27-
_(This warning appears because WindowSeat is not yet signed with a paid certificate. The source code is fully open for review at github.com/stmba/WindowSeat.)_
28-
5. Follow the installer prompts and click **Install**
29-
6. WindowSeat starts automatically — look for the 🪑 icon in your system tray
37+
2. Download the latest `WindowSeat-win-x64.zip`
38+
3. Extract the ZIP to a folder of your choice (e.g. `C:\Program Files\WindowSeat\`)
39+
4. Run `WindowSeat.exe`
40+
5. Look for the 🪑 icon in your system tray
41+
42+
> **Note:** The ZIP version has no installer. There is no entry in Add/Remove Programs. Auto-start at login works via the in-app Settings toggle as normal.
3043
3144
---
3245

@@ -91,11 +104,19 @@ Click **Save** to apply your changes. Click **Cancel** to discard them.
91104

92105
## Uninstalling
93106

107+
### Store version
108+
94109
1. Open **Settings → Apps → Installed apps**
95110
2. Search for **WindowSeat**
96111
3. Click the three-dot menu and choose **Uninstall**
97112

98-
WindowSeat's settings file at `%AppData%\WindowSeat\settings.json` is not removed by the uninstaller. You can delete this folder manually if you want a complete clean removal.
113+
### ZIP version
114+
115+
1. Right-click the 🪑 tray icon and choose **Exit**
116+
2. Delete the folder you extracted WindowSeat into
117+
3. If you enabled auto-start, open **Task Manager → Startup apps** and remove the WindowSeat entry (or toggle it off in Settings before exiting)
118+
119+
In both cases, WindowSeat's settings file at `%AppData%\WindowSeat\settings.json` is not removed automatically. Delete that folder manually if you want a complete clean removal.
99120

100121
---
101122

514 Bytes
Loading
188 Bytes
Loading
196 Bytes
Loading

0 commit comments

Comments
 (0)