2026-08-26v0.5.0uxreliability
ConfirmModal + real container cleanup
- Заменили `window.confirm()` на кастомный ConfirmModal с requireText для опасных действий
- Archive project теперь реально останавливает и удаляет контейнеры через docker-ops queue
- preemptive-check StorageOpt: не пытаемся включать квоту если daemon не overlay2+xfs
- Traefik hot-reload на любое изменение доменов (verify/remove/deploy)
2026-08-25v0.4.0securityarchitecture
Split API ⊥ Worker + JWT httpOnly
- API-процесс больше не имеет доступа к /var/run/docker.sock — только worker
- JWT переехал в httpOnly cookies (dpz_access 15м + dpz_refresh 30д)
- Redis pub/sub bridge для трансляции deploy-логов из worker в WebSocket клиентам
- BackupsProcessor + docker-ops queue для volume snapshots + restore
2026-08-24v0.3.0networking
Traefik dynamic + Let’s Encrypt
- RoutesSyncService пишет YAML per-service, Traefik file-provider подхватывает без рестарта
- Multi-host routers (`Host(a) || Host(b) || Host(c)`) — generated + custom domains вместе
- HTTP-01 LE resolver в deploy/traefik/traefik.yml
- Custom domain CNAME → verify через dns.resolveCname
2026-08-22v0.2.0billing
Usage collection + monthly invoicing
- UsageCollectorService — cron 15 мин, реальный docker stats → UsageRecord
- InvoicingService — 1-го числа месяца генерит Invoice + PDF через pdfkit
- GET /invoices + /invoices/:id/pdf endpoints
- Billing UI: активный план, current period KPIs, таблица счетов
2026-08-20v0.1.0launch
Initial MVP
- NestJS API + Prisma + BullMQ + Next.js frontend
- Deploy из GitHub с автогенерацией Dockerfile
- Templates marketplace (19 шаблонов)
- Env vars с AES-256-GCM шифрованием секретов
- GitHub + GitLab OAuth
- Workspaces, projects, environments, services