refactor shadow rendering of selected activity into cursor
allow shadow activity to indicate "dirty" state until sync