feat(web): cria painel Svelte com shell, Ao vivo e Ajustes
- web/ com Vite + Svelte 5 + TypeScript; servidor entrega web/dist em "/" (telas antigas seguem em /dashboard, /painel, /braco...) - design system em tokens CSS, tema escuro e claro, fontes locais - estado unico: foto de /estado + um EventSource em /eventos, sem polling - shell com navegacao lateral/inferior, selos de status reais e E-Stop fixo - command palette (Ctrl+K), gestos favoritos com atalhos 1-9, g+letra navega - Ao vivo: camera WebRTC e rastreamento portados para TS, rosto, aparencia, sensores do celular, IA local e feed de acontecimentos - Ajustes: campos do celular agrupados com busca, salvamento otimista e restaurar padrao (GET /app/padrao); motor da conversa, Gemini e token - carinha.html ganha modo ?painel=1 dirigido por postMessage (sem polling) - teste Playwright de ponta a ponta do painel novo Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -290,6 +290,18 @@ class Handler(SimpleHTTPRequestHandler):
|
||||
enfileirar(ordem)
|
||||
return self.json({"ok": True, partes[0]: ordem})
|
||||
|
||||
# Painel novo (Vite/Svelte em web/dist); as telas antigas seguem nos caminhos próprios.
|
||||
painel = Path("web/dist")
|
||||
if caminho in ("/", "") and (painel / "index.html").is_file():
|
||||
self.path = "/web/dist/index.html"
|
||||
return super().do_GET()
|
||||
if caminho.startswith("/assets/"):
|
||||
nome = caminho[len("/assets/"):]
|
||||
if "/" in nome or "\\" in nome or nome.startswith(".") or not (painel / "assets" / nome).is_file():
|
||||
return self.json({"erro": "Arquivo não disponível"}, 404)
|
||||
self.path = "/web/dist/assets/" + nome
|
||||
return super().do_GET()
|
||||
|
||||
if caminho in ("/dashboard", "/emojis", "/api"):
|
||||
self.path = caminho + ".html"
|
||||
elif caminho == "/painel":
|
||||
|
||||
Reference in New Issue
Block a user