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 + + +