diff --git a/nginx.conf b/nginx.conf
index 1247922..3f3094c 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -40,6 +40,15 @@ http {
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+ add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' https://static.cloudflareinsights.com; object-src 'none';" always;
+
+ # Favicon: serve at standard /favicon.ico location
+ location = /favicon.ico {
+ alias /usr/share/nginx/html/assets/logos/favicon.png;
+ expires 7d;
+ add_header Cache-Control "public, max-age=604800";
+ access_log off;
+ }
# Logo assets: 1 hour cache
location ~* ^/assets/logos/ {
diff --git a/public/about.html b/public/about.html
index 5b21c27..bbffe62 100644
--- a/public/about.html
+++ b/public/about.html
@@ -4,6 +4,7 @@
+
Keyboard Vagabond - About
diff --git a/public/assets/logos/favicon.png b/public/assets/logos/favicon.png
new file mode 100644
index 0000000..6a5b453
Binary files /dev/null and b/public/assets/logos/favicon.png differ
diff --git a/public/index.html b/public/index.html
index 5a17e3a..b80c420 100644
--- a/public/index.html
+++ b/public/index.html
@@ -5,6 +5,7 @@
+
Keyboard Vagabond - Fediverse for Digital Nomads
diff --git a/public/site-scripts/theme-toggle.js b/public/site-scripts/theme-toggle.js
index ff286b1..4fe12d8 100644
--- a/public/site-scripts/theme-toggle.js
+++ b/public/site-scripts/theme-toggle.js
@@ -40,10 +40,7 @@
applyTheme(storedTheme);
- themeToggle.addEventListener('click', toggleTheme);
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
- // Only apply theme if user hasn't made an explicit choice
const storedTheme = getStoredTheme();
if (storedTheme === 'auto') {
applyTheme();