Subscribes to navigator.permissions for one name or a whole panel of them — query only, never request — folding Firefox's rejections, Safari's gaps, unknown names and insecure origins into one honest unsupported state with a reason, plus change-event updates and a manual query().
npx shadcn@latest add @zyeon/use-permissionZyeon UI limits how often it can be asked, and usePermission hasn't had its turn. Its source will show here once it has.