aboutsummaryrefslogtreecommitdiff
path: root/api/debug/dashboard.php
Commit message (Collapse)AuthorAgeFilesLines
* feat(newos4-debug): dashboard triage + thread panels, mobile layout, gate ↵Agando2026-10-231-12/+163
| | | | | | | | | | | | | | | | | | | | | | error.php - Triage card reads admin/docs/newos4-triage-latest.json defensively: missing/unreadable renders as a warning pill, never as zeros (a zero here reads as "nothing is wrong"). Freshness pill goes stale past 26h so a dead collector cannot look healthy. - Maintenance thread merges in-app `feedback` reports (kind=maintenance) with agent replies from data/maintenance/replies.json into one chronological view. - Mobile: <=640px single column, smaller type, .table-scroll wrappers, Type column hidden, max-width clamp. verify-mobile.py: 360/390px, light+dark -> ALL VIEWPORTS OK, page width == viewport (no horizontal overflow). - "Last ingest" now uses max(ingested_at) instead of end($errors): after the prune the array is not chronological and the header contradicted the triage card by 3 days. - Auto-refresh only fires while the tab is visible (was an unconditional 30s reload). - Fixed triage checks parsing: digest ships {exit, findings[]}, not a list of strings — the first render fataled on stripos(array). Verified 15,167 B render, 0 PHP errors. nginx (not in git): error.php added to the admin-gated read regex alongside stats|errors|clusters|dashboard|agent-replies — error.php?hash= was still serving stacks to anonymous callers. All six now answer 302 without a session.
* fix(newos4-debug): idempotent ingest, admin-gated reads, honest counts ↵Agando2026-10-231-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (v4.6.52-53) Root cause: _syncToBackend() re-sent the whole error DB with cumulative counts every 300s, and ingest.php did count += client count per batch. 33 real signatures had accumulated 116,696 "occurrences" (one self-referential row alone: 46,133). Backend - ingest.php: per-(session,hash) synced map, adds only the delta, resets prev when the client count shrank (cleared localStorage), caps delta at 5000, bounds synced at 500 hashes and sessions at 200, normalises timestamps to +00:00, 30-day retention that also purges dropped hashes from every synced map, returns `accepted` (entries) next to `ingested` (occurrences). - stats.php/dashboard.php: total_errors = occurrences, unique_errors = signatures, last-ingest card. The two numbers were inconsistent by ~3,500x. - health.php: reports self_referential count and status=degraded instead of ok. - Pruned live data: 33 -> 23 records, 116,696 -> 58,759 occurrences, max cluster 110,226 -> 52,387 (archive kept in data/debug/archive/). - nginx: stats/errors/clusters/dashboard/agent-replies now behind auth_request /_wx11_admin_auth (302 without a session); ingest/report/health stay public for telemetry. Verified: reads 302, ingest 200, report 400. Client - module-debug-supervisor.js: sends only hashes whose count changed (persisted webx11_debug_synced), records synced counts only after success, stops auto-filing aborts/timeouts and debug-pipeline requests as bug reports (2 of the last 5 reports were "user aborted a request"). Verified with a scratch php -S copy: same batch POSTed 3x -> count stays 5; count=99999 -> clamped to 1000; retention dropped 10 legacy rows.
* newOS4 v4.6.37: bug-report pipeline (report.php, bug command, HTML ↵Agando2026-10-181-1/+1
| | | | generator, telemetry-loop fix)
* auto: 2026-07-29_20:50 changes — gunes sponsorluk page, bunq payment ↵Agando2026-07-291-0/+200
modal, AI platforms, news W30