diff --git a/src/auto_task/APP_GENERATOR_PROMPT.md b/src/auto_task/APP_GENERATOR_PROMPT.md index 50c483b6b..7e1cec36c 100644 --- a/src/auto_task/APP_GENERATOR_PROMPT.md +++ b/src/auto_task/APP_GENERATOR_PROMPT.md @@ -492,8 +492,8 @@ Every HTML page MUST include proper SEO meta tags: {Page Title} - {App Name} - - + + ``` diff --git a/src/designer/mod.rs b/src/designer/mod.rs index 13b2cabad..f914683d8 100644 --- a/src/designer/mod.rs +++ b/src/designer/mod.rs @@ -1144,7 +1144,7 @@ Guidelines: - Forms should use hx-post for submissions - Lists should use hx-get with pagination - IMPORTANT: Use RELATIVE paths for app assets (styles.css, app.js, NOT /static/styles.css) -- For HTMX, use CDN: +- For HTMX, use LOCAL: (NO external CDN) - CSS link should be: Respond with valid JSON only."#, diff --git a/src/main.rs b/src/main.rs index a437a5faf..47c232c61 100644 --- a/src/main.rs +++ b/src/main.rs @@ -314,6 +314,8 @@ async fn run_axum_server( auth_config.clone(), auth_middleware, )) + // Vendor JS files (htmx, etc.) served locally - no CDN + .nest_service("/js/vendor", ServeDir::new("./botserver-stack/static/js/vendor")) // Static files fallback for legacy /apps/* paths .nest_service("/static", ServeDir::new(&site_path)) // Security middleware stack (order matters - first added is outermost) diff --git a/src/security/headers.rs b/src/security/headers.rs index 810fd5c96..8a9512cc1 100644 --- a/src/security/headers.rs +++ b/src/security/headers.rs @@ -24,10 +24,10 @@ impl Default for SecurityHeadersConfig { Self { content_security_policy: Some( "default-src 'self'; \ - script-src 'self' 'unsafe-inline' 'unsafe-eval' https://unpkg.com https://cdnjs.cloudflare.com https://cdn.jsdelivr.net; \ - style-src 'self' 'unsafe-inline' https://unpkg.com https://cdnjs.cloudflare.com https://cdn.jsdelivr.net https://fonts.googleapis.com; \ + script-src 'self' 'unsafe-inline' 'unsafe-eval'; \ + style-src 'self' 'unsafe-inline'; \ img-src 'self' data: https:; \ - font-src 'self' data: https://fonts.gstatic.com; \ + font-src 'self' data:; \ connect-src 'self' wss: https:; \ frame-ancestors 'self'; \ base-uri 'self'; \