diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bc8f8e8..18d61f7 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -39,6 +39,12 @@ jobs:
- name: Test
run: dotnet test SignsOfAI.slnx -c Release --no-build --nologo
+ # The web app's startup path is JavaScript, so no .NET test can execute it. These run the real
+ # boot.js against a fake network: a 503 that recovers, one that does not, a connection that
+ # hangs, and the integrity hash it must keep handing to fetch. Node's own runner, no packages.
+ - name: Test boot script
+ run: node --test tests/boot/boot.test.mjs
+
# The desktop app is WPF, so it needs a Windows runner and it is not in SignsOfAI.slnx — see the
# comment at the top of that file. Its own job keeps the build above on Linux, where it stays fast
# for the translation PRs that are the reason this workflow exists.
diff --git a/src/SignsOfAI.Web/wwwroot/index.html b/src/SignsOfAI.Web/wwwroot/index.html
index f86eaac..164284a 100644
--- a/src/SignsOfAI.Web/wwwroot/index.html
+++ b/src/SignsOfAI.Web/wwwroot/index.html
@@ -37,8 +37,140 @@
-
+
+
+
+
+