diff --git a/.github/scripts/generate_thymeleaf_previews.py b/.github/scripts/generate_thymeleaf_previews.py index 4e0a79250..e0aa44252 100755 --- a/.github/scripts/generate_thymeleaf_previews.py +++ b/.github/scripts/generate_thymeleaf_previews.py @@ -456,7 +456,6 @@ def add_static_assets_challenge58(self, content): /* Challenge 58 specific styles */ .demo-section {{ - background: #fff3cd; border: 1px solid #ffeaa7; border-radius: 6px; padding: 15px; diff --git a/.github/workflows/github-pages-preview.yml b/.github/workflows/github-pages-preview.yml index f42a5b0af..24533fd36 100644 --- a/.github/workflows/github-pages-preview.yml +++ b/.github/workflows/github-pages-preview.yml @@ -2,7 +2,6 @@ name: GitHub Pages PR Preview on: pull_request: - types: [opened, synchronize, reopened, closed] paths: - 'src/main/resources/templates/**' - 'src/main/resources/static/**' diff --git a/.lycheeignore b/.lycheeignore index 91569555d..f32f92a92 100644 --- a/.lycheeignore +++ b/.lycheeignore @@ -30,3 +30,6 @@ https://medium.com/sweetmeat/how-to-keep-a-downstream-git-repository-current-wit # Issues with lychee: https://github.com/topics/secrets-detection + +# Helm docs are flaky in CI (connection resets) +https://helm.sh/docs/intro/install/ diff --git a/js/package-lock.json b/js/package-lock.json index 27f08ceee..be142b7c7 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -1246,8 +1246,7 @@ "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/require-from-string": { "version": "2.0.2", diff --git a/pom.xml b/pom.xml index 44b6c0f43..41f046b64 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ 3.14.9 7.4.5 2.14.1 - 4.1.118.Final + 4.1.123.Final 25 3.7.1 10.0.3.0 diff --git a/src/main/resources/challenges/challenge-57/challenge-57.snippet b/src/main/resources/challenges/challenge-57/challenge-57.snippet index e62d7c2f6..1b1c6f541 100644 --- a/src/main/resources/challenges/challenge-57/challenge-57.snippet +++ b/src/main/resources/challenges/challenge-57/challenge-57.snippet @@ -11,7 +11,7 @@ -
+
💡 Tip: This AI has been given specific instructions. Try exploring what it knows!
diff --git a/src/main/resources/challenges/challenge-58/challenge-58.snippet b/src/main/resources/challenges/challenge-58/challenge-58.snippet index 679cffa0f..a8cae3301 100644 --- a/src/main/resources/challenges/challenge-58/challenge-58.snippet +++ b/src/main/resources/challenges/challenge-58/challenge-58.snippet @@ -2,16 +2,16 @@

🗄️ Database Connection Error Demo

This challenge demonstrates how database connection failures can expose sensitive credentials through error messages.

-
+

Try the vulnerable endpoint:

Click the button below to trigger a database connection error that exposes the connection string with embedded credentials.

🚨 Trigger Database Connection Error -

This endpoint simulates a database connection failure that exposes the connection string with embedded credentials.

+

This endpoint simulates a database connection failure that exposes the connection string with embedded credentials.

-
+
💡 Tip: Look for the database password in the error message or application logs.
diff --git a/src/main/resources/static/css/dark.css b/src/main/resources/static/css/dark.css index d9398ac30..9f9fd2d3d 100644 --- a/src/main/resources/static/css/dark.css +++ b/src/main/resources/static/css/dark.css @@ -112,3 +112,64 @@ .dark-mode .text-muted { color: var(--bs-gray-300) !important; } + +.dark-mode #llm-challenge-container { + background-color: #1f1f1f !important; + border-color: var(--bs-gray-700) !important; + color: var(--bs-body-color); +} + +.dark-mode #llm-challenge-container h4, +.dark-mode #llm-challenge-container p { + color: var(--bs-body-color); +} + +.dark-mode #chat-history { + background-color: #1a1a1a !important; + border-color: var(--bs-gray-700) !important; +} + +.dark-mode #chat-history .ai-message { + background-color: #2a2a2a !important; + color: var(--bs-body-color); +} + +.dark-mode #chat-history .user-message { + background-color: #243548 !important; + color: var(--bs-body-color); +} + +.dark-mode #llm-challenge-container input[type="text"] { + border-color: var(--bs-gray-700) !important; +} + +.dark-mode #llm-challenge-container button { + background-color: var(--bs-primary) !important; + border-color: var(--bs-primary) !important; +} + +.dark-mode #llm-challenge-container .chat-tip { + color: var(--bs-gray-300) !important; +} + +.dark-mode #database-challenge-container { + background-color: #1f1f1f !important; + border-color: var(--bs-gray-700) !important; + color: var(--bs-body-color); +} + +.dark-mode #database-challenge-container h4, +.dark-mode #database-challenge-container p { + color: var(--bs-body-color); +} + +.dark-mode #database-challenge-container .db-warning { + background-color: #2a2412 !important; + border-color: #6a5a2a !important; + color: var(--bs-body-color); +} + +.dark-mode #database-challenge-container .db-warning-text, +.dark-mode #database-challenge-container .db-tip { + color: var(--bs-gray-300) !important; +} diff --git a/static-site/pr-2125/pages/challenge-example.html b/static-site/pr-2125/pages/challenge-example.html index 8ebcc57d3..1b0f1ce88 100644 --- a/static-site/pr-2125/pages/challenge-example.html +++ b/static-site/pr-2125/pages/challenge-example.html @@ -224,6 +224,44 @@ border-color: white; } +.dark-mode #llm-challenge-container { + background-color: #1f1f1f; + border-color: var(--bs-gray-700); + color: var(--bs-body-color); +} + +.dark-mode #llm-challenge-container h4, +.dark-mode #llm-challenge-container p { + color: var(--bs-body-color); +} + +.dark-mode #chat-history { + background-color: #1a1a1a; + border-color: var(--bs-gray-700); +} + +.dark-mode #chat-history .ai-message { + background-color: #2a2a2a; + color: var(--bs-body-color); +} + +.dark-mode #chat-history .user-message { + background-color: #243548; + color: var(--bs-body-color); +} + +.dark-mode .chat-input { + border-color: var(--bs-gray-700); +} + +.dark-mode .chat-send-btn { + background-color: var(--bs-primary); +} + +.dark-mode .chat-tip { + color: var(--bs-gray-300); +} + /* Bootstrap CSS (minimal) */