busya
7bfc5553cf
feat: live app log console, cross-filter, JSONL export
Backend:
- /ws/app-logs — real-time app/cot log stream (raw JSONL)
- /api/logs/recent — REST snapshot of ring buffer
- GET /tasks/{id}/logs/export — streaming JSONL export with CoT parse + redaction
- Thread-safe ring buffer (seq-based polling) replaces unsafe asyncio.Queue
- GIL-friendly multi-row Core insert for log persistence
- task_id ContextVar propagates into CotJsonFormatter for CoT correlation
- Hot-apply logging level on settings update (FR-005)
- Buffer trim under DEBUG floods; drop DEBUG first, preserve ERROR/WARNING
- List projection (include_result=False) keeps reports list slim
- Security event consolidated to single REASON atom
Frontend:
- ReportsLogModel + ReportsLogPanel — full live JSONL console
- Cross-filter pinning: Tasks → Logs tab with task chip badges
- LogEntryRow — CoT-aware rendering (marker icons, expandable payload)
- TaskFilterChip, taskChipMeta — scannable type/id/env chips
- Global drawer push via CSS variable (lg+ padding, not overlay)
- i18n en/ru for all log console strings
- Ctrl+A in log panel selects only log lines (window-level handler)
QA fixes:
- Svelte 5 reactivity: SvelteDate/SvelteSet/SvelteURLSearchParams
- Fix seed_trace_id shadowing (F823) in lifecycle.py
- Remove dead code (selectedEnvironment, goToReportsPage)
- Add @BRIEF to C2 test functions, missing {#each} keys
- Remove unused import json as _json from app.py
All 3200+ frontend tests pass; backend lint clean.
2026-07-20 21:41:34 +03:00
..
2026-06-15 13:55:57 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 17:31:43 +03:00
2026-06-15 18:30:05 +03:00
2026-06-15 17:31:43 +03:00
2026-06-15 16:45:49 +03:00
2026-06-16 11:15:19 +03:00
2026-06-15 13:55:57 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 13:55:57 +03:00
2026-06-15 18:02:09 +03:00
2026-07-01 20:47:25 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 18:30:05 +03:00
2026-06-18 14:41:13 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 17:08:08 +03:00
2026-06-18 14:41:13 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 17:08:08 +03:00
2026-07-20 21:41:34 +03:00
2026-07-12 19:30:57 +03:00
2026-07-20 21:41:34 +03:00
2026-06-18 14:41:13 +03:00
2026-06-15 13:55:57 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 13:55:57 +03:00
2026-06-16 12:01:03 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 17:31:43 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 17:08:08 +03:00
2026-06-15 18:30:05 +03:00
2026-06-15 18:02:09 +03:00
2026-06-18 14:41:13 +03:00
2026-06-15 18:30:05 +03:00
2026-06-18 14:41:13 +03:00
2026-06-15 18:30:05 +03:00
2026-06-15 18:02:09 +03:00
2026-06-30 17:26:51 +03:00
2026-06-15 17:08:08 +03:00
2026-06-30 17:26:51 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 13:55:57 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 16:45:49 +03:00
2026-06-15 13:55:57 +03:00
2026-06-18 23:54:57 +03:00
2026-07-20 21:41:34 +03:00