feat: dedicated Instance Settings modal with admin controls

Move instance-level administration out of Space Settings into its own
modal. Adds admin UI for instance name, registration toggle, and
discovery toggle. Streaming limits panel relocated from SpaceSettings.

- Add InstanceAdminSettings type and GET/PATCH /api/settings/instance
- Add registration_open DB column (nullable, env var fallback)
- Auth registration and instance info now check DB override
- New InstanceSettings modal with General and Streaming tabs
- Admin shield button in UserAreaPanel (visible to admins only)
- Remove Streaming tab from SpaceSettings
This commit is contained in:
Jannis Braun
2026-03-09 03:52:01 +01:00
parent 096251e5b0
commit 450df432b2
15 changed files with 575 additions and 239 deletions
+6 -1
View File
@@ -13,10 +13,15 @@ export async function instanceRoutes(app: FastifyInstance): Promise<void> {
const settings = db.select().from(schema.instanceSettings).where(eq(schema.instanceSettings.id, 1)).get();
const instanceName = settings?.instanceName ?? 'Backspace';
// DB setting overrides env var if explicitly set by admin
const registrationOpen = settings?.registrationOpen !== null && settings?.registrationOpen !== undefined
? settings.registrationOpen === 1
: config.registrationOpen;
const response: InstanceInfoResponse = {
name: instanceName,
version: BACKSPACE_VERSION,
registrationOpen: config.registrationOpen,
registrationOpen,
};
return reply.code(200).send(response);