feat(deploy): lifecycle polish — canvas polling, log links, rollback confirm

Canvas nodes were static: servicesQuery had no refetchInterval, so
build → deploy status never reached the node without a manual refresh.
It now polls at 3s while any service is transitional and 15s otherwise.

Deployment history rows link directly into that deployment's log tail
(service detail logs section, with a "show latest" reset), and rollback
now asks for confirmation before firing — it previously fired on a
single click.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
Tomas DvorakandDevin committed 2026-09-17 14:55:25 +02:00
1 parent 1d5b99e1ba
commit dfae6ef0bd
3 files changed
+55 -17

No files matched your search

@@ -491,6 +491,10 @@ export function ProjectWorkspacePage() {
queryKey: ['project-services', projectId],
queryFn: () => listServicesByProject(projectId),
enabled: Boolean(projectId) && !isDemoMode,
refetchInterval: (query) =>
query.state.data?.some((s) => ['building', 'deploying', 'pending', 'rolling_back'].includes(s.status))
? 3000
: 15000,
});
const createServiceMutation = useMutation({