file view + open state management