Permissions UI

Among other things, fixes #482 and #450.
Why is `library` needed?