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.
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.
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.