FIX 11v4: hamburger EVENT DELEGATION (survives SPA re-render). v19. Playwright verified.

This commit is contained in:
WEVIA-Bot
2026-04-07 00:26:04 +02:00
parent 7fdbbb0b74
commit 440d459091
11 changed files with 49 additions and 19 deletions

View File

@@ -1 +1 @@
{"timestamp":"2026-04-06 22:23:45","scan_ms":7928,"servers":{"s204":{"ip":"204.168.152.13","label":"S204 Primary","services":[{"name":"nginx","status":"active","port":"80\/443"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql-16","status":"active","port":"5432"},{"name":"deerflow","status":"active","port":"2024"},{"name":"deerflow-gw","status":"active","port":"8001"},{"name":"deerflow-fe","status":"active","port":"3000"},{"name":"ollama","status":"active","port":"11434","info":"9 models"}],"docker":[{"name":"authentik-db","status":"Up 2 hours"},{"name":"authentik-redis","status":"Up 2 hours"},{"name":"authentik-server","status":"Up 2 hours (healthy)"},{"name":"authentik-worker","status":"Up 2 hours (healthy)"},{"name":"chatwoot-redis","status":"Up 2 hours"},{"name":"langfuse","status":"Up 2 hours"},{"name":"loki","status":"Up 2 hours"},{"name":"mattermost","status":"Up 2 hours (healthy)"},{"name":"n8n","status":"Up 2 hours"},{"name":"node-exporter","status":"Up 2 hours"},{"name":"plausible-db","status":"Up 2 hours"},{"name":"plausible-events","status":"Up 2 hours"},{"name":"plausible","status":"Up 2 hours"},{"name":"prometheus","status":"Up 2 hours"},{"name":"qdrant","status":"Up 2 hours"},{"name":"searxng","status":"Up 2 hours"},{"name":"twenty-redis","status":"Up 2 hours"},{"name":"twenty","status":"Up 2 hours"},{"name":"uptime-kuma","status":"Up 2 hours (healthy)"},{"name":"vaultwarden","status":"Up 2 hours (healthy)"}]},"s95":{"ip":"95.216.167.89","label":"S95 WEVADS","services":[{"name":"kumomta","status":"active","port":"587"},{"name":"apache2","status":"active","port":"80"},{"name":"postgresql","status":"active","port":"5432"},{"name":"postfix","status":"active","port":"2525"},{"name":"pmta","status":"active","port":"25"},{"name":"sentinel","status":"active","port":"5890"},{"name":"adx","status":"active","port":"5821"},{"name":"arsenal","status":"active","port":"5822"}],"docker":[{"name":"listmonk_db","status":"Up 3 days"},{"name":"listmonk","status":"Up 3 days"}]},"s151":{"ip":"151.80.235.110","label":"S151 OVH","services":[{"name":"nginx","status":"active","port":"80"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql","status":"active","port":"5432"},{"name":"ollama","status":"active","port":"11434"}],"docker":[{"name":"ollama","status":"Up 13 days"}]},"blade":{"ip":"local","label":"Razer Blade","services":[{"name":"Sentinel Agent","status":"active","port":"\u2014","info":"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1"}],"docker":[]}},"crons":[{"server":"S95","user":"root","schedule":"*\/30 * * * *","command":"php \/opt\/wevads\/scripts\/ethica\/ethica-validator.php 500 >> \/opt\/wevads\/logs\/ethica-validator.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 *\/4 * * *","command":"php \/opt\/wevads\/scripts\/cron-bounces.php >> \/var\/log\/wevads\/bounces.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 3 * * *","command":"\/root\/backups\/daily_backup.sh","source":"crontab"},{"server":"S95","user":"root","schedule":"0 4 * * *","command":"\/opt\/wevads\/scripts\/auto-backup-github.sh >> \/var\/log\/wevads\/backup.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 0 * * *","command":"php \/opt\/wevads\/scripts\/daily-stats-aggregate.php >> \/var\/log\/wevads\/daily-stats.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 1 * * *","command":"php \/opt\/wevads\/scripts\/cron-engagement.php >> \/var\/log\/wevads\/engagement.log 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/5 * * * *","command":"curl -s -m 10 http:\/\/localhost:11434\/api\/generate -d {model:granite4,prompt:ok,stream:false,keep_alive:-1} > \/dev\/null 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/10 * * * *","command":"docker start openclaw 2>\/dev\/null","source":"crontab"},{"server":"S151","user":"root","schedule":"*\/5 * * * *","command":"\/opt\/tracking_monitor.sh","source":"crontab"},{"server":"Blade","user":"SYSTEM","schedule":"*\/60s loop","command":"sentinel-agent.ps1 (auto-sync S204)","source":"Task Scheduler"}],"stats":{"total_crons":10,"total_services":20,"total_docker":23}}
{"timestamp":"2026-04-06 22:25:47","scan_ms":7754,"servers":{"s204":{"ip":"204.168.152.13","label":"S204 Primary","services":[{"name":"nginx","status":"active","port":"80\/443"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql-16","status":"active","port":"5432"},{"name":"deerflow","status":"active","port":"2024"},{"name":"deerflow-gw","status":"active","port":"8001"},{"name":"deerflow-fe","status":"active","port":"3000"},{"name":"ollama","status":"active","port":"11434","info":"9 models"}],"docker":[{"name":"authentik-db","status":"Up 2 hours"},{"name":"authentik-redis","status":"Up 2 hours"},{"name":"authentik-server","status":"Up 2 hours (healthy)"},{"name":"authentik-worker","status":"Up 2 hours (healthy)"},{"name":"chatwoot-redis","status":"Up 2 hours"},{"name":"langfuse","status":"Up 2 hours"},{"name":"loki","status":"Up 2 hours"},{"name":"mattermost","status":"Up 2 hours (healthy)"},{"name":"n8n","status":"Up 2 hours"},{"name":"node-exporter","status":"Up 2 hours"},{"name":"plausible-db","status":"Up 2 hours"},{"name":"plausible-events","status":"Up 2 hours"},{"name":"plausible","status":"Up 2 hours"},{"name":"prometheus","status":"Up 2 hours"},{"name":"qdrant","status":"Up 2 hours"},{"name":"searxng","status":"Up 2 hours"},{"name":"twenty-redis","status":"Up 2 hours"},{"name":"twenty","status":"Up 2 hours"},{"name":"uptime-kuma","status":"Up 2 hours (healthy)"},{"name":"vaultwarden","status":"Up 2 hours (healthy)"}]},"s95":{"ip":"95.216.167.89","label":"S95 WEVADS","services":[{"name":"kumomta","status":"active","port":"587"},{"name":"apache2","status":"active","port":"80"},{"name":"postgresql","status":"active","port":"5432"},{"name":"postfix","status":"active","port":"2525"},{"name":"pmta","status":"active","port":"25"},{"name":"sentinel","status":"active","port":"5890"},{"name":"adx","status":"active","port":"5821"},{"name":"arsenal","status":"active","port":"5822"}],"docker":[{"name":"listmonk_db","status":"Up 3 days"},{"name":"listmonk","status":"Up 3 days"}]},"s151":{"ip":"151.80.235.110","label":"S151 OVH","services":[{"name":"nginx","status":"active","port":"80"},{"name":"php-fpm","status":"active","port":"9000"},{"name":"postgresql","status":"active","port":"5432"},{"name":"ollama","status":"active","port":"11434"}],"docker":[{"name":"ollama","status":"Up 13 days"}]},"blade":{"ip":"local","label":"Razer Blade","services":[{"name":"Sentinel Agent","status":"active","port":"\u2014","info":"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1"}],"docker":[]}},"crons":[{"server":"S95","user":"root","schedule":"*\/30 * * * *","command":"php \/opt\/wevads\/scripts\/ethica\/ethica-validator.php 500 >> \/opt\/wevads\/logs\/ethica-validator.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 *\/4 * * *","command":"php \/opt\/wevads\/scripts\/cron-bounces.php >> \/var\/log\/wevads\/bounces.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"0 3 * * *","command":"\/root\/backups\/daily_backup.sh","source":"crontab"},{"server":"S95","user":"root","schedule":"0 4 * * *","command":"\/opt\/wevads\/scripts\/auto-backup-github.sh >> \/var\/log\/wevads\/backup.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 0 * * *","command":"php \/opt\/wevads\/scripts\/daily-stats-aggregate.php >> \/var\/log\/wevads\/daily-stats.log 2>&1","source":"crontab"},{"server":"S95","user":"root","schedule":"30 1 * * *","command":"php \/opt\/wevads\/scripts\/cron-engagement.php >> \/var\/log\/wevads\/engagement.log 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/5 * * * *","command":"curl -s -m 10 http:\/\/localhost:11434\/api\/generate -d {model:granite4,prompt:ok,stream:false,keep_alive:-1} > \/dev\/null 2>&1","source":"crontab"},{"server":"S151","user":"ubuntu","schedule":"*\/10 * * * *","command":"docker start openclaw 2>\/dev\/null","source":"crontab"},{"server":"S151","user":"root","schedule":"*\/5 * * * *","command":"\/opt\/tracking_monitor.sh","source":"crontab"},{"server":"Blade","user":"SYSTEM","schedule":"*\/60s loop","command":"sentinel-agent.ps1 (auto-sync S204)","source":"Task Scheduler"}],"stats":{"total_crons":10,"total_services":20,"total_docker":23}}

View File

@@ -13,5 +13,5 @@
"Run simulation",
"CEO insights"
],
"timestamp": "2026-04-06 22:20:01"
"timestamp": "2026-04-06 22:25:01"
}

View File

@@ -1 +1 @@
{"ts": "20260407_002146", "version": "3.2", "score": 99, "pass": 152, "fail": 1, "total": 153, "elapsed": 39.1, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 9, "fail": 1}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": [{"n": "Caps10", "c": "01AVR", "s": "FAIL", "d": "9/10"}]}
{"ts": "20260407_002355", "version": "3.2", "score": 99, "pass": 152, "fail": 1, "total": 153, "elapsed": 38.5, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 9, "fail": 1}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": [{"n": "Caps10", "c": "01AVR", "s": "FAIL", "d": "9/10"}]}

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
{
"timestamp": "2026-04-07 00:20:11",
"timestamp": "2026-04-07 00:25:06",
"healthy": true,
"issues": [],
"fixes": [],

View File

@@ -1,5 +1,5 @@
{
"timestamp": "2026-04-06 22:20:04",
"timestamp": "2026-04-06 22:25:03",
"healthy": true,
"checks": {
"outpost": "UP",

View File

@@ -1,5 +1,5 @@
{
"timestamp": "2026-04-06 22:20:01",
"timestamp": "2026-04-06 22:25:01",
"version": "1.0",
"disk": 80,
"ram": 34,
@@ -14,16 +14,16 @@
{
"level": "critical",
"msg": "S204:mirofish DOWN (:5001)",
"time": "22:20:01"
"time": "22:25:01"
}
],
"log": [
"22:20:01 Disk: 80%",
"22:20:02 SSL: 363d remaining",
"22:20:02 Docker: 21 containers",
"22:20:02 Ollama: 9 models, 26.2GB",
"22:20:02 RAM: 34%",
"22:20:02 Arch score: 93\/100"
"22:25:01 Disk: 80%",
"22:25:01 SSL: 363d remaining",
"22:25:01 Docker: 21 containers",
"22:25:01 Ollama: 9 models, 26.2GB",
"22:25:01 RAM: 34%",
"22:25:01 Arch score: 93\/100"
],
"s204_services": 8,
"s95_mta": 5

View File

@@ -1 +1 @@
{"ts":"00:22","status":"offline"}
{"ts":"00:24","status":"offline"}

View File

@@ -1,2 +1,2 @@
{"ts":"00:20","disk":"80%","ram":"34%","docker_dead":"1","ssl":"Certificate will not expire
{"ts":"00:25","disk":"80%","ram":"34%","docker_dead":"1","ssl":"Certificate will not expire
ok","models":"9","qdrant":"4","errors":"20"}

View File

@@ -354,5 +354,5 @@ document.addEventListener('click', function(e) {
}
}, true);
</script>
<script src="/weval-faq-fix.js?v=18" defer></script></body>
<script src="/weval-faq-fix.js?v=19" defer></script></body>
</html>

View File

@@ -348,5 +348,35 @@ document.querySelectorAll('[class*=marquee],[class*=scroll],[class*=slider]').fo
/* FIX 11v3: hamburger clone */
(function(){var t=0;var iv=setInterval(function(){var b=document.querySelector(".mobile-toggle");var n=document.querySelector(".mobile-navigation");if(b&&n&&!b.dataset.wvC){var nb=b.cloneNode(true);b.parentNode.replaceChild(nb,b);nb.dataset.wvC="1";n.style.position="fixed";n.style.top="0";n.style.left="-100%";n.style.width="85%";n.style.maxWidth="320px";n.style.height="100vh";n.style.background="#1a1a2e";n.style.zIndex="10000";n.style.transition="left .3s";n.style.padding="70px 0 20px";n.style.overflowY="auto";n.style.display="flex";n.style.flexDirection="column";n.style.boxShadow="2px 0 20px rgba(0,0,0,.5)";nb.addEventListener("click",function(e){e.preventDefault();e.stopPropagation();var open=n.style.left==="0px";n.style.left=open?"-100%":"0px"});n.querySelectorAll("button,a").forEach(function(l){l.style.cssText="display:block;width:100%;padding:14px 24px;color:white;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.08);font-size:1rem;text-align:left;cursor:pointer";l.addEventListener("click",function(){n.style.left="-100%"})});clearInterval(iv)}if(++t>80)clearInterval(iv)},400)})();
/* FIX 11v4: hamburger event delegation (survives SPA re-render) */
(function(){
var navStyled=false;
document.addEventListener("click",function(e){
var btn=e.target.closest(".mobile-toggle");
if(!btn)return;
e.preventDefault();e.stopPropagation();
var nav=document.querySelector(".mobile-navigation");
if(!nav)return;
if(!navStyled){
navStyled=true;
nav.style.position="fixed";nav.style.top="0";nav.style.left="-100%";
nav.style.width="85%";nav.style.maxWidth="320px";nav.style.height="100vh";
nav.style.background="#1a1a2e";nav.style.zIndex="10000";
nav.style.transition="left .3s";nav.style.padding="70px 0 20px";
nav.style.overflowY="auto";nav.style.display="flex";
nav.style.flexDirection="column";nav.style.boxShadow="2px 0 20px rgba(0,0,0,.5)";
nav.querySelectorAll("button,a").forEach(function(l){
l.style.cssText="display:block;width:100%;padding:14px 24px;color:white;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.08);font-size:1rem;text-align:left;cursor:pointer";
});
var cl=document.createElement("div");cl.innerHTML="×";
cl.style.cssText="position:absolute;top:15px;right:18px;font-size:32px;color:white;cursor:pointer;z-index:10001";
cl.addEventListener("click",function(){nav.style.left="-100%"});
nav.insertBefore(cl,nav.firstChild);
nav.querySelectorAll("button,a").forEach(function(l){
l.addEventListener("click",function(){nav.style.left="-100%"});
});
}
var open=nav.style.left==="0px";
nav.style.left=open?"-100%":"0px";
},true);
})();