feat(web): dedicated full-page log viewer + run lyra-web as a service
The inline log panel is cramped, especially on mobile. Add a standalone mobile-first log page and serve the chat server under systemd like the dream loop (the nohup process didn't survive cleanly). - static/logs.html: full-page live log — level filter chips, text search, pause/resume with buffering, autoscroll toggle, color-coded levels, and the expandable "view full prompt" block (where the now-note is visible in context) - server: GET /logs serves the page (FileResponse) - index.html: "⛶ Full Log" button opens /logs in a new tab - deploy/lyra-web.service: user service so the chat server is reboot-resilient Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-1
@@ -15,7 +15,7 @@ import time
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import FastAPI, Request
|
||||
from fastapi.responses import StreamingResponse
|
||||
from fastapi.responses import FileResponse, StreamingResponse
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
|
||||
from lyra import chat, logbus, memory, summary
|
||||
@@ -110,6 +110,11 @@ def create_app() -> FastAPI:
|
||||
],
|
||||
}
|
||||
|
||||
@app.get("/logs")
|
||||
async def logs_page() -> FileResponse:
|
||||
"""Full-page, mobile-friendly live log viewer (separate from the chat UI)."""
|
||||
return FileResponse(str(_STATIC / "logs.html"))
|
||||
|
||||
@app.get("/stream/logs")
|
||||
async def stream_logs(request: Request) -> StreamingResponse:
|
||||
"""Live activity feed: replay the recent buffer, then stream new events."""
|
||||
|
||||
Reference in New Issue
Block a user