Symptom

The “No nodes yet” / “Add a server to get started” empty-state was shown on the main canvas even when the user had created their Client node and added local projects. The message is meant to guide truly new users who have no nodes at all.

Root cause

ClientScreen derived the empty-state condition solely from servers.isEmpty(). It never checked whether the Client node had children (locally-added projects). A user who added local projects without connecting to a server saw the empty-state even though nodes were visually present on the canvas.

Fix

Extracted the condition into shouldShowNoNodesEmptyState(allNodes, selfId) — returns true only when there are no server nodes AND no client-owned child nodes. The composable now calls this function instead of the bare servers.isEmpty() check. The extracted function is internal so the new NoNodesEmptyStateTest can cover it with unit tests.

Prevention