Separate UI state from todos so that todo.() doesn't affect what's hidden/shown on UI