From 6f454fe9573e0fc2e8b0ec643780e7021e780b8d Mon Sep 17 00:00:00 2001 From: sysadmin Date: Tue, 9 Jun 2026 02:15:46 +0100 Subject: [PATCH] feat(welcome): author Daily-Driver/Privacy-Max/Journalist/Developer flavours --- windows/flavours/daily-driver.json | 9 ++++++++ windows/flavours/developer.json | 9 ++++++++ windows/flavours/journalist.json | 9 ++++++++ windows/flavours/privacy-max.json | 9 ++++++++ .../ShippedFlavoursTests.cs | 21 +++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 windows/flavours/daily-driver.json create mode 100644 windows/flavours/developer.json create mode 100644 windows/flavours/journalist.json create mode 100644 windows/flavours/privacy-max.json create mode 100644 windows/welcome/tests/SilverOS.Welcome.Tests/ShippedFlavoursTests.cs diff --git a/windows/flavours/daily-driver.json b/windows/flavours/daily-driver.json new file mode 100644 index 0000000..976ab5f --- /dev/null +++ b/windows/flavours/daily-driver.json @@ -0,0 +1,9 @@ +{ + "id": "daily-driver", + "label": "Daily-Driver", + "description": "Balanced privacy and usability. Full hardened baseline; app control in audit.", + "isDefault": true, + "hardening": { "modules": ["00","01","02","03","04","05","06","07"], "params": { "wdac": "audit" } }, + "appSet": ["SilverBrowser","SilverVPN","SilverKeys"], + "settings": { "autoLock": 120 } +} diff --git a/windows/flavours/developer.json b/windows/flavours/developer.json new file mode 100644 index 0000000..75e5f1b --- /dev/null +++ b/windows/flavours/developer.json @@ -0,0 +1,9 @@ +{ + "id": "developer", + "label": "Developer", + "description": "Hardened baseline with developer tooling allowances.", + "isDefault": false, + "hardening": { "modules": ["00","01","02","03","04","05","06","07"], "params": { "wdac": "audit" } }, + "appSet": ["SilverBrowser","SilverVPN","SilverKeys"], + "settings": { "autoLock": 300 } +} diff --git a/windows/flavours/journalist.json b/windows/flavours/journalist.json new file mode 100644 index 0000000..8cf0141 --- /dev/null +++ b/windows/flavours/journalist.json @@ -0,0 +1,9 @@ +{ + "id": "journalist", + "label": "Journalist", + "description": "Privacy-first with duress + secure comms emphasis.", + "isDefault": false, + "hardening": { "modules": ["00","01","02","03","04","05","06","07"], "params": { "wdac": "enforce" } }, + "appSet": ["SilverBrowser","SilverVPN","SilverChat","SilverDuress","SilverKeys","SilverSync"], + "settings": { "autoLock": 60 } +} diff --git a/windows/flavours/privacy-max.json b/windows/flavours/privacy-max.json new file mode 100644 index 0000000..8995e19 --- /dev/null +++ b/windows/flavours/privacy-max.json @@ -0,0 +1,9 @@ +{ + "id": "privacy-max", + "label": "Privacy-Max", + "description": "Maximum lockdown. App control enforced, tightest toggles.", + "isDefault": false, + "hardening": { "modules": ["00","01","02","03","04","05","06","07"], "params": { "wdac": "enforce" } }, + "appSet": ["SilverBrowser","SilverVPN","SilverKeys","SilverDuress","SilverChat"], + "settings": { "autoLock": 60 } +} diff --git a/windows/welcome/tests/SilverOS.Welcome.Tests/ShippedFlavoursTests.cs b/windows/welcome/tests/SilverOS.Welcome.Tests/ShippedFlavoursTests.cs new file mode 100644 index 0000000..c67d196 --- /dev/null +++ b/windows/welcome/tests/SilverOS.Welcome.Tests/ShippedFlavoursTests.cs @@ -0,0 +1,21 @@ +using SilverOS.Welcome.Core.Flavours; +using Xunit; + +public class ShippedFlavoursTests +{ + private static string FlavoursDir() + { + var d = AppContext.BaseDirectory; + while (d is not null && !Directory.Exists(Path.Combine(d, "windows", "flavours"))) + d = Directory.GetParent(d)?.FullName; + return Path.Combine(d!, "windows", "flavours"); + } + + [Fact] + public void All_shipped_flavours_are_valid_and_one_is_default() + { + var loaded = new FlavourLoader().Load(FlavoursDir()); + Assert.Equal(4, loaded.Count); + Assert.Equal("daily-driver", loaded[0].Id); + } +}