+ {(isSearchMode ? isSearchLoading : loading) ? (
+
+ {activeTab === "comments"
+ ? /* Comments skeleton: avatar + two-line text + time */
+ [85, 60, 90, 70, 50, 75].map((titleWidth, i) => (
+
-
-
- ))
- : /* Status skeleton: status icon circle + two-line text + time */
- [75, 90, 55, 80, 65, 85].map((titleWidth, i) => (
-
-
-
-
-
+ ))
+ : /* Status skeleton: status icon circle + two-line text + time */
+ [75, 90, 55, 80, 65, 85].map((titleWidth, i) => (
+
-
-
-
-
-
- ))}
-
- ) : filteredItems.length > 0 ? (
-
- {filteredItems.map((item, index) => {
- const isMarkingAsRead = markingAsReadId === item.id;
- // Place prefetch trigger on 5th item from end (only when not searching)
- const isPrefetchTrigger =
- !isSearchMode && hasMore && index === filteredItems.length - 5;
+ ))}
+
+ ) : filteredItems.length > 0 ? (
+
+ {filteredItems.map((item, index) => {
+ const isMarkingAsRead = markingAsReadId === item.id;
+ // Place prefetch trigger on 5th item from end (only when not searching)
+ const isPrefetchTrigger =
+ !isSearchMode && hasMore && index === filteredItems.length - 5;
return (
);
})}
- {/* Fallback trigger at the very end if less than 5 items and not searching */}
- {!isSearchMode && filteredItems.length < 5 && hasMore && (
-
- )}
- {/* Loading more skeletons at the bottom during infinite scroll */}
- {loadingMore && (
- activeTab === "comments"
- ? [80, 60, 90].map((titleWidth, i) => (
-
- ))
- : [70, 85, 55].map((titleWidth, i) => (
-
- ))
- )}
+ {/* Fallback trigger at the very end if less than 5 items and not searching */}
+ {!isSearchMode && filteredItems.length < 5 && hasMore && (
+
+ )}
+ {/* Loading more skeletons at the bottom during infinite scroll */}
+ {loadingMore &&
+ (activeTab === "comments"
+ ? [80, 60, 90].map((titleWidth, i) => (
+
+ ))
+ : [70, 85, 55].map((titleWidth, i) => (
+
+ )))}
+
+ ) : isSearchMode ? (
+
+
+
+ {t("no_results_found") || "No results found"}
+
+
+ {t("try_different_search") || "Try a different search term"}
+
- ) : isSearchMode ? (
-
-
-
- {t("no_results_found") || "No results found"}
-
-
- {t("try_different_search") || "Try a different search term"}
-
-
) : (
{activeTab === "comments" ? (
diff --git a/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx b/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx
index 38b3028d2..997482ed3 100644
--- a/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx
+++ b/surfsense_web/components/layout/ui/sidebar/SidebarUserProfile.tsx
@@ -1,6 +1,16 @@
"use client";
-import { Check, ChevronUp, Languages, Laptop, Loader2, LogOut, Moon, Settings, Sun } from "lucide-react";
+import {
+ Check,
+ ChevronUp,
+ Languages,
+ Laptop,
+ Loader2,
+ LogOut,
+ Moon,
+ Settings,
+ Sun,
+} from "lucide-react";
import { useTranslations } from "next-intl";
import { useState } from "react";
import {
diff --git a/surfsense_web/components/new-chat/chat-share-button.tsx b/surfsense_web/components/new-chat/chat-share-button.tsx
index 2e04fa3ba..c9e693b21 100644
--- a/surfsense_web/components/new-chat/chat-share-button.tsx
+++ b/surfsense_web/components/new-chat/chat-share-button.tsx
@@ -155,7 +155,7 @@ export function ChatShareButton({ thread, onVisibilityChange, className }: ChatS
Share settings
-
- {/* Globe indicator when public snapshots exist - clicks to settings */}
+ {/* Globe indicator when public snapshots exist - clicks to settings */}
{hasPublicSnapshots && (
diff --git a/surfsense_web/components/new-chat/image-config-sidebar.tsx b/surfsense_web/components/new-chat/image-config-sidebar.tsx
index 18f98acb7..be84b0b22 100644
--- a/surfsense_web/components/new-chat/image-config-sidebar.tsx
+++ b/surfsense_web/components/new-chat/image-config-sidebar.tsx
@@ -179,7 +179,17 @@ export function ImageConfigSidebar({
} finally {
setIsSubmitting(false);
}
- }, [mode, isGlobal, config, formData, searchSpaceId, createConfig, updateConfig, updatePreferences, onOpenChange]);
+ }, [
+ mode,
+ isGlobal,
+ config,
+ formData,
+ searchSpaceId,
+ createConfig,
+ updateConfig,
+ updatePreferences,
+ onOpenChange,
+ ]);
const handleUseGlobalConfig = useCallback(async () => {
if (!config || !isGlobal) return;
@@ -297,11 +307,16 @@ export function ImageConfigSidebar({
- Auto mode distributes image generation requests across all configured providers for optimal performance and rate limit protection.
+ Auto mode distributes image generation requests across all configured
+ providers for optimal performance and rate limit protection.
-
onOpenChange(false)}>
+ onOpenChange(false)}
+ >
Close
-
Name
+
+ Name
+
{config.name}
{config.description && (
-
Description
+
+ Description
+
{config.description}
)}
@@ -340,20 +359,32 @@ export function ImageConfigSidebar({
-
Provider
+
+ Provider
+
{config.provider}
-
Model
+
+ Model
+
{config.model_name}
- onOpenChange(false)}>
+ onOpenChange(false)}
+ >
Close
-
+
{isSubmitting ? "Loading..." : "Use This Model"}
@@ -379,7 +410,9 @@ export function ImageConfigSidebar({
setFormData((p) => ({ ...p, description: e.target.value }))}
+ onChange={(e) =>
+ setFormData((p) => ({ ...p, description: e.target.value }))
+ }
/>
@@ -390,7 +423,9 @@ export function ImageConfigSidebar({
Provider *
setFormData((p) => ({ ...p, provider: val, model_name: "" }))}
+ onValueChange={(val) =>
+ setFormData((p) => ({ ...p, provider: val, model_name: "" }))
+ }
>
@@ -414,7 +449,11 @@ export function ImageConfigSidebar({
{suggestedModels.length > 0 ? (
-
+
{formData.model_name || "Select or type a model..."}
@@ -424,11 +463,15 @@ export function ImageConfigSidebar({
setFormData((p) => ({ ...p, model_name: val }))}
+ onValueChange={(val) =>
+ setFormData((p) => ({ ...p, model_name: val }))
+ }
/>
- Type a custom model name
+
+ Type a custom model name
+
{suggestedModels.map((m) => (
@@ -440,9 +483,18 @@ export function ImageConfigSidebar({
setModelComboboxOpen(false);
}}
>
-
+
{m.value}
- {m.label}
+
+ {m.label}
+
))}
@@ -454,7 +506,9 @@ export function ImageConfigSidebar({
setFormData((p) => ({ ...p, model_name: e.target.value }))}
+ onChange={(e) =>
+ setFormData((p) => ({ ...p, model_name: e.target.value }))
+ }
/>
)}
@@ -489,14 +543,20 @@ export function ImageConfigSidebar({
setFormData((p) => ({ ...p, api_version: e.target.value }))}
+ onChange={(e) =>
+ setFormData((p) => ({ ...p, api_version: e.target.value }))
+ }
/>
)}
{/* Actions */}
- onOpenChange(false)}>
+ onOpenChange(false)}
+ >
Cancel
Global Image Models
- {filteredGlobal.map((config) => {
- const isSelected = currentConfig?.id === config.id;
- const isAuto = "is_auto_mode" in config && config.is_auto_mode;
- return (
-
handleSelect(config.id)}
- className={cn(
- "mx-2 rounded-lg mb-1 cursor-pointer group transition-all hover:bg-accent/50",
- isSelected && "bg-accent/80",
- isAuto && "border border-violet-200 dark:border-violet-800/50"
- )}
- >
-
-
- {isAuto ? (
-
- ) : (
-
+ {filteredGlobal.map((config) => {
+ const isSelected = currentConfig?.id === config.id;
+ const isAuto = "is_auto_mode" in config && config.is_auto_mode;
+ return (
+
handleSelect(config.id)}
+ className={cn(
+ "mx-2 rounded-lg mb-1 cursor-pointer group transition-all hover:bg-accent/50",
+ isSelected && "bg-accent/80",
+ isAuto && "border border-violet-200 dark:border-violet-800/50"
+ )}
+ >
+
+
+ {isAuto ? (
+
+ ) : (
+
+ )}
+
+
+
+ {config.name}
+ {isAuto && (
+
+ Recommended
+
+ )}
+ {isSelected && }
+
+
+ {isAuto ? "Auto load balancing" : config.model_name}
+
+
+ {onEdit && (
+
{
+ e.stopPropagation();
+ setOpen(false);
+ onEdit(config, true);
+ }}
+ />
)}
-
-
- {config.name}
- {isAuto && (
-
- Recommended
-
- )}
- {isSelected && }
-
-
- {isAuto ? "Auto load balancing" : config.model_name}
-
-
- {onEdit && (
- {
- e.stopPropagation();
- setOpen(false);
- onEdit(config, true);
- }}
- />
- )}
-
-
- );
- })}
+
+ );
+ })}
)}
@@ -290,51 +289,49 @@ export function ImageModelSelector({ className, onAddNew, onEdit }: ImageModelSe
Your Image Models
- {filteredUser.map((config) => {
- const isSelected = currentConfig?.id === config.id;
- return (
- handleSelect(config.id)}
- className={cn(
- "mx-2 rounded-lg mb-1 cursor-pointer group transition-all hover:bg-accent/50",
- isSelected && "bg-accent/80"
- )}
- >
-
-
-
-
-
-
- {config.name}
- {isSelected && (
-
- )}
-
-
- {config.model_name}
-
-
- {onEdit && (
-
{
- e.stopPropagation();
- setOpen(false);
- onEdit(config, false);
- }}
- >
-
-
+ {filteredUser.map((config) => {
+ const isSelected = currentConfig?.id === config.id;
+ return (
+
handleSelect(config.id)}
+ className={cn(
+ "mx-2 rounded-lg mb-1 cursor-pointer group transition-all hover:bg-accent/50",
+ isSelected && "bg-accent/80"
)}
-
-
- );
- })}
+ >
+
+
+
+
+
+
+ {config.name}
+ {isSelected && }
+
+
+ {config.model_name}
+
+
+ {onEdit && (
+
{
+ e.stopPropagation();
+ setOpen(false);
+ onEdit(config, false);
+ }}
+ >
+
+
+ )}
+
+
+ );
+ })}
>
)}
diff --git a/surfsense_web/components/new-chat/model-selector.tsx b/surfsense_web/components/new-chat/model-selector.tsx
index 148028df2..ec1143e04 100644
--- a/surfsense_web/components/new-chat/model-selector.tsx
+++ b/surfsense_web/components/new-chat/model-selector.tsx
@@ -392,8 +392,8 @@ export function ModelSelector({ onEdit, onAddNew, className }: ModelSelectorProp
)}
- {/* Add New Config Button */}
-
+ {/* Add New Config Button */}
+
- {plan.billingText ?? (isNaN(Number(plan.price)) ? "" : isMonthly ? "billed monthly" : "billed annually")}
+ {plan.billingText ??
+ (isNaN(Number(plan.price))
+ ? ""
+ : isMonthly
+ ? "billed monthly"
+ : "billed annually")}
diff --git a/surfsense_web/components/settings/image-model-manager.tsx b/surfsense_web/components/settings/image-model-manager.tsx
index 4e3f1840a..e87cc9a95 100644
--- a/surfsense_web/components/settings/image-model-manager.tsx
+++ b/surfsense_web/components/settings/image-model-manager.tsx
@@ -95,16 +95,29 @@ const item = {
export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
// Image gen config atoms
- const { mutateAsync: createConfig, isPending: isCreating, error: createError } =
- useAtomValue(createImageGenConfigMutationAtom);
- const { mutateAsync: updateConfig, isPending: isUpdating, error: updateError } =
- useAtomValue(updateImageGenConfigMutationAtom);
- const { mutateAsync: deleteConfig, isPending: isDeleting, error: deleteError } =
- useAtomValue(deleteImageGenConfigMutationAtom);
+ const {
+ mutateAsync: createConfig,
+ isPending: isCreating,
+ error: createError,
+ } = useAtomValue(createImageGenConfigMutationAtom);
+ const {
+ mutateAsync: updateConfig,
+ isPending: isUpdating,
+ error: updateError,
+ } = useAtomValue(updateImageGenConfigMutationAtom);
+ const {
+ mutateAsync: deleteConfig,
+ isPending: isDeleting,
+ error: deleteError,
+ } = useAtomValue(deleteImageGenConfigMutationAtom);
const { mutateAsync: updatePreferences } = useAtomValue(updateLLMPreferencesMutationAtom);
- const { data: userConfigs, isFetching: configsLoading, error: fetchError, refetch: refreshConfigs } =
- useAtomValue(imageGenConfigsAtom);
+ const {
+ data: userConfigs,
+ isFetching: configsLoading,
+ error: fetchError,
+ refetch: refreshConfigs,
+ } = useAtomValue(imageGenConfigsAtom);
const { data: globalConfigs = [], isFetching: globalLoading } =
useAtomValue(globalImageGenConfigsAtom);
const { data: preferences = {}, isFetching: prefsLoading } = useAtomValue(llmPreferencesAtom);
@@ -249,7 +262,9 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
data: {
image_generation_config_id:
typeof selectedPrefId === "string"
- ? selectedPrefId ? parseInt(selectedPrefId) : undefined
+ ? selectedPrefId
+ ? parseInt(selectedPrefId)
+ : undefined
: selectedPrefId,
},
});
@@ -289,7 +304,12 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{/* Errors */}
{errors.map((err) => (
-
+
{err?.message}
@@ -304,7 +324,8 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
- {globalConfigs.filter((g) => !("is_auto_mode" in g && g.is_auto_mode)).length} global image model(s)
+ {globalConfigs.filter((g) => !("is_auto_mode" in g && g.is_auto_mode)).length} global
+ image model(s)
{" "}
available from your administrator.
@@ -342,18 +363,27 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{globalConfigs.length > 0 && (
<>
- Global
+
+ Global
+
{globalConfigs.map((c) => {
const isAuto = "is_auto_mode" in c && c.is_auto_mode;
return (
{isAuto ? (
-
- AUTO
+
+
+ AUTO
) : (
-
+
{c.provider}
)}
@@ -366,11 +396,15 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
)}
{(userConfigs?.length ?? 0) > 0 && (
<>
- Your Models
+
+ Your Models
+
{userConfigs?.map((c) => (
- {c.provider}
+
+ {c.provider}
+
{c.name}
({c.model_name})
@@ -382,10 +416,23 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{hasPrefChanges && (
-
+
{isSavingPref ? "Saving..." : "Save"}
- { setSelectedPrefId(preferences.image_generation_config_id ?? ""); setHasPrefChanges(false); }} className="text-xs h-8">
+ {
+ setSelectedPrefId(preferences.image_generation_config_id ?? "");
+ setHasPrefChanges(false);
+ }}
+ className="text-xs h-8"
+ >
Reset
@@ -409,7 +456,10 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
Your Image Models
-
+
Add Image Model
@@ -435,7 +485,12 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{userConfigs?.map((config) => (
-
+
@@ -448,8 +503,13 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
-
{config.name}
-
+
+ {config.name}
+
+
{config.provider}
@@ -457,7 +517,9 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{config.model_name}
{config.description && (
-
{config.description}
+
+ {config.description}
+
)}
@@ -469,7 +531,12 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
- openEditDialog(config)} className="h-7 w-7 p-0 text-muted-foreground hover:text-foreground">
+ openEditDialog(config)}
+ className="h-7 w-7 p-0 text-muted-foreground hover:text-foreground"
+ >
@@ -479,7 +546,12 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
- setConfigToDelete(config)} className="h-7 w-7 p-0 text-muted-foreground hover:text-destructive">
+ setConfigToDelete(config)}
+ className="h-7 w-7 p-0 text-muted-foreground hover:text-destructive"
+ >
@@ -501,15 +573,30 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
)}
{/* Create/Edit Dialog */}
- { if (!open) { setIsDialogOpen(false); setEditingConfig(null); resetForm(); } }}>
+ {
+ if (!open) {
+ setIsDialogOpen(false);
+ setEditingConfig(null);
+ resetForm();
+ }
+ }}
+ >
- {editingConfig ? : }
+ {editingConfig ? (
+
+ ) : (
+
+ )}
{editingConfig ? "Edit Image Model" : "Add Image Model"}
- {editingConfig ? "Update your image generation model" : "Configure a new image generation model (DALL-E 3, GPT Image 1, etc.)"}
+ {editingConfig
+ ? "Update your image generation model"
+ : "Configure a new image generation model (DALL-E 3, GPT Image 1, etc.)"}
@@ -541,7 +628,9 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
Provider *
setFormData((p) => ({ ...p, provider: val, model_name: "" }))}
+ onValueChange={(val) =>
+ setFormData((p) => ({ ...p, provider: val, model_name: "" }))
+ }
>
@@ -565,7 +654,11 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{suggestedModels.length > 0 ? (
-
+
{formData.model_name || "Select or type a model..."}
@@ -579,7 +672,9 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
/>
- Type a custom model name
+
+ Type a custom model name
+
{suggestedModels.map((m) => (
@@ -591,7 +686,12 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
setModelComboboxOpen(false);
}}
>
-
+
{m.value}
{m.label}
@@ -650,14 +750,24 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{ setIsDialogOpen(false); setEditingConfig(null); resetForm(); }}
+ onClick={() => {
+ setIsDialogOpen(false);
+ setEditingConfig(null);
+ resetForm();
+ }}
>
Cancel
{isSubmitting ? : null}
{editingConfig ? "Save Changes" : "Create & Use"}
@@ -668,7 +778,10 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
{/* Delete Confirmation */}
- !open && setConfigToDelete(null)}>
+ !open && setConfigToDelete(null)}
+ >
@@ -676,13 +789,28 @@ export function ImageModelManager({ searchSpaceId }: ImageModelManagerProps) {
Delete Image Model
- Are you sure you want to delete {configToDelete?.name} ?
+ Are you sure you want to delete{" "}
+ {configToDelete?.name} ?
Cancel
-
- {isDeleting ? <> Deleting> : <> Delete>}
+
+ {isDeleting ? (
+ <>
+
+ Deleting
+ >
+ ) : (
+ <>
+
+ Delete
+ >
+ )}
diff --git a/surfsense_web/components/settings/llm-role-manager.tsx b/surfsense_web/components/settings/llm-role-manager.tsx
index 22e3d8e08..dac68a358 100644
--- a/surfsense_web/components/settings/llm-role-manager.tsx
+++ b/surfsense_web/components/settings/llm-role-manager.tsx
@@ -255,15 +255,15 @@ export function LLMRoleManager({ searchSpaceId }: LLMRoleManagerProps) {
)}
- {/* Role Assignment Cards */}
- {availableConfigs.length > 0 && (
-
- {Object.entries(ROLE_DESCRIPTIONS).map(([key, role]) => {
- const IconComponent = role.icon;
- const currentAssignment = assignments[`${key}_llm_id` as keyof typeof assignments];
- const assignedConfig = availableConfigs.find(
- (config) => config.id === currentAssignment
- );
+ {/* Role Assignment Cards */}
+ {availableConfigs.length > 0 && (
+
+ {Object.entries(ROLE_DESCRIPTIONS).map(([key, role]) => {
+ const IconComponent = role.icon;
+ const currentAssignment = assignments[`${key}_llm_id` as keyof typeof assignments];
+ const assignedConfig = availableConfigs.find(
+ (config) => config.id === currentAssignment
+ );
return (
-
-
- Assign LLM Configuration:
-
-
handleRoleAssignment(`${key}_llm_id`, value)}
- >
-
-
-
-
-
- Unassigned
-
+
+
+ Assign LLM Configuration:
+
+
handleRoleAssignment(`${key}_llm_id`, value)}
+ >
+
+
+
+
+
+ Unassigned
+
- {/* Global Configurations */}
- {globalConfigs.length > 0 && (
- <>
-
- Global Configurations
-
- {globalConfigs.map((config) => {
- const isAutoMode =
- "is_auto_mode" in config && config.is_auto_mode;
- return (
-
-
- {isAutoMode ? (
-
-
- AUTO
-
- ) : (
-
- {config.provider}
-
- )}
- {config.name}
- {!isAutoMode && (
-
- ({config.model_name})
-
- )}
- {isAutoMode ? (
-
- Recommended
-
- ) : (
-
- 🌐 Global
-
- )}
-
-
- );
- })}
- >
- )}
+ {/* Global Configurations */}
+ {globalConfigs.length > 0 && (
+ <>
+
+ Global Configurations
+
+ {globalConfigs.map((config) => {
+ const isAutoMode =
+ "is_auto_mode" in config && config.is_auto_mode;
+ return (
+
+
+ {isAutoMode ? (
+
+
+ AUTO
+
+ ) : (
+
+ {config.provider}
+
+ )}
+ {config.name}
+ {!isAutoMode && (
+
+ ({config.model_name})
+
+ )}
+ {isAutoMode ? (
+
+ Recommended
+
+ ) : (
+
+ 🌐 Global
+
+ )}
+
+
+ );
+ })}
+ >
+ )}
- {/* Custom Configurations */}
- {newLLMConfigs.length > 0 && (
- <>
-
- Your Configurations
-
- {newLLMConfigs
- .filter(
- (config) => config.id && config.id.toString().trim() !== ""
- )
- .map((config) => (
-
-
-
- {config.provider}
-
- {config.name}
-
- ({config.model_name})
-
-
-
- ))}
- >
- )}
-
-
-
+ {/* Custom Configurations */}
+ {newLLMConfigs.length > 0 && (
+ <>
+
+ Your Configurations
+
+ {newLLMConfigs
+ .filter(
+ (config) => config.id && config.id.toString().trim() !== ""
+ )
+ .map((config) => (
+
+
+
+ {config.provider}
+
+ {config.name}
+
+ ({config.model_name})
+
+
+
+ ))}
+ >
+ )}
+
+
+
{assignedConfig && (
{isGenerated && }
diff --git a/surfsense_web/contracts/types/new-llm-config.types.ts b/surfsense_web/contracts/types/new-llm-config.types.ts
index 3f0d39e5a..b99df1022 100644
--- a/surfsense_web/contracts/types/new-llm-config.types.ts
+++ b/surfsense_web/contracts/types/new-llm-config.types.ts
@@ -213,9 +213,7 @@ export const getImageGenConfigsResponse = z.array(imageGenerationConfig);
export const updateImageGenConfigRequest = z.object({
id: z.number(),
- data: imageGenerationConfig
- .omit({ id: true, created_at: true, search_space_id: true })
- .partial(),
+ data: imageGenerationConfig.omit({ id: true, created_at: true, search_space_id: true }).partial(),
});
export const updateImageGenConfigResponse = imageGenerationConfig;
diff --git a/surfsense_web/lib/apis/image-gen-config-api.service.ts b/surfsense_web/lib/apis/image-gen-config-api.service.ts
index 84aeed3d8..379edfa53 100644
--- a/surfsense_web/lib/apis/image-gen-config-api.service.ts
+++ b/surfsense_web/lib/apis/image-gen-config-api.service.ts
@@ -32,11 +32,9 @@ class ImageGenConfigApiService {
const msg = parsed.error.issues.map((i) => i.message).join(", ");
throw new ValidationError(`Invalid request: ${msg}`);
}
- return baseApiService.post(
- `/api/v1/image-generation-configs`,
- createImageGenConfigResponse,
- { body: parsed.data }
- );
+ return baseApiService.post(`/api/v1/image-generation-configs`, createImageGenConfigResponse, {
+ body: parsed.data,
+ });
};
/**