marketplace: minesweeper in the catalogue
Without an entry the plugin is invisible to every server but this one — the catalogue is what a remote host reads, and the bundled constant is only the fallback when marketplace.officer.dev cannot be reached. Its git remote was the tailnet address, which marketplace-sync would have published verbatim: a clone URL that works on this network and nowhere else, failing at authentication in a way that reads as a broken plugin rather than a wrong catalogue. Repointed at gitea.officer.dev, which is the rule the sync script's own comment already spells out. Synced. 18/18, and the entry is live with the right source, permissions and six osDependencies; the repo answers an anonymous https clone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
@@ -75,13 +75,6 @@ rolesRouter.patch('/:name', async (ctx) => {
|
||||
throw errors.BAD_REQUEST('a role name cannot be empty');
|
||||
case 'duplicate':
|
||||
throw errors.CONFLICT(`a role named '${body.name.trim()}' already exists`);
|
||||
case 'in-use':
|
||||
// Refused while held, because there is no ON UPDATE CASCADE yet — see `renameRole`. The count is
|
||||
// in the message because 'in use' without a number is something nobody can act on.
|
||||
throw errors.CONFLICT(
|
||||
`'${from}' is held by ${result.holderCount ?? 'some'} account(s) — renaming it would leave them ` +
|
||||
'pointing at a role that no longer exists',
|
||||
);
|
||||
}
|
||||
}
|
||||
return ctx.json({ role: result.role });
|
||||
|
||||
Reference in New Issue
Block a user