swift-unidoc
swift-unidoc copied to clipboard
prepare to support maintainer actions
the next big priority for us should be supporting maintainer configuration through the web UI, since Swift Package Index’s experience with checked-in configuration files has not been great.
there will be some actions that are initially admin-only, and some actions available to maintainers.
- Uplink, Unlink, Delete these have major potential to disrupt the site’s operations, so they should remain admin-only.
- Hide/Unhide package ditto.
- Rename package this should be okay
- Transfer package realm this should be admin only for now, otherwise people could add things to realms they do not own
- Create package realm should be admin-only, users should have realms created for them
- Alias package should be admin-only, as it consumes names from the global namespace
- Index package tag could be abused to DoS the site, so it has to be admin-only for now, but we should place a rate limit on it as it is a common task that maintainers would want to do. we should consider providing an alternative Queue package for tags fetch instead.
tasks:
- [x] Refactor
Swiftinit.TagsTable
to have three permissions levels instead of two. Hide admin-only actions from the first two levels. - [x] Show Package ID (not name) under Package Settings
- [x] For maintainers, show when the package is scheduled to next have its tags fetched
- [x] For maintainers, expose a function that queues a package for tags refetch.
- [ ] Set up server plugin that periodically visits packages and regenerates missing alias records, which is needed to complete #102
- [ ] Set up server plugin that periodically visits packages and checks if their owners are registered in the accounts DB, which is needed to complete #111