diff --git a/TeamsISO.Windows.slnf b/TeamsISO.Windows.slnf
index 63a318d..dd110d4 100644
--- a/TeamsISO.Windows.slnf
+++ b/TeamsISO.Windows.slnf
@@ -2,13 +2,14 @@
"solution": {
"path": "TeamsISO.sln",
"projects": [
- "src/TeamsISO.Engine/TeamsISO.Engine.csproj",
- "src/TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj",
- "src/TeamsISO.Console/TeamsISO.Console.csproj",
- "src/TeamsISO.App/TeamsISO.App.csproj",
- "src/tests/TeamsISO.Engine.Tests/TeamsISO.Engine.Tests.csproj",
- "src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj",
- "src/tests/TeamsISO.App.Tests/TeamsISO.App.Tests.csproj"
+ "src\\TeamsISO.Engine\\TeamsISO.Engine.csproj",
+ "src\\TeamsISO.Engine.NdiInterop\\TeamsISO.Engine.NdiInterop.csproj",
+ "src\\TeamsISO.Console\\TeamsISO.Console.csproj",
+ "src\\TeamsISO.App\\TeamsISO.App.csproj",
+ "src\\TeamsISO.App.WinUI\\TeamsISO.App.WinUI.csproj",
+ "src\\tests\\TeamsISO.Engine.Tests\\TeamsISO.Engine.Tests.csproj",
+ "src\\tests\\TeamsISO.Engine.IntegrationTests\\TeamsISO.Engine.IntegrationTests.csproj",
+ "src\\tests\\TeamsISO.App.Tests\\TeamsISO.App.Tests.csproj"
]
}
}
diff --git a/TeamsISO.sln b/TeamsISO.sln
index 2cfa517..32c24bc 100644
--- a/TeamsISO.sln
+++ b/TeamsISO.sln
@@ -5,21 +5,23 @@ VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{46E05E34-8A87-4986-87D3-FE0DE4E05F44}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine", "src/TeamsISO.Engine/TeamsISO.Engine.csproj", "{F0D24EAE-9225-4DC4-B3D2-6966077287A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine", "src\TeamsISO.Engine\TeamsISO.Engine.csproj", "{F0D24EAE-9225-4DC4-B3D2-6966077287A0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.NdiInterop", "src/TeamsISO.Engine.NdiInterop/TeamsISO.Engine.NdiInterop.csproj", "{E737E54B-73DE-4F74-909C-1F0F5CF82AC6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.NdiInterop", "src\TeamsISO.Engine.NdiInterop\TeamsISO.Engine.NdiInterop.csproj", "{E737E54B-73DE-4F74-909C-1F0F5CF82AC6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{DBDF4A1D-4215-42D5-B456-2CE7159DF848}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.Tests", "src/tests/TeamsISO.Engine.Tests/TeamsISO.Engine.Tests.csproj", "{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.Tests", "src\tests\TeamsISO.Engine.Tests\TeamsISO.Engine.Tests.csproj", "{F8DBD7AB-E160-4B75-88FC-BAECDD4D44E8}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App", "src/TeamsISO.App/TeamsISO.App.csproj", "{80DCE039-3BBC-4D3F-B44B-51F324591C29}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App", "src\TeamsISO.App\TeamsISO.App.csproj", "{80DCE039-3BBC-4D3F-B44B-51F324591C29}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.IntegrationTests", "src/tests/TeamsISO.Engine.IntegrationTests/TeamsISO.Engine.IntegrationTests.csproj", "{A85E331D-026E-4BDE-B89C-0CC4C95001CE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Engine.IntegrationTests", "src\tests\TeamsISO.Engine.IntegrationTests\TeamsISO.Engine.IntegrationTests.csproj", "{A85E331D-026E-4BDE-B89C-0CC4C95001CE}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Console", "src/TeamsISO.Console/TeamsISO.Console.csproj", "{C3254998-9428-4264-A8FB-EAC9E1F9F432}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.Console", "src\TeamsISO.Console\TeamsISO.Console.csproj", "{C3254998-9428-4264-A8FB-EAC9E1F9F432}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App.Tests", "src/tests/TeamsISO.App.Tests/TeamsISO.App.Tests.csproj", "{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App.Tests", "src\tests\TeamsISO.App.Tests\TeamsISO.App.Tests.csproj", "{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamsISO.App.WinUI", "src\TeamsISO.App.WinUI\TeamsISO.App.WinUI.csproj", "{14928B5A-E45C-4265-A5D7-D13B5ED18F84}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -58,6 +60,10 @@ Global
{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {14928B5A-E45C-4265-A5D7-D13B5ED18F84}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {14928B5A-E45C-4265-A5D7-D13B5ED18F84}.Debug|Any CPU.Build.0 = Debug|x64
+ {14928B5A-E45C-4265-A5D7-D13B5ED18F84}.Release|Any CPU.ActiveCfg = Release|x64
+ {14928B5A-E45C-4265-A5D7-D13B5ED18F84}.Release|Any CPU.Build.0 = Release|x64
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{F0D24EAE-9225-4DC4-B3D2-6966077287A0} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
@@ -68,5 +74,6 @@ Global
{A85E331D-026E-4BDE-B89C-0CC4C95001CE} = {DBDF4A1D-4215-42D5-B456-2CE7159DF848}
{C3254998-9428-4264-A8FB-EAC9E1F9F432} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
{B5A6F1E7-3D2C-4F89-9A55-7E1B2A4C8D6F} = {DBDF4A1D-4215-42D5-B456-2CE7159DF848}
+ {14928B5A-E45C-4265-A5D7-D13B5ED18F84} = {46E05E34-8A87-4986-87D3-FE0DE4E05F44}
EndGlobalSection
EndGlobal
diff --git a/src/TeamsISO.App.WinUI/App.xaml b/src/TeamsISO.App.WinUI/App.xaml
new file mode 100644
index 0000000..09782b0
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/App.xaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TeamsISO.App.WinUI/App.xaml.cs b/src/TeamsISO.App.WinUI/App.xaml.cs
new file mode 100644
index 0000000..01eb562
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/App.xaml.cs
@@ -0,0 +1,38 @@
+using Microsoft.UI.Xaml;
+using TeamsISO.App.WinUI.Views;
+
+namespace TeamsISO.App.WinUI;
+
+///
+/// WinUI 3 application entry. The full startup pipeline from the WPF host
+/// (NDI runtime preflight, IsoController wiring, single-instance mutex, REST
+/// + OSC bridge, tray icon, crash diagnostics, auto-update banner, onboarding)
+/// will migrate over in subsequent commits — this initial scaffold just brings
+/// up MainWindow so the redesigned shell can be developed and previewed.
+///
+/// The engine layer (TeamsISO.Engine) is unchanged; the WinUI 3 host's
+/// responsibility is binding its view-models to the same controller surface
+/// the WPF host already uses.
+///
+public partial class App : Application
+{
+ private Window? _mainWindow;
+
+ public App()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnLaunched(LaunchActivatedEventArgs args)
+ {
+ _mainWindow = new MainWindow();
+ _mainWindow.Activate();
+ }
+
+ ///
+ /// Exposes the active main window so settings can swap RequestedTheme on
+ /// the root element without having to thread the Window reference through
+ /// every consumer.
+ ///
+ internal Window? MainWindow => _mainWindow;
+}
diff --git a/src/TeamsISO.App.WinUI/Assets/Fonts/Inter.ttf b/src/TeamsISO.App.WinUI/Assets/Fonts/Inter.ttf
new file mode 100644
index 0000000..1cb674b
Binary files /dev/null and b/src/TeamsISO.App.WinUI/Assets/Fonts/Inter.ttf differ
diff --git a/src/TeamsISO.App.WinUI/Assets/Fonts/JetBrainsMono.ttf b/src/TeamsISO.App.WinUI/Assets/Fonts/JetBrainsMono.ttf
new file mode 100644
index 0000000..b60e77f
Binary files /dev/null and b/src/TeamsISO.App.WinUI/Assets/Fonts/JetBrainsMono.ttf differ
diff --git a/src/TeamsISO.App.WinUI/Assets/dragon-mark.png b/src/TeamsISO.App.WinUI/Assets/dragon-mark.png
new file mode 100644
index 0000000..d78b7cf
Binary files /dev/null and b/src/TeamsISO.App.WinUI/Assets/dragon-mark.png differ
diff --git a/src/TeamsISO.App.WinUI/Assets/teamsiso.ico b/src/TeamsISO.App.WinUI/Assets/teamsiso.ico
new file mode 100644
index 0000000..b7be1cf
Binary files /dev/null and b/src/TeamsISO.App.WinUI/Assets/teamsiso.ico differ
diff --git a/src/TeamsISO.App.WinUI/Assets/wild-dragon-wordmark.png b/src/TeamsISO.App.WinUI/Assets/wild-dragon-wordmark.png
new file mode 100644
index 0000000..ed0804c
Binary files /dev/null and b/src/TeamsISO.App.WinUI/Assets/wild-dragon-wordmark.png differ
diff --git a/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj b/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj
new file mode 100644
index 0000000..03de33e
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/TeamsISO.App.WinUI.csproj
@@ -0,0 +1,72 @@
+
+
+
+
+ WinExe
+ net8.0-windows10.0.19041.0
+ 10.0.17763.0
+ 10.0.17763.0
+ TeamsISO.App.WinUI
+ TeamsISO
+ app.manifest
+ x64;ARM64
+ win-x64;win-arm64
+ true
+ None
+ true
+
+ 10.0.19041.38
+ enable
+ enable
+ Assets\teamsiso.ico
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TeamsISO.App.WinUI/Themes/Controls.xaml b/src/TeamsISO.App.WinUI/Themes/Controls.xaml
new file mode 100644
index 0000000..3c3bb59
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/Themes/Controls.xaml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/TeamsISO.App.WinUI/Themes/Tokens.xaml b/src/TeamsISO.App.WinUI/Themes/Tokens.xaml
new file mode 100644
index 0000000..0b35022
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/Themes/Tokens.xaml
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+ #FF0A0A0A
+ #FF080808
+ #FF141416
+ #FF1C1C1F
+ #FF26272B
+ #FF33343A
+
+
+ #FF26272B
+ #FF3A3B40
+
+
+ #FFF4F4F6
+ #FFA3A4AA
+ #FF6B6C72
+ #FF404145
+ #FF0A0A0A
+
+
+ #FF97EDF0
+ #FF97EDF0
+ #FFB5F2F4
+ #FF1B3537
+
+ #FFFB819C
+ #FF3A1922
+
+ #FF4ADE80
+ #FF13261A
+ #FFFBBF24
+ #FF3A2E12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #FFFAFAFB
+ #FFF0F1F3
+ #FFFFFFFF
+ #FFFFFFFF
+ #FFECEEF1
+ #FFE0E3E7
+
+
+ #FFE5E7EB
+ #FFD1D5DA
+
+
+ #FF0A0A0A
+ #FF4A4B50
+ #FF71747A
+ #FFB3B6BC
+ #FF0A0A0A
+
+
+ #FF97EDF0
+ #FF0E7C82
+ #FF0890A0
+ #FFE6F8F9
+
+ #FFD43E5C
+ #FFFDECF0
+
+ #FF15803D
+ #FFDCFCE7
+ #FFB45309
+ #FFFEF3C7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 4
+ 8
+ 12
+ 16
+ 24
+ 32
+ 48
+
+
+ 6
+ 8
+ 12
+ 999
+
+
+
+ ms-appx:///Assets/Fonts/Inter.ttf#Inter
+ ms-appx:///Assets/Fonts/JetBrainsMono.ttf#JetBrains Mono
+
+ 22
+ 18
+ 14
+ 13
+ 11
+ 12
+
+
diff --git a/src/TeamsISO.App.WinUI/Views/MainWindow.xaml b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml
new file mode 100644
index 0000000..72289b5
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/src/TeamsISO.App.WinUI/Views/MainWindow.xaml.cs b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml.cs
new file mode 100644
index 0000000..ee66b88
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/Views/MainWindow.xaml.cs
@@ -0,0 +1,12 @@
+using Microsoft.UI.Xaml;
+
+namespace TeamsISO.App.WinUI.Views;
+
+public sealed partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ Title = "TeamsISO";
+ }
+}
diff --git a/src/TeamsISO.App.WinUI/app.manifest b/src/TeamsISO.App.WinUI/app.manifest
new file mode 100644
index 0000000..5dbdde4
--- /dev/null
+++ b/src/TeamsISO.App.WinUI/app.manifest
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true/PM
+ PerMonitorV2, PerMonitor
+
+ true
+
+
+