From b34732e0641049ade75b2e9bdefc8b48e3d9f9a2 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Thu, 26 Mar 2026 03:54:20 +0100 Subject: [PATCH] =?UTF-8?q?fix(federation):=20enable=20relay=20by=20defaul?= =?UTF-8?q?t=20=E2=80=94=20it=20fixes=20a=20bug,=20not=20an=20optional=20f?= =?UTF-8?q?eature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Federation relay was incorrectly defaulting to disabled, requiring admins to discover a buried settings toggle. Since federation itself is opt-in (you connect instances manually), relay should be on by default. Also migrates existing instances from 0 → 1. --- packages/server/src/db/migrate.ts | 11 ++++++++++- packages/server/src/db/schema.ts | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/server/src/db/migrate.ts b/packages/server/src/db/migrate.ts index fb3b4593..1ef6b294 100644 --- a/packages/server/src/db/migrate.ts +++ b/packages/server/src/db/migrate.ts @@ -203,7 +203,7 @@ export function runMigrations(db: Database.Database): void { { name: 'instance_settings', columns: [ - { name: 'federation_relay_enabled', type: 'INTEGER NOT NULL DEFAULT 0' }, + { name: 'federation_relay_enabled', type: 'INTEGER NOT NULL DEFAULT 1' }, { name: 'federation_relay_ttl_days', type: 'INTEGER NOT NULL DEFAULT 30' }, ] }, @@ -483,6 +483,15 @@ export function runMigrations(db: Database.Database): void { db.exec(`CREATE INDEX IF NOT EXISTS idx_outbox_retry ON federation_outbox(next_retry_at)`); db.exec(`CREATE INDEX IF NOT EXISTS idx_mutation_log_time ON federation_mutation_log(mutated_at)`); + // ─── Ensure federation relay is enabled (fix: was incorrectly defaulting to 0) ─ + try { + const relayState = db.prepare('SELECT federation_relay_enabled FROM instance_settings WHERE id = 1').get() as { federation_relay_enabled: number } | undefined; + if (relayState && relayState.federation_relay_enabled === 0) { + db.prepare('UPDATE instance_settings SET federation_relay_enabled = 1 WHERE id = 1').run(); + console.log('Federation: Enabled relay (was incorrectly defaulting to disabled)'); + } + } catch { /* column may not exist yet on first run */ } + // ─── Backfill federation mutation log for existing DM messages (idempotent) ─ try { const mutationLogExists = (db.pragma('table_info(federation_mutation_log)') as { name: string }[]).length > 0; diff --git a/packages/server/src/db/schema.ts b/packages/server/src/db/schema.ts index fcfdef89..c7c13730 100644 --- a/packages/server/src/db/schema.ts +++ b/packages/server/src/db/schema.ts @@ -266,7 +266,7 @@ export const instanceSettings = sqliteTable('instance_settings', { bitrateMatrixOverrides: text('bitrate_matrix_overrides'), allowCustomBitrate: integer('allow_custom_bitrate').notNull().default(1), maxUploadSizeBytes: integer('max_upload_size_bytes'), - federationRelayEnabled: integer('federation_relay_enabled').notNull().default(0), + federationRelayEnabled: integer('federation_relay_enabled').notNull().default(1), federationRelayTtlDays: integer('federation_relay_ttl_days').notNull().default(30), updatedAt: integer('updated_at').notNull(), });