feat(preferences): frontend logic for user preferences

once `$dirty` becomes `false`, it stay like so