feat(settings): persist and restore w/ localStorage