From 2924707e35d1a912e638bc953e121fa363ae09db Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Fri, 27 Feb 2026 07:24:10 +0100 Subject: [PATCH] fix(luci): Await form.Map.render() Promise before KissTheme.wrap() form.Map.render() returns a Promise, not a DOM element. Passing it directly to KissTheme.wrap() caused "does not implement interface Node" errors. Fixed by awaiting the Promise with .then() before wrapping. Affected views: - metablogizer/settings.js - localai/settings.js - domoticz/overview.js - simplex/overview.js Co-Authored-By: Claude Opus 4.5 --- .claude/HISTORY.md | 10 ++++++++++ .../luci-static/resources/view/domoticz/overview.js | 4 +++- .../luci-static/resources/view/localai/settings.js | 4 +++- .../resources/view/metablogizer/settings.js | 4 +++- .../luci-static/resources/view/simplex/overview.js | 4 +++- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index 346b56e9..aa58f810 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -3816,3 +3816,13 @@ git checkout HEAD -- index.html - Layer 2: mitmproxy WAF (request inspection, CVE detection) - All 13 MetaBlogizer sites verified working with dual WAF - **CrowdSec MCP:** Added crowdsec-local-mcp for AI-generated WAF rules + +47. **Nextcloud Apps 403 Fix - try_files Directory Match (2026-02-27)** + - **Problem:** `/apps/spreed/` and `/apps/dashboard/` returning 403 Forbidden + - **Root Cause:** nginx `try_files $uri $uri/ /index.php$request_uri;` checks `$uri/` + - `/apps/spreed/` exists as a real directory in filesystem + - nginx finds directory, tries to serve index, no index file → 403 + - **Fix:** Changed to `try_files $uri /index.php$request_uri;` + - Removed `$uri/` directory check from try_files + - All non-file requests now route directly to PHP front controller + - **Result:** Talk (/apps/spreed/) returns 303 redirect, Dashboard returns 401 (auth required) diff --git a/package/secubox/luci-app-domoticz/htdocs/luci-static/resources/view/domoticz/overview.js b/package/secubox/luci-app-domoticz/htdocs/luci-static/resources/view/domoticz/overview.js index aff9ec1d..b6dc09a6 100644 --- a/package/secubox/luci-app-domoticz/htdocs/luci-static/resources/view/domoticz/overview.js +++ b/package/secubox/luci-app-domoticz/htdocs/luci-static/resources/view/domoticz/overview.js @@ -449,6 +449,8 @@ return view.extend({ }); }; - return KissTheme.wrap([m.render()], 'admin/services/domoticz'); + return m.render().then(function(formEl) { + return KissTheme.wrap([formEl], 'admin/services/domoticz'); + }); } }); diff --git a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/settings.js b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/settings.js index 5e47ae28..037380e8 100644 --- a/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/settings.js +++ b/package/secubox/luci-app-localai/htdocs/luci-static/resources/view/localai/settings.js @@ -87,6 +87,8 @@ return view.extend({ o.default = 'vulkan'; o.depends('enabled', '1'); - return KissTheme.wrap([m.render()], 'admin/services/localai/settings'); + return m.render().then(function(formEl) { + return KissTheme.wrap([formEl], 'admin/services/localai/settings'); + }); } }); diff --git a/package/secubox/luci-app-metablogizer/htdocs/luci-static/resources/view/metablogizer/settings.js b/package/secubox/luci-app-metablogizer/htdocs/luci-static/resources/view/metablogizer/settings.js index cf48dd12..61dc6c76 100644 --- a/package/secubox/luci-app-metablogizer/htdocs/luci-static/resources/view/metablogizer/settings.js +++ b/package/secubox/luci-app-metablogizer/htdocs/luci-static/resources/view/metablogizer/settings.js @@ -68,6 +68,8 @@ return view.extend({ ''; }; - return KissTheme.wrap([m.render()], 'admin/services/metablogizer/settings'); + return m.render().then(function(formEl) { + return KissTheme.wrap([formEl], 'admin/services/metablogizer/settings'); + }); } }); diff --git a/package/secubox/luci-app-simplex/htdocs/luci-static/resources/view/simplex/overview.js b/package/secubox/luci-app-simplex/htdocs/luci-static/resources/view/simplex/overview.js index 77675ecc..6bd53595 100644 --- a/package/secubox/luci-app-simplex/htdocs/luci-static/resources/view/simplex/overview.js +++ b/package/secubox/luci-app-simplex/htdocs/luci-static/resources/view/simplex/overview.js @@ -454,6 +454,8 @@ return view.extend({ ''; }; - return KissTheme.wrap([m.render()], 'admin/services/simplex'); + return m.render().then(function(formEl) { + return KissTheme.wrap([formEl], 'admin/services/simplex'); + }); } });