add `cursor` channel
ui stuff