diff --git a/services/frontend/src/lib/hooks/use-config.ts b/services/frontend/src/lib/hooks/use-config.ts
index 741f5cb..e9d5b03 100644
--- a/services/frontend/src/lib/hooks/use-config.ts
+++ b/services/frontend/src/lib/hooks/use-config.ts
@@ -1,11 +1,6 @@
import { useEffect, useState } from "react";
import { configApi } from "@/lib/api";
-
-export interface AppConfig {
- monitorGuildId: string | null;
- webserverPort?: number;
- nodeEnv?: string;
-}
+import type { AppConfig } from "@/lib/types/guild";
export function useAppConfig() {
const [config, setConfig] = useState
(null);
@@ -15,9 +10,7 @@ export function useAppConfig() {
configApi
.get()
.then((cfg) => {
- setConfig({
- monitorGuildId: cfg.monitor_guild_id ?? null,
- });
+ setConfig(cfg);
})
.catch(() => {
// silent — config fetch is not critical
diff --git a/services/frontend/src/lib/types/guild.ts b/services/frontend/src/lib/types/guild.ts
index bae565c..40b31f2 100644
--- a/services/frontend/src/lib/types/guild.ts
+++ b/services/frontend/src/lib/types/guild.ts
@@ -11,6 +11,19 @@ export interface Channel {
parent_id?: string | null;
}
+/** Shape of the /api/config response (camelCase keys from backend). */
export interface AppConfig {
- monitor_guild_id?: string | null;
+ monitorGuildId: string | null;
+ webserverPort?: number;
+ nodeEnv?: string;
+ backlogSyncHours?: number;
+ backlogSyncBatchSize?: number;
+ retentionMessagesDays?: number;
+ retentionAttachmentsDays?: number;
+ retentionVoiceDays?: number;
+ autoDeleteFlaggedEnabled?: boolean;
+ aiAnalysisEnabled?: boolean;
+ voiceGuildId?: string | null;
+ voiceChannelId?: string | null;
+ logLevel?: string;
}