diff --git a/core/archipelago/src/server.rs b/core/archipelago/src/server.rs index 16e6e5b5..ed9bc7d9 100644 --- a/core/archipelago/src/server.rs +++ b/core/archipelago/src/server.rs @@ -163,6 +163,7 @@ impl Server { }); if let Err(e) = Http::new() + .http1_keep_alive(false) .serve_connection(stream, service) .with_upgrades() .await diff --git a/image-recipe/configs/nginx-archipelago.conf b/image-recipe/configs/nginx-archipelago.conf index 347d5eba..fc049190 100644 --- a/image-recipe/configs/nginx-archipelago.conf +++ b/image-recipe/configs/nginx-archipelago.conf @@ -11,7 +11,7 @@ server { add_header X-Frame-Options "SAMEORIGIN" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; - add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:; connect-src 'self' ws: wss:; frame-src 'self' http://127.0.0.1:* http://localhost:*" always; + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:; connect-src 'self' ws: wss:; frame-src *" always; # AIUI SPA (Chat mode iframe) location /aiui/ { @@ -28,7 +28,7 @@ server { proxy_pass http://127.0.0.1:3141/; proxy_http_version 1.1; proxy_set_header Host $host; - proxy_set_header Connection ""; + # Connection header managed by nginx default proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; proxy_cache off; @@ -45,7 +45,7 @@ server { proxy_pass https://openrouter.ai/api/; proxy_http_version 1.1; proxy_set_header Host openrouter.ai; - proxy_set_header Connection ""; + # Connection header managed by nginx default proxy_ssl_server_name on; proxy_connect_timeout 120s; proxy_read_timeout 120s; @@ -65,7 +65,7 @@ server { proxy_cache off; proxy_connect_timeout 120s; proxy_read_timeout 300s; - proxy_set_header Connection ""; + # Connection header managed by nginx default } # AIUI web search proxy — SearXNG on port 8888 @@ -108,6 +108,7 @@ server { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; + # Connection header managed by nginx default # Increase timeout for long-running operations (e.g., Docker image pulls) proxy_connect_timeout 600s; @@ -421,7 +422,7 @@ server { add_header X-Frame-Options "SAMEORIGIN" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; - add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:; connect-src 'self' ws: wss:; frame-src 'self' http://127.0.0.1:* http://localhost:*" always; + add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; font-src 'self' data:; connect-src 'self' ws: wss:; frame-src *" always; # AIUI SPA (Chat mode iframe) location /aiui/ { @@ -436,7 +437,7 @@ server { proxy_pass http://127.0.0.1:3141/; proxy_http_version 1.1; proxy_set_header Host $host; - proxy_set_header Connection ""; + # Connection header managed by nginx default proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; proxy_cache off; @@ -456,7 +457,7 @@ server { proxy_cache off; proxy_connect_timeout 120s; proxy_read_timeout 300s; - proxy_set_header Connection ""; + # Connection header managed by nginx default } location /aiui/api/openrouter/ { if ($cookie_session = "") { @@ -465,7 +466,7 @@ server { proxy_pass https://openrouter.ai/api/; proxy_http_version 1.1; proxy_set_header Host openrouter.ai; - proxy_set_header Connection ""; + # Connection header managed by nginx default proxy_ssl_server_name on; proxy_connect_timeout 120s; proxy_read_timeout 120s; @@ -506,6 +507,7 @@ server { proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; + # Connection header managed by nginx default proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; diff --git a/neode-ui/src/components/AppLauncherOverlay.vue b/neode-ui/src/components/AppLauncherOverlay.vue index 38f6ef04..98e826dc 100644 --- a/neode-ui/src/components/AppLauncherOverlay.vue +++ b/neode-ui/src/components/AppLauncherOverlay.vue @@ -77,14 +77,39 @@