Gitea 1.22.6 no soporta Actions completo. Solución:
- WebhookController valida HMAC-SHA256, dispara script en background
- /usr/local/bin/dummybot-deploy.sh hace git pull + composer + npm + migrate + up
- Webhook en Gitea → POST http://157.180.77.232:18080/webhook/deploy
- Secreto DEPLOY_WEBHOOK_SECRET en .env, validado por X-Hub-Signature-256
- Mount del script y log dir al container dummybot_app
Frontend:
- Layout base con design system (Inter+JetBrains Mono, glass, mesh, animaciones)
- Landing con hero, mockup OLED, 6 features, 3 pasos
- Auth unificado (login+register) con split-screen
- App con sidebar fijo, filtros con contadores, stats, modal rediseñado
- Settings con 4 tabs (devices/projects/tags/API)
- Iconos SVG inline (sin emojis excepto el logo)
- Skeletons, pulse-dot, toggle switch, toasts
- Unificada vista auth.blade.php (elimina login/register separados)
Deploy:
- Workflow de Gitea Actions: build + push a /root/dummybot en 157.180.77.232
- Trigger: push a main (también workflow_dispatch)
- SSH key dedicada ed25519 dummybot_deploy
- /root/dummybot.env preserva .env real (no se commitea)
- Healthcheck en /up tras migrar
- Rollback state en .last_deploy
Backend:
- LoginController usa nueva vista auth con mode=login|register