Marius Mutu
03d875974b
Merge branch 'ralph/dashboard-realtime' — SSE realtime + story rollback
Server-Sent Events (TODO P3):
- GET /api/ralph/stream — signature-based change detection (poll FS 2s, emit
doar la diff), heartbeat 30s, X-Accel-Buffering:no
- HTTPServer → ThreadingHTTPServer (altfel SSE blochează toate endpoint-urile)
- ralph.html: EventSource cu fallback permanent la polling 5s când CLOSED.
Badge: 🟢 Live / ⏱ Polling / Offline
Story rollback (TODO P3):
- POST /api/ralph/<slug>/rollback — git revert --no-edit HEAD; fallback
git reset --hard HEAD~1 doar la conflict
- Decrementează passes pe ultima story complete; clears failed/blocked/retries
(atomic temp+rename)
- Slug strict regex ^[A-Za-z0-9_-]{1,64}$ + reject path traversal explicit
- Buton ↩️ pe card-uri running; confirm dialog înainte de execuție
- Response: {success, message, reverted_commit, story_reverted, method}
Tests: 39/39 pe test_dashboard_ralph_endpoint (era 19; +20 cazuri noi).
# Conflicts:
# dashboard/api.py
# dashboard/handlers/ralph.py
2026-04-26 19:14:17 +00:00
..
2026-02-13 10:20:55 +00:00
2026-04-21 07:05:46 +00:00
2026-02-14 21:44:13 +00:00
2026-02-14 21:44:13 +00:00
2026-02-13 10:20:55 +00:00
2026-04-21 07:15:00 +00:00
2026-04-26 18:36:35 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-21 07:22:48 +00:00
2026-04-26 19:14:17 +00:00
2026-04-21 13:56:53 +00:00
2026-02-13 16:12:56 +00:00
2026-04-26 19:11:35 +00:00
2026-02-15 15:10:44 +00:00
2026-02-15 11:09:59 +00:00
2026-04-21 07:14:51 +00:00
2026-02-13 16:49:57 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:14:24 +00:00
2026-04-26 19:05:50 +00:00
2026-04-26 18:38:51 +00:00
2026-04-26 18:14:24 +00:00
2026-04-21 07:05:29 +00:00
2026-02-13 17:54:59 +00:00
2026-04-26 18:36:35 +00:00
2026-02-13 20:55:04 +00:00
2026-04-26 19:05:50 +00:00
2026-02-14 21:44:13 +00:00