renamed store.isDirty → store.hasLocalChanges