diff --git a/core/src/browser/extensions/conversational.test.ts b/core/src/browser/extensions/conversational.test.ts index c08468905..44d1e9b4f 100644 --- a/core/src/browser/extensions/conversational.test.ts +++ b/core/src/browser/extensions/conversational.test.ts @@ -250,4 +250,4 @@ describe('ConversationalExtension', () => { expect(retrievedAssistant.modelId).toBe('') }) -}) \ No newline at end of file +}) diff --git a/core/src/browser/extensions/engines/LocalOAIEngine.test.ts b/core/src/browser/extensions/engines/LocalOAIEngine.test.ts index 5f2563d56..3523c3ce6 100644 --- a/core/src/browser/extensions/engines/LocalOAIEngine.test.ts +++ b/core/src/browser/extensions/engines/LocalOAIEngine.test.ts @@ -131,4 +131,4 @@ describe('LocalOAIEngine', () => { expect(engine.loadedModel).toBeUndefined() }) }) -}) \ No newline at end of file +}) diff --git a/core/src/browser/extensions/mcp.test.ts b/core/src/browser/extensions/mcp.test.ts index ece971809..8ba3f200a 100644 --- a/core/src/browser/extensions/mcp.test.ts +++ b/core/src/browser/extensions/mcp.test.ts @@ -96,4 +96,4 @@ describe('MCPExtension', () => { expect(healthy).toBe(true) }) }) -}) \ No newline at end of file +}) diff --git a/core/src/browser/extensions/mcp.ts b/core/src/browser/extensions/mcp.ts index d34e0e298..8a188478a 100644 --- a/core/src/browser/extensions/mcp.ts +++ b/core/src/browser/extensions/mcp.ts @@ -25,4 +25,4 @@ export abstract class MCPExtension extends BaseExtension implements MCPInterface * @returns A React component or null if no custom component is provided */ getToolComponent?(): ComponentType | null -} \ No newline at end of file +} diff --git a/core/src/browser/models/manager.test.ts b/core/src/browser/models/manager.test.ts index 90626b22e..0e4e728cf 100644 --- a/core/src/browser/models/manager.test.ts +++ b/core/src/browser/models/manager.test.ts @@ -131,4 +131,4 @@ describe('ModelManager', () => { expect(modelManager.models.get('model-2')).toEqual(model2) }) }) -}) \ No newline at end of file +}) diff --git a/core/src/test/setup.ts b/core/src/test/setup.ts index c597a3748..6f3d766bf 100644 --- a/core/src/test/setup.ts +++ b/core/src/test/setup.ts @@ -16,4 +16,4 @@ if (!window.core) { }) } -// Add any other global mocks needed for core tests \ No newline at end of file +// Add any other global mocks needed for core tests diff --git a/core/src/types/mcp/index.ts b/core/src/types/mcp/index.ts index 4ffd501fc..bd809d790 100644 --- a/core/src/types/mcp/index.ts +++ b/core/src/types/mcp/index.ts @@ -1,2 +1,2 @@ export * from './mcpEntity' -export * from './mcpInterface' \ No newline at end of file +export * from './mcpInterface' diff --git a/core/src/types/mcp/mcpEntity.ts b/core/src/types/mcp/mcpEntity.ts index a1d3c5bd3..6c7e0c598 100644 --- a/core/src/types/mcp/mcpEntity.ts +++ b/core/src/types/mcp/mcpEntity.ts @@ -35,4 +35,4 @@ export interface MCPToolComponentProps { /** Function to toggle a tool's enabled/disabled state */ onToolToggle: (toolName: string, enabled: boolean) => void -} \ No newline at end of file +} diff --git a/core/src/types/mcp/mcpInterface.ts b/core/src/types/mcp/mcpInterface.ts index 15152a83b..a656e9f66 100644 --- a/core/src/types/mcp/mcpInterface.ts +++ b/core/src/types/mcp/mcpInterface.ts @@ -29,4 +29,4 @@ export interface MCPInterface { * Check if MCP service is healthy */ isHealthy(): Promise -} \ No newline at end of file +} diff --git a/extensions-web/src/conversational-web/const.ts b/extensions-web/src/conversational-web/const.ts index 0ad7e9049..4a860c500 100644 --- a/extensions-web/src/conversational-web/const.ts +++ b/extensions-web/src/conversational-web/const.ts @@ -14,4 +14,4 @@ export const DEFAULT_ASSISTANT = { name: 'Jan', avatar: '👋', created_at: 1747029866.542, -} \ No newline at end of file +} diff --git a/extensions-web/src/jan-provider-web/api.ts b/extensions-web/src/jan-provider-web/api.ts index 4c7bf1af6..97a9608f2 100644 --- a/extensions-web/src/jan-provider-web/api.ts +++ b/extensions-web/src/jan-provider-web/api.ts @@ -268,4 +268,4 @@ export class JanApiClient { } } -export const janApiClient = JanApiClient.getInstance() \ No newline at end of file +export const janApiClient = JanApiClient.getInstance() diff --git a/extensions-web/src/jan-provider-web/index.ts b/extensions-web/src/jan-provider-web/index.ts index 70cbf7770..4d3a4008a 100644 --- a/extensions-web/src/jan-provider-web/index.ts +++ b/extensions-web/src/jan-provider-web/index.ts @@ -1 +1 @@ -export { default } from './provider' \ No newline at end of file +export { default } from './provider' diff --git a/extensions-web/src/jan-provider-web/store.ts b/extensions-web/src/jan-provider-web/store.ts index 02cc70686..2ff341147 100644 --- a/extensions-web/src/jan-provider-web/store.ts +++ b/extensions-web/src/jan-provider-web/store.ts @@ -92,4 +92,4 @@ export const janProviderStore = { useJanProviderStore.getState().clearError(), reset: () => useJanProviderStore.getState().reset(), -} \ No newline at end of file +} diff --git a/extensions-web/src/mcp-web/components/WebSearchButton.tsx b/extensions-web/src/mcp-web/components/WebSearchButton.tsx index 47744de94..86fa08906 100644 --- a/extensions-web/src/mcp-web/components/WebSearchButton.tsx +++ b/extensions-web/src/mcp-web/components/WebSearchButton.tsx @@ -51,4 +51,4 @@ export const WebSearchButton = ({ Search ) -} \ No newline at end of file +} diff --git a/extensions-web/src/mcp-web/components/index.ts b/extensions-web/src/mcp-web/components/index.ts index 9b22072aa..7f9bc47da 100644 --- a/extensions-web/src/mcp-web/components/index.ts +++ b/extensions-web/src/mcp-web/components/index.ts @@ -1 +1 @@ -export { WebSearchButton } from './WebSearchButton' \ No newline at end of file +export { WebSearchButton } from './WebSearchButton' diff --git a/extensions-web/src/mcp-web/index.ts b/extensions-web/src/mcp-web/index.ts index 2400e74c0..705228c9d 100644 --- a/extensions-web/src/mcp-web/index.ts +++ b/extensions-web/src/mcp-web/index.ts @@ -242,4 +242,4 @@ export default class MCPExtensionWeb extends MCPExtension { getToolComponent(): ComponentType | null { return WebSearchButton } -} \ No newline at end of file +} diff --git a/extensions-web/src/mcp-web/oauth-provider.ts b/extensions-web/src/mcp-web/oauth-provider.ts index fd37c3ece..7d14264d6 100644 --- a/extensions-web/src/mcp-web/oauth-provider.ts +++ b/extensions-web/src/mcp-web/oauth-provider.ts @@ -57,4 +57,4 @@ export class JanMCPOAuthProvider implements OAuthClientProvider { async codeVerifier(): Promise { throw new Error('Code verifier not supported') } -} \ No newline at end of file +} diff --git a/extensions-web/src/shared/types/errors.ts b/extensions-web/src/shared/types/errors.ts index 7e6917faa..650507a7b 100644 --- a/extensions-web/src/shared/types/errors.ts +++ b/extensions-web/src/shared/types/errors.ts @@ -47,4 +47,4 @@ export class ApiError extends Error { isServerError(): boolean { return this.status >= 500 && this.status < 600 } -} \ No newline at end of file +} diff --git a/extensions-web/src/types.ts b/extensions-web/src/types.ts index 47ef0be71..4d52032c9 100644 --- a/extensions-web/src/types.ts +++ b/extensions-web/src/types.ts @@ -38,4 +38,4 @@ export interface IndexedDBConfig { keyPath: string indexes?: { name: string; keyPath: string | string[]; unique?: boolean }[] }[] -} \ No newline at end of file +} diff --git a/extensions-web/src/types/global.d.ts b/extensions-web/src/types/global.d.ts index a6e82d759..8d70d398b 100644 --- a/extensions-web/src/types/global.d.ts +++ b/extensions-web/src/types/global.d.ts @@ -2,4 +2,4 @@ export {} declare global { declare const JAN_API_BASE: string -} \ No newline at end of file +} diff --git a/extensions-web/src/vite-env.d.ts b/extensions-web/src/vite-env.d.ts index 151aa6856..11f02fe2a 100644 --- a/extensions-web/src/vite-env.d.ts +++ b/extensions-web/src/vite-env.d.ts @@ -1 +1 @@ -/// \ No newline at end of file +/// diff --git a/extensions-web/vite.config.ts b/extensions-web/vite.config.ts index 79ae4310d..8c144b0ab 100644 --- a/extensions-web/vite.config.ts +++ b/extensions-web/vite.config.ts @@ -16,4 +16,4 @@ export default defineConfig({ define: { JAN_API_BASE: JSON.stringify(process.env.JAN_API_BASE || 'https://api-dev.jan.ai/v1'), } -}) \ No newline at end of file +}) diff --git a/web-app/src/__tests__/i18n.test.ts b/web-app/src/__tests__/i18n.test.ts index 644bc019d..262d93194 100644 --- a/web-app/src/__tests__/i18n.test.ts +++ b/web-app/src/__tests__/i18n.test.ts @@ -49,4 +49,4 @@ describe('i18n module', () => { expect(i18nModule[exportName]).toBeDefined() }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/__tests__/main.test.tsx b/web-app/src/__tests__/main.test.tsx index c105482bf..aec753d56 100644 --- a/web-app/src/__tests__/main.test.tsx +++ b/web-app/src/__tests__/main.test.tsx @@ -76,4 +76,4 @@ describe('main.tsx', () => { await import('../main') }).rejects.toThrow() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/dialog.test.tsx b/web-app/src/components/ui/__tests__/dialog.test.tsx index b4c1f5aab..aeb0cbf52 100644 --- a/web-app/src/components/ui/__tests__/dialog.test.tsx +++ b/web-app/src/components/ui/__tests__/dialog.test.tsx @@ -416,4 +416,4 @@ describe('Dialog Components', () => { expect(screen.getByText('Dialog description')).toHaveAttribute('data-slot', 'dialog-description') expect(screen.getByText('Footer button').closest('div')).toHaveAttribute('data-slot', 'dialog-footer') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/dropdown-menu.test.tsx b/web-app/src/components/ui/__tests__/dropdown-menu.test.tsx index 7b0da6f76..541ae0f93 100644 --- a/web-app/src/components/ui/__tests__/dropdown-menu.test.tsx +++ b/web-app/src/components/ui/__tests__/dropdown-menu.test.tsx @@ -853,4 +853,4 @@ describe('DropdownMenu Components', () => { expect(handleItemClick).toHaveBeenCalledTimes(1) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/dropdrawer.test.tsx b/web-app/src/components/ui/__tests__/dropdrawer.test.tsx index 6203d9f4e..cef88b9d9 100644 --- a/web-app/src/components/ui/__tests__/dropdrawer.test.tsx +++ b/web-app/src/components/ui/__tests__/dropdrawer.test.tsx @@ -530,4 +530,4 @@ describe('DropDrawer Component', () => { expect(trigger).toHaveAttribute('aria-haspopup', 'dialog') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/hover-card.test.tsx b/web-app/src/components/ui/__tests__/hover-card.test.tsx index 71e78cb7f..5e0a39628 100644 --- a/web-app/src/components/ui/__tests__/hover-card.test.tsx +++ b/web-app/src/components/ui/__tests__/hover-card.test.tsx @@ -165,4 +165,4 @@ describe('HoverCard Components', () => { expect(screen.getByText('Hover content')).toBeDefined() }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/input.test.tsx b/web-app/src/components/ui/__tests__/input.test.tsx index 2ae18adad..ddf2fa7db 100644 --- a/web-app/src/components/ui/__tests__/input.test.tsx +++ b/web-app/src/components/ui/__tests__/input.test.tsx @@ -93,4 +93,4 @@ describe('Input', () => { fireEvent.blur(input) expect(handleBlur).toHaveBeenCalledTimes(1) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/popover.test.tsx b/web-app/src/components/ui/__tests__/popover.test.tsx index cec809bb7..b76d1ce04 100644 --- a/web-app/src/components/ui/__tests__/popover.test.tsx +++ b/web-app/src/components/ui/__tests__/popover.test.tsx @@ -436,4 +436,4 @@ describe('Popover Components', () => { }) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/progress.test.tsx b/web-app/src/components/ui/__tests__/progress.test.tsx index daa4b5c05..90a7bc70f 100644 --- a/web-app/src/components/ui/__tests__/progress.test.tsx +++ b/web-app/src/components/ui/__tests__/progress.test.tsx @@ -84,4 +84,4 @@ describe('Progress', () => { // For values over 100, the transform should be positive expect(indicator?.style.transform).toContain('translateX(--50%)') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/radio-group.test.tsx b/web-app/src/components/ui/__tests__/radio-group.test.tsx index a788931d8..1cb85e7c6 100644 --- a/web-app/src/components/ui/__tests__/radio-group.test.tsx +++ b/web-app/src/components/ui/__tests__/radio-group.test.tsx @@ -59,4 +59,4 @@ describe('RadioGroup', () => { expect(screen.getByLabelText('HTTP')).toBeChecked() expect(screen.getByLabelText('SSE')).not.toBeChecked() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/sheet.test.tsx b/web-app/src/components/ui/__tests__/sheet.test.tsx index dc21bbe66..988e512c0 100644 --- a/web-app/src/components/ui/__tests__/sheet.test.tsx +++ b/web-app/src/components/ui/__tests__/sheet.test.tsx @@ -260,4 +260,4 @@ describe('Sheet Components', () => { expect(screen.getByText('Main Content')).toBeInTheDocument() expect(screen.getByText('Close')).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/skeleton.test.tsx b/web-app/src/components/ui/__tests__/skeleton.test.tsx index 273be182e..39d9535a7 100644 --- a/web-app/src/components/ui/__tests__/skeleton.test.tsx +++ b/web-app/src/components/ui/__tests__/skeleton.test.tsx @@ -61,4 +61,4 @@ describe('Skeleton', () => { expect(skeleton).toHaveClass('w-full') expect(skeleton).toHaveClass('bg-red-500') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/slider.test.tsx b/web-app/src/components/ui/__tests__/slider.test.tsx index 5fd72f766..2a15441b2 100644 --- a/web-app/src/components/ui/__tests__/slider.test.tsx +++ b/web-app/src/components/ui/__tests__/slider.test.tsx @@ -190,4 +190,4 @@ describe('Slider', () => { expect(thumb).toHaveClass('border-accent', 'bg-main-view', 'rounded-full') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/sonner.test.tsx b/web-app/src/components/ui/__tests__/sonner.test.tsx index 72aca5526..8b2fc762d 100644 --- a/web-app/src/components/ui/__tests__/sonner.test.tsx +++ b/web-app/src/components/ui/__tests__/sonner.test.tsx @@ -90,4 +90,4 @@ describe('Toaster Component', () => { expect(toaster).toHaveAttribute('data-rich-colors', 'true') expect(toaster).toHaveAttribute('data-close-button', 'true') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/switch.test.tsx b/web-app/src/components/ui/__tests__/switch.test.tsx index d872dbc11..0db35d716 100644 --- a/web-app/src/components/ui/__tests__/switch.test.tsx +++ b/web-app/src/components/ui/__tests__/switch.test.tsx @@ -189,4 +189,4 @@ describe('Switch', () => { const switchElement = document.querySelector('[data-slot="switch"]') expect(switchElement).toHaveClass('data-[state=unchecked]:bg-main-view-fg/20') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/textarea.test.tsx b/web-app/src/components/ui/__tests__/textarea.test.tsx index 6daf09e4d..806cf9515 100644 --- a/web-app/src/components/ui/__tests__/textarea.test.tsx +++ b/web-app/src/components/ui/__tests__/textarea.test.tsx @@ -113,4 +113,4 @@ describe('Textarea', () => { const textarea = screen.getByRole('textbox') expect(textarea).toHaveAttribute('cols', '50') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/__tests__/tooltip.test.tsx b/web-app/src/components/ui/__tests__/tooltip.test.tsx index 4221751d4..46c68e0b8 100644 --- a/web-app/src/components/ui/__tests__/tooltip.test.tsx +++ b/web-app/src/components/ui/__tests__/tooltip.test.tsx @@ -111,4 +111,4 @@ describe('Tooltip Components', () => { expect(screen.getByText('First')).toBeInTheDocument() expect(screen.getByText('Second')).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/components/ui/radio-group.tsx b/web-app/src/components/ui/radio-group.tsx index b5fa0593a..e604ac901 100644 --- a/web-app/src/components/ui/radio-group.tsx +++ b/web-app/src/components/ui/radio-group.tsx @@ -39,4 +39,4 @@ const RadioGroupItem = React.forwardRef< }) RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName -export { RadioGroup, RadioGroupItem } \ No newline at end of file +export { RadioGroup, RadioGroupItem } diff --git a/web-app/src/constants/__tests__/windows.test.ts b/web-app/src/constants/__tests__/windows.test.ts index f9d388f98..3f55184e1 100644 --- a/web-app/src/constants/__tests__/windows.test.ts +++ b/web-app/src/constants/__tests__/windows.test.ts @@ -33,4 +33,4 @@ describe('windows constants', () => { expect(value.length).toBeGreaterThan(0) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/constants/chat.ts b/web-app/src/constants/chat.ts index d147ca9e1..e1649049f 100644 --- a/web-app/src/constants/chat.ts +++ b/web-app/src/constants/chat.ts @@ -3,4 +3,4 @@ */ export const TEMPORARY_CHAT_ID = 'temporary-chat' -export const TEMPORARY_CHAT_QUERY_ID = 'temporary-chat' \ No newline at end of file +export const TEMPORARY_CHAT_QUERY_ID = 'temporary-chat' diff --git a/web-app/src/containers/McpExtensionToolLoader.tsx b/web-app/src/containers/McpExtensionToolLoader.tsx index b4a80d82a..ccadada6c 100644 --- a/web-app/src/containers/McpExtensionToolLoader.tsx +++ b/web-app/src/containers/McpExtensionToolLoader.tsx @@ -58,4 +58,4 @@ export const McpExtensionToolLoader = ({ onToolToggle={handleToolToggle} /> ) -} \ No newline at end of file +} diff --git a/web-app/src/containers/__tests__/AvatarEmoji.test.tsx b/web-app/src/containers/__tests__/AvatarEmoji.test.tsx index ea44b95a0..e0ec9488a 100644 --- a/web-app/src/containers/__tests__/AvatarEmoji.test.tsx +++ b/web-app/src/containers/__tests__/AvatarEmoji.test.tsx @@ -121,4 +121,4 @@ describe('AvatarEmoji Component', () => { const img = screen.getByRole('img') expect(img).toHaveAttribute('alt', 'Custom avatar') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/ChatInput.simple.test.tsx b/web-app/src/containers/__tests__/ChatInput.simple.test.tsx index a1c71baa8..8992edbc0 100644 --- a/web-app/src/containers/__tests__/ChatInput.simple.test.tsx +++ b/web-app/src/containers/__tests__/ChatInput.simple.test.tsx @@ -36,4 +36,4 @@ describe('ChatInput Simple Tests', () => { const sendButton = screen.getByTestId('send-message-button') expect(sendButton).toHaveTextContent('Send') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/ChatInput.test.tsx b/web-app/src/containers/__tests__/ChatInput.test.tsx index 50b0b6172..9184e3b98 100644 --- a/web-app/src/containers/__tests__/ChatInput.test.tsx +++ b/web-app/src/containers/__tests__/ChatInput.test.tsx @@ -392,4 +392,4 @@ describe('ChatInput', () => { expect(() => renderWithRouter()).not.toThrow() }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/DropdownModelProvider.displayName.test.tsx b/web-app/src/containers/__tests__/DropdownModelProvider.displayName.test.tsx index 38783dfab..5f5fba96a 100644 --- a/web-app/src/containers/__tests__/DropdownModelProvider.displayName.test.tsx +++ b/web-app/src/containers/__tests__/DropdownModelProvider.displayName.test.tsx @@ -274,4 +274,4 @@ describe('DropdownModelProvider - Display Name Integration', () => { // Both models are still visible in the dropdown, so we can't test for absence expect(screen.getAllByText('Short Name')).toHaveLength(2) // trigger + dropdown }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/EditModel.test.tsx b/web-app/src/containers/__tests__/EditModel.test.tsx index a02e72476..9f4eafc84 100644 --- a/web-app/src/containers/__tests__/EditModel.test.tsx +++ b/web-app/src/containers/__tests__/EditModel.test.tsx @@ -181,4 +181,4 @@ describe('DialogEditModel - Basic Component Tests', () => { expect(mockUpdateProvider).toBeDefined() expect(mockSetProviders).toBeDefined() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/LeftPanel.test.tsx b/web-app/src/containers/__tests__/LeftPanel.test.tsx index e5b316e34..d8fcccc33 100644 --- a/web-app/src/containers/__tests__/LeftPanel.test.tsx +++ b/web-app/src/containers/__tests__/LeftPanel.test.tsx @@ -266,4 +266,4 @@ describe('LeftPanel', () => { const toggleButton = document.querySelector('svg.tabler-icon-layout-sidebar') expect(toggleButton).not.toBeNull() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/__tests__/SetupScreen.test.tsx b/web-app/src/containers/__tests__/SetupScreen.test.tsx index 2fd26429b..1ef654eee 100644 --- a/web-app/src/containers/__tests__/SetupScreen.test.tsx +++ b/web-app/src/containers/__tests__/SetupScreen.test.tsx @@ -143,4 +143,4 @@ describe('SetupScreen', () => { const setupContent = screen.getByText('setup:welcome').closest('div') expect(setupContent).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/containers/dialogs/DeleteAssistantDialog.tsx b/web-app/src/containers/dialogs/DeleteAssistantDialog.tsx index 34d8b4380..2af8117af 100644 --- a/web-app/src/containers/dialogs/DeleteAssistantDialog.tsx +++ b/web-app/src/containers/dialogs/DeleteAssistantDialog.tsx @@ -75,4 +75,4 @@ export function DeleteAssistantDialog({ ) -} \ No newline at end of file +} diff --git a/web-app/src/containers/dialogs/FactoryResetDialog.tsx b/web-app/src/containers/dialogs/FactoryResetDialog.tsx index 927676799..644460b2f 100644 --- a/web-app/src/containers/dialogs/FactoryResetDialog.tsx +++ b/web-app/src/containers/dialogs/FactoryResetDialog.tsx @@ -77,4 +77,4 @@ export function FactoryResetDialog({ ) -} \ No newline at end of file +} diff --git a/web-app/src/hooks/__tests__/useAnalytic.test.ts b/web-app/src/hooks/__tests__/useAnalytic.test.ts index 8ecf4c18c..fa26ae7b9 100644 --- a/web-app/src/hooks/__tests__/useAnalytic.test.ts +++ b/web-app/src/hooks/__tests__/useAnalytic.test.ts @@ -142,4 +142,4 @@ describe('useAnalytic', () => { expect(result.current.productAnalytic).toBe(false) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useAppState.test.ts b/web-app/src/hooks/__tests__/useAppState.test.ts index a677b6564..462096eac 100644 --- a/web-app/src/hooks/__tests__/useAppState.test.ts +++ b/web-app/src/hooks/__tests__/useAppState.test.ts @@ -201,4 +201,4 @@ describe('useAppState', () => { expect(result.current.tokenSpeed).toBeUndefined() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useAppUpdater.test.ts b/web-app/src/hooks/__tests__/useAppUpdater.test.ts index 1cbd96afe..fd1a41482 100644 --- a/web-app/src/hooks/__tests__/useAppUpdater.test.ts +++ b/web-app/src/hooks/__tests__/useAppUpdater.test.ts @@ -406,4 +406,4 @@ describe('useAppUpdater', () => { expect(mockEvents.emit).toHaveBeenCalledWith('onAppUpdateDownloadSuccess', {}) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useAppearance.test.ts b/web-app/src/hooks/__tests__/useAppearance.test.ts index 74be4d3d2..8a1f3437c 100644 --- a/web-app/src/hooks/__tests__/useAppearance.test.ts +++ b/web-app/src/hooks/__tests__/useAppearance.test.ts @@ -285,4 +285,4 @@ describe('useAppearance', () => { expect(result.current.chatWidth).toBe('compact') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useChat.test.ts b/web-app/src/hooks/__tests__/useChat.test.ts index 45d46eb53..e87191fb6 100644 --- a/web-app/src/hooks/__tests__/useChat.test.ts +++ b/web-app/src/hooks/__tests__/useChat.test.ts @@ -225,4 +225,4 @@ describe('useChat', () => { expect(result.current).toBeDefined() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useClickOutside.test.ts b/web-app/src/hooks/__tests__/useClickOutside.test.ts index 0752c9396..405040761 100644 --- a/web-app/src/hooks/__tests__/useClickOutside.test.ts +++ b/web-app/src/hooks/__tests__/useClickOutside.test.ts @@ -171,4 +171,4 @@ describe('useClickOutside', () => { addEventListenerSpy.mockRestore() removeEventListenerSpy.mockRestore() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useCodeblock.test.ts b/web-app/src/hooks/__tests__/useCodeblock.test.ts index 9a71fd381..187af34b2 100644 --- a/web-app/src/hooks/__tests__/useCodeblock.test.ts +++ b/web-app/src/hooks/__tests__/useCodeblock.test.ts @@ -147,4 +147,4 @@ describe('useCodeblock', () => { expect(result.current.codeBlockStyle).toBe('preserved-theme') expect(result.current.showLineNumbers).toBe(false) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useDownloadStore.test.ts b/web-app/src/hooks/__tests__/useDownloadStore.test.ts index 66c5c97de..e68116489 100644 --- a/web-app/src/hooks/__tests__/useDownloadStore.test.ts +++ b/web-app/src/hooks/__tests__/useDownloadStore.test.ts @@ -259,4 +259,4 @@ describe('useDownloadStore', () => { expect(result.current.localDownloadingModels.has('model-1')).toBe(true) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useHotkeys.test.ts b/web-app/src/hooks/__tests__/useHotkeys.test.ts index 9af15ab8a..621718eb5 100644 --- a/web-app/src/hooks/__tests__/useHotkeys.test.ts +++ b/web-app/src/hooks/__tests__/useHotkeys.test.ts @@ -468,4 +468,4 @@ describe('useKeyboardShortcut', () => { expect(mockCallback).toHaveBeenCalledTimes(1) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useLeftPanel.test.ts b/web-app/src/hooks/__tests__/useLeftPanel.test.ts index 964ef3dd8..9406ac599 100644 --- a/web-app/src/hooks/__tests__/useLeftPanel.test.ts +++ b/web-app/src/hooks/__tests__/useLeftPanel.test.ts @@ -143,4 +143,4 @@ describe('useLeftPanel', () => { expect(result.current.open).toBe(true) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useLlamacppDevices.test.ts b/web-app/src/hooks/__tests__/useLlamacppDevices.test.ts index b8a5acdcf..6be0622e3 100644 --- a/web-app/src/hooks/__tests__/useLlamacppDevices.test.ts +++ b/web-app/src/hooks/__tests__/useLlamacppDevices.test.ts @@ -154,4 +154,4 @@ describe('useLlamacppDevices', () => { expect(result.current.devices[1].activated).toBe(true) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useLocalApiServer.test.ts b/web-app/src/hooks/__tests__/useLocalApiServer.test.ts index 388f438b9..877355651 100644 --- a/web-app/src/hooks/__tests__/useLocalApiServer.test.ts +++ b/web-app/src/hooks/__tests__/useLocalApiServer.test.ts @@ -663,4 +663,4 @@ describe('useLocalApiServer', () => { expect(result.current.serverPort).toBe(65535) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useMCPServers.test.ts b/web-app/src/hooks/__tests__/useMCPServers.test.ts index e5256a549..2e7810be1 100644 --- a/web-app/src/hooks/__tests__/useMCPServers.test.ts +++ b/web-app/src/hooks/__tests__/useMCPServers.test.ts @@ -474,4 +474,4 @@ describe('useMCPServers', () => { expect(result.current.deletedServerKeys).toContain('lifecycle-server') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useMediaQuery.test.ts b/web-app/src/hooks/__tests__/useMediaQuery.test.ts index 653511657..315fd9593 100644 --- a/web-app/src/hooks/__tests__/useMediaQuery.test.ts +++ b/web-app/src/hooks/__tests__/useMediaQuery.test.ts @@ -316,4 +316,4 @@ describe('useSmallScreen', () => { expect(mockMatchMedia).toHaveBeenCalledWith('(max-width: 768px)') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useMessages.test.ts b/web-app/src/hooks/__tests__/useMessages.test.ts index 89c0c4e85..503806e38 100644 --- a/web-app/src/hooks/__tests__/useMessages.test.ts +++ b/web-app/src/hooks/__tests__/useMessages.test.ts @@ -392,4 +392,4 @@ describe('useMessages', () => { expect(result2.current.getMessages('thread1')).toEqual([testMessage]) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useModelContextApproval.test.ts b/web-app/src/hooks/__tests__/useModelContextApproval.test.ts index 1c5e83dcd..8ed52b56b 100644 --- a/web-app/src/hooks/__tests__/useModelContextApproval.test.ts +++ b/web-app/src/hooks/__tests__/useModelContextApproval.test.ts @@ -311,4 +311,4 @@ describe('useContextSizeApproval', () => { expect(secondResult).toBe('context_shift') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useModelProvider.test.ts b/web-app/src/hooks/__tests__/useModelProvider.test.ts index 88272cf57..e1fc4a8d2 100644 --- a/web-app/src/hooks/__tests__/useModelProvider.test.ts +++ b/web-app/src/hooks/__tests__/useModelProvider.test.ts @@ -179,4 +179,4 @@ describe('useModelProvider - displayName functionality', () => { expect(provider?.models[0].displayName).toBe('Custom Model Name') expect(provider?.models[0].id).toBe('test-model.gguf') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/usePrompt.test.ts b/web-app/src/hooks/__tests__/usePrompt.test.ts index b7997cf1b..4a56cd38b 100644 --- a/web-app/src/hooks/__tests__/usePrompt.test.ts +++ b/web-app/src/hooks/__tests__/usePrompt.test.ts @@ -98,4 +98,4 @@ describe('usePrompt', () => { expect(result.current.prompt).toBe(longText) expect(result.current.prompt.length).toBe(10000) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useProviderModels.test.ts b/web-app/src/hooks/__tests__/useProviderModels.test.ts index da9b60e07..e19bcb102 100644 --- a/web-app/src/hooks/__tests__/useProviderModels.test.ts +++ b/web-app/src/hooks/__tests__/useProviderModels.test.ts @@ -99,4 +99,4 @@ describe('useProviderModels', () => { expect(fetchModelsSpy).not.toHaveBeenCalled() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useProxyConfig.test.ts b/web-app/src/hooks/__tests__/useProxyConfig.test.ts index e411ad226..9aca90821 100644 --- a/web-app/src/hooks/__tests__/useProxyConfig.test.ts +++ b/web-app/src/hooks/__tests__/useProxyConfig.test.ts @@ -320,4 +320,4 @@ describe('useProxyConfig', () => { expect(typeof result.current.setNoProxy).toBe('function') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useReleaseNotes.test.ts b/web-app/src/hooks/__tests__/useReleaseNotes.test.ts index 1b84924ff..824ae0dfa 100644 --- a/web-app/src/hooks/__tests__/useReleaseNotes.test.ts +++ b/web-app/src/hooks/__tests__/useReleaseNotes.test.ts @@ -359,4 +359,4 @@ describe('useReleaseNotes', () => { expect(result.current.error).toBe(null) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useTheme.test.ts b/web-app/src/hooks/__tests__/useTheme.test.ts index a2416eb03..f0c294385 100644 --- a/web-app/src/hooks/__tests__/useTheme.test.ts +++ b/web-app/src/hooks/__tests__/useTheme.test.ts @@ -186,4 +186,4 @@ describe('useTheme', () => { expect(result.current.isDark).toBe(false) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useToolApproval.test.ts b/web-app/src/hooks/__tests__/useToolApproval.test.ts index e73e193a3..2db153543 100644 --- a/web-app/src/hooks/__tests__/useToolApproval.test.ts +++ b/web-app/src/hooks/__tests__/useToolApproval.test.ts @@ -440,4 +440,4 @@ describe('useToolApproval', () => { expect(result.current.isToolApproved('thread-1', 'tool-a')).toBe(true) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useToolAvailable.test.ts b/web-app/src/hooks/__tests__/useToolAvailable.test.ts index f9387a4b3..b88762212 100644 --- a/web-app/src/hooks/__tests__/useToolAvailable.test.ts +++ b/web-app/src/hooks/__tests__/useToolAvailable.test.ts @@ -417,4 +417,4 @@ describe('useToolAvailable', () => { expect(result.current.isToolDisabled('thread-1', 'tool-c')).toBe(true) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useTools.test.ts b/web-app/src/hooks/__tests__/useTools.test.ts index f60b4bf18..82561e2db 100644 --- a/web-app/src/hooks/__tests__/useTools.test.ts +++ b/web-app/src/hooks/__tests__/useTools.test.ts @@ -179,4 +179,4 @@ describe('useTools', () => { expect(mockGetTools).toHaveBeenCalledTimes(1) expect(mockListen).toHaveBeenCalledTimes(1) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/__tests__/useVulkan.test.ts b/web-app/src/hooks/__tests__/useVulkan.test.ts index a958279be..aaf88057c 100644 --- a/web-app/src/hooks/__tests__/useVulkan.test.ts +++ b/web-app/src/hooks/__tests__/useVulkan.test.ts @@ -214,4 +214,4 @@ describe('useVulkan', () => { expect(result.current.vulkanEnabled).toBe(false) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/hooks/useFavoriteModel.ts b/web-app/src/hooks/useFavoriteModel.ts index 979c1400e..778c9f9d0 100644 --- a/web-app/src/hooks/useFavoriteModel.ts +++ b/web-app/src/hooks/useFavoriteModel.ts @@ -50,4 +50,4 @@ export const useFavoriteModel = create()( storage: createJSONStorage(() => localStorage), } ) -) \ No newline at end of file +) diff --git a/web-app/src/hooks/useServiceHub.ts b/web-app/src/hooks/useServiceHub.ts index 22af1886b..0a0b00d05 100644 --- a/web-app/src/hooks/useServiceHub.ts +++ b/web-app/src/hooks/useServiceHub.ts @@ -52,4 +52,4 @@ export const initializeServiceHubStore = (serviceHub: ServiceHub) => { */ export const isServiceHubInitialized = (): boolean => { return useServiceStore.getState().serviceHub !== null -} \ No newline at end of file +} diff --git a/web-app/src/i18n.ts b/web-app/src/i18n.ts index 84abfe50c..7a8e34750 100644 --- a/web-app/src/i18n.ts +++ b/web-app/src/i18n.ts @@ -4,4 +4,4 @@ export { default } from '@/i18n/setup' // Re-export compatibility functions for existing code export { useTranslation } from '@/i18n/react-i18next-compat' export { useAppTranslation } from '@/i18n/hooks' -export { TranslationProvider } from '@/i18n/TranslationContext' \ No newline at end of file +export { TranslationProvider } from '@/i18n/TranslationContext' diff --git a/web-app/src/i18n/TranslationContext.tsx b/web-app/src/i18n/TranslationContext.tsx index de2643764..539afc03c 100644 --- a/web-app/src/i18n/TranslationContext.tsx +++ b/web-app/src/i18n/TranslationContext.tsx @@ -43,4 +43,4 @@ export const TranslationProvider: React.FC<{ children: ReactNode }> = ({ childre ) } -export default TranslationProvider \ No newline at end of file +export default TranslationProvider diff --git a/web-app/src/i18n/context.ts b/web-app/src/i18n/context.ts index 49a3be692..35ba65880 100644 --- a/web-app/src/i18n/context.ts +++ b/web-app/src/i18n/context.ts @@ -8,4 +8,4 @@ export const TranslationContext = createContext<{ }>({ t: (key: string) => key, i18n: i18next, -}) \ No newline at end of file +}) diff --git a/web-app/src/i18n/hooks.ts b/web-app/src/i18n/hooks.ts index f1c09f7f5..f1fdf1d67 100644 --- a/web-app/src/i18n/hooks.ts +++ b/web-app/src/i18n/hooks.ts @@ -2,4 +2,4 @@ import { useContext } from "react" import { TranslationContext } from "./context" // Custom hook for easy translations -export const useAppTranslation = () => useContext(TranslationContext) \ No newline at end of file +export const useAppTranslation = () => useContext(TranslationContext) diff --git a/web-app/src/i18n/index.ts b/web-app/src/i18n/index.ts index 7c8f53bda..26f21b4d5 100644 --- a/web-app/src/i18n/index.ts +++ b/web-app/src/i18n/index.ts @@ -5,4 +5,4 @@ export { default as i18n, loadTranslations } from './setup' export { TranslationProvider } from './TranslationContext' // Export types -export type { I18nInstance, TranslationResources } from './setup' \ No newline at end of file +export type { I18nInstance, TranslationResources } from './setup' diff --git a/web-app/src/i18n/react-i18next-compat.ts b/web-app/src/i18n/react-i18next-compat.ts index 585287b9a..ee6799b9f 100644 --- a/web-app/src/i18n/react-i18next-compat.ts +++ b/web-app/src/i18n/react-i18next-compat.ts @@ -31,4 +31,4 @@ export { default as i18n } from './setup' // Re-export other utilities export { TranslationProvider } from './TranslationContext' -export { useAppTranslation } from './hooks' \ No newline at end of file +export { useAppTranslation } from './hooks' diff --git a/web-app/src/i18n/setup.ts b/web-app/src/i18n/setup.ts index 9026100ee..9b4f4621e 100644 --- a/web-app/src/i18n/setup.ts +++ b/web-app/src/i18n/setup.ts @@ -153,4 +153,4 @@ export const loadTranslations = (): void => { // Initialize and export the i18n instance const i18n = initI18n() -export default i18n \ No newline at end of file +export default i18n diff --git a/web-app/src/lib/__tests__/completion.test.ts b/web-app/src/lib/__tests__/completion.test.ts index 2ea67068d..2b3ccaec7 100644 --- a/web-app/src/lib/__tests__/completion.test.ts +++ b/web-app/src/lib/__tests__/completion.test.ts @@ -187,4 +187,4 @@ describe('completion.ts', () => { expect(result.length).toBe(0) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/lib/__tests__/extension.test.ts b/web-app/src/lib/__tests__/extension.test.ts index d4a2e8da9..b6419a30e 100644 --- a/web-app/src/lib/__tests__/extension.test.ts +++ b/web-app/src/lib/__tests__/extension.test.ts @@ -138,4 +138,4 @@ describe('extension.ts', () => { expect(invoke).toHaveBeenCalledWith('test_command', { param: 'value' }) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/lib/analytics.ts b/web-app/src/lib/analytics.ts index b7e35dc60..a0ff9090f 100644 --- a/web-app/src/lib/analytics.ts +++ b/web-app/src/lib/analytics.ts @@ -14,4 +14,4 @@ export function trackEvent( } window.gtag('event', eventName, parameters) -} \ No newline at end of file +} diff --git a/web-app/src/lib/platform/const.ts b/web-app/src/lib/platform/const.ts index 5621602b5..40c39a810 100644 --- a/web-app/src/lib/platform/const.ts +++ b/web-app/src/lib/platform/const.ts @@ -67,4 +67,4 @@ export const PlatformFeatures: Record = { // Temporary chat mode - enabled for web only [PlatformFeature.TEMPORARY_CHAT]: !isPlatformTauri(), -} \ No newline at end of file +} diff --git a/web-app/src/lib/platform/index.ts b/web-app/src/lib/platform/index.ts index 08d34d4cc..807e9261c 100644 --- a/web-app/src/lib/platform/index.ts +++ b/web-app/src/lib/platform/index.ts @@ -10,4 +10,4 @@ export * from './types' export * from './utils' // Re-export components -export * from './PlatformGuard' \ No newline at end of file +export * from './PlatformGuard' diff --git a/web-app/src/lib/shortcuts/const.ts b/web-app/src/lib/shortcuts/const.ts index 8cac19536..969ee3c33 100644 --- a/web-app/src/lib/shortcuts/const.ts +++ b/web-app/src/lib/shortcuts/const.ts @@ -38,4 +38,4 @@ export const PlatformShortcuts: ShortcutMap = { key: '-', usePlatformMetaKey: true, }, -} \ No newline at end of file +} diff --git a/web-app/src/lib/shortcuts/index.ts b/web-app/src/lib/shortcuts/index.ts index ceefa40a3..ff545fdae 100644 --- a/web-app/src/lib/shortcuts/index.ts +++ b/web-app/src/lib/shortcuts/index.ts @@ -6,4 +6,4 @@ */ export * from './types' -export * from './const' \ No newline at end of file +export * from './const' diff --git a/web-app/src/lib/shortcuts/types.ts b/web-app/src/lib/shortcuts/types.ts index 8ac96ae0e..1ce5104e0 100644 --- a/web-app/src/lib/shortcuts/types.ts +++ b/web-app/src/lib/shortcuts/types.ts @@ -20,4 +20,4 @@ export interface ShortcutSpec { metaKey?: boolean } -export type ShortcutMap = Record \ No newline at end of file +export type ShortcutMap = Record diff --git a/web-app/src/providers/ServiceHubProvider.tsx b/web-app/src/providers/ServiceHubProvider.tsx index 68aa43c19..0ab261ae4 100644 --- a/web-app/src/providers/ServiceHubProvider.tsx +++ b/web-app/src/providers/ServiceHubProvider.tsx @@ -23,4 +23,4 @@ export function ServiceHubProvider({ children }: ServiceHubProviderProps) { }, []) return <>{isReady && children} -} \ No newline at end of file +} diff --git a/web-app/src/providers/__tests__/DataProvider.test.tsx b/web-app/src/providers/__tests__/DataProvider.test.tsx index 9757c2b29..4e578f1b5 100644 --- a/web-app/src/providers/__tests__/DataProvider.test.tsx +++ b/web-app/src/providers/__tests__/DataProvider.test.tsx @@ -101,4 +101,4 @@ describe('DataProvider', () => { expect(screen.getByText('Test Child 1')).toBeInTheDocument() expect(screen.getByText('Test Child 2')).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/providers/__tests__/ThemeProvider.test.tsx b/web-app/src/providers/__tests__/ThemeProvider.test.tsx index 232035874..e0cf5748c 100644 --- a/web-app/src/providers/__tests__/ThemeProvider.test.tsx +++ b/web-app/src/providers/__tests__/ThemeProvider.test.tsx @@ -79,4 +79,4 @@ describe('ThemeProvider', () => { // Should be called on mount expect(useTheme).toHaveBeenCalled() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/hub/__tests__/huggingface-conversion.test.ts b/web-app/src/routes/hub/__tests__/huggingface-conversion.test.ts index 23b65b9ef..8dbaf4720 100644 --- a/web-app/src/routes/hub/__tests__/huggingface-conversion.test.ts +++ b/web-app/src/routes/hub/__tests__/huggingface-conversion.test.ts @@ -304,4 +304,4 @@ describe('HuggingFace Repository Conversion', () => { expect(result.quants[0].file_size).toBe('1024.0 GB') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/__tests__/appearance.test.tsx b/web-app/src/routes/settings/__tests__/appearance.test.tsx index 6b2727588..c7560ad70 100644 --- a/web-app/src/routes/settings/__tests__/appearance.test.tsx +++ b/web-app/src/routes/settings/__tests__/appearance.test.tsx @@ -235,4 +235,4 @@ describe('Appearance Settings Route', () => { const settingsMenu = screen.getByTestId('settings-menu') expect(settingsMenu).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/__tests__/extensions.test.tsx b/web-app/src/routes/settings/__tests__/extensions.test.tsx index d7dcf22d6..a111ab741 100644 --- a/web-app/src/routes/settings/__tests__/extensions.test.tsx +++ b/web-app/src/routes/settings/__tests__/extensions.test.tsx @@ -226,4 +226,4 @@ describe('Extensions Settings Route', () => { const settingsContent = screen.getByTestId('settings-menu').nextElementSibling expect(settingsContent).toHaveClass('p-4', 'w-full', 'h-[calc(100%-32px)]', 'overflow-y-auto') }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/__tests__/hardware.test.tsx b/web-app/src/routes/settings/__tests__/hardware.test.tsx index 604ee639c..a57b5d7c7 100644 --- a/web-app/src/routes/settings/__tests__/hardware.test.tsx +++ b/web-app/src/routes/settings/__tests__/hardware.test.tsx @@ -182,4 +182,4 @@ describe('Hardware Settings', () => { expect(screen.queryByText('GPUs')).not.toBeInTheDocument() }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/__tests__/privacy.test.tsx b/web-app/src/routes/settings/__tests__/privacy.test.tsx index 57bc4b870..3c46a571c 100644 --- a/web-app/src/routes/settings/__tests__/privacy.test.tsx +++ b/web-app/src/routes/settings/__tests__/privacy.test.tsx @@ -184,4 +184,4 @@ describe('Privacy Settings Route', () => { fireEvent.click(analyticsSwitch) expect(analyticsSwitch).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/__tests__/shortcuts.test.tsx b/web-app/src/routes/settings/__tests__/shortcuts.test.tsx index 4e9eb7641..d5ac24ab1 100644 --- a/web-app/src/routes/settings/__tests__/shortcuts.test.tsx +++ b/web-app/src/routes/settings/__tests__/shortcuts.test.tsx @@ -190,4 +190,4 @@ describe('Shortcuts Settings Route', () => { const contentArea = screen.getAllByTestId('card') expect(contentArea.length).toBeGreaterThan(0) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/routes/settings/providers/__tests__/index.test.tsx b/web-app/src/routes/settings/providers/__tests__/index.test.tsx index e6a95e2bc..767775b64 100644 --- a/web-app/src/routes/settings/providers/__tests__/index.test.tsx +++ b/web-app/src/routes/settings/providers/__tests__/index.test.tsx @@ -303,4 +303,4 @@ describe('Providers Settings Route', () => { // With empty providers array, should still render the page structure expect(screen.getByTestId('card')).toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/analytic.test.ts b/web-app/src/services/__tests__/analytic.test.ts index 94e25610f..56f3b9c67 100644 --- a/web-app/src/services/__tests__/analytic.test.ts +++ b/web-app/src/services/__tests__/analytic.test.ts @@ -265,4 +265,4 @@ describe('DefaultAnalyticService', () => { }) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/assistants.test.ts b/web-app/src/services/__tests__/assistants.test.ts index 8c7d96e2c..0fe92f6b7 100644 --- a/web-app/src/services/__tests__/assistants.test.ts +++ b/web-app/src/services/__tests__/assistants.test.ts @@ -130,4 +130,4 @@ describe('DefaultAssistantsService', () => { await expect(assistantsService.deleteAssistant(assistant)).rejects.toThrow('Failed to delete assistant') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/events.test.ts b/web-app/src/services/__tests__/events.test.ts index ab3d597f8..9781cee8f 100644 --- a/web-app/src/services/__tests__/events.test.ts +++ b/web-app/src/services/__tests__/events.test.ts @@ -142,4 +142,4 @@ describe('EventEmitter', () => { expect(handler).toHaveBeenCalledWith(complexData) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/hardware.test.ts b/web-app/src/services/__tests__/hardware.test.ts index f9a16155b..69ccb0423 100644 --- a/web-app/src/services/__tests__/hardware.test.ts +++ b/web-app/src/services/__tests__/hardware.test.ts @@ -262,4 +262,4 @@ describe('TauriHardwareService', () => { expect(vi.mocked(invoke)).toHaveBeenNthCalledWith(2, 'plugin:hardware|get_system_usage') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/mcp.test.ts b/web-app/src/services/__tests__/mcp.test.ts index 0f5e9d073..a2af0cc76 100644 --- a/web-app/src/services/__tests__/mcp.test.ts +++ b/web-app/src/services/__tests__/mcp.test.ts @@ -430,4 +430,4 @@ describe('TauriMCPService', () => { expect(result).toEqual(toolResult) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/messages.test.ts b/web-app/src/services/__tests__/messages.test.ts index 445a9e53a..21032bb76 100644 --- a/web-app/src/services/__tests__/messages.test.ts +++ b/web-app/src/services/__tests__/messages.test.ts @@ -158,4 +158,4 @@ describe('DefaultMessagesService', () => { await expect(messagesService.deleteMessage(threadId, messageId)).rejects.toThrow('Failed to delete message') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/serviceHub.integration.test.ts b/web-app/src/services/__tests__/serviceHub.integration.test.ts index 5b89347a1..8a8a10344 100644 --- a/web-app/src/services/__tests__/serviceHub.integration.test.ts +++ b/web-app/src/services/__tests__/serviceHub.integration.test.ts @@ -213,4 +213,4 @@ describe('ServiceHub Integration Tests', () => { }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/__tests__/web-specific.test.ts b/web-app/src/services/__tests__/web-specific.test.ts index 135b48c1c..52e544bf5 100644 --- a/web-app/src/services/__tests__/web-specific.test.ts +++ b/web-app/src/services/__tests__/web-specific.test.ts @@ -99,4 +99,4 @@ describe('Web-Specific Service Tests', () => { expect(typeof service.factoryReset).toBe('function') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/services/analytic/default.ts b/web-app/src/services/analytic/default.ts index eff3a14c3..e0ae67224 100644 --- a/web-app/src/services/analytic/default.ts +++ b/web-app/src/services/analytic/default.ts @@ -20,4 +20,4 @@ export class DefaultAnalyticService implements AnalyticService { await window.core?.api?.getAppConfigurations() return appConfiguration.distinct_id } -} \ No newline at end of file +} diff --git a/web-app/src/services/analytic/types.ts b/web-app/src/services/analytic/types.ts index e54e74424..b8f2fc6d7 100644 --- a/web-app/src/services/analytic/types.ts +++ b/web-app/src/services/analytic/types.ts @@ -5,4 +5,4 @@ export interface AnalyticService { updateDistinctId(id: string): Promise getAppDistinctId(): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/app/default.ts b/web-app/src/services/app/default.ts index 9e54c6791..68fe1f0ea 100644 --- a/web-app/src/services/app/default.ts +++ b/web-app/src/services/app/default.ts @@ -39,4 +39,4 @@ export class DefaultAppService implements AppService { console.log('readYaml called with path:', path) throw new Error('readYaml not implemented in default app service') } -} \ No newline at end of file +} diff --git a/web-app/src/services/app/tauri.ts b/web-app/src/services/app/tauri.ts index b59a9f676..af770e93d 100644 --- a/web-app/src/services/app/tauri.ts +++ b/web-app/src/services/app/tauri.ts @@ -75,4 +75,4 @@ export class TauriAppService extends DefaultAppService { async readYaml(path: string): Promise { return await invoke('read_yaml', { path }) } -} \ No newline at end of file +} diff --git a/web-app/src/services/app/types.ts b/web-app/src/services/app/types.ts index 9b0c25b7e..4be49c584 100644 --- a/web-app/src/services/app/types.ts +++ b/web-app/src/services/app/types.ts @@ -17,4 +17,4 @@ export interface AppService { relocateJanDataFolder(path: string): Promise getServerStatus(): Promise readYaml(path: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/app/web.ts b/web-app/src/services/app/web.ts index 06ba65080..5702079d1 100644 --- a/web-app/src/services/app/web.ts +++ b/web-app/src/services/app/web.ts @@ -45,4 +45,4 @@ export class WebAppService implements AppService { console.log('YAML reading not available in web mode') throw new Error('readYaml not implemented in web app service') } -} \ No newline at end of file +} diff --git a/web-app/src/services/assistants/default.ts b/web-app/src/services/assistants/default.ts index 65d3cc58f..b74582510 100644 --- a/web-app/src/services/assistants/default.ts +++ b/web-app/src/services/assistants/default.ts @@ -31,4 +31,4 @@ export class DefaultAssistantsService implements AssistantsService { .get(ExtensionTypeEnum.Assistant) ?.deleteAssistant(assistant) } -} \ No newline at end of file +} diff --git a/web-app/src/services/assistants/types.ts b/web-app/src/services/assistants/types.ts index 1be730fe2..be43cfb49 100644 --- a/web-app/src/services/assistants/types.ts +++ b/web-app/src/services/assistants/types.ts @@ -8,4 +8,4 @@ export interface AssistantsService { getAssistants(): Promise createAssistant(assistant: Assistant): Promise deleteAssistant(assistant: Assistant): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/core/default.ts b/web-app/src/services/core/default.ts index 235e38294..f019e235d 100644 --- a/web-app/src/services/core/default.ts +++ b/web-app/src/services/core/default.ts @@ -38,4 +38,4 @@ export class DefaultCoreService implements CoreService { async getAppToken(): Promise { return null } -} \ No newline at end of file +} diff --git a/web-app/src/services/core/tauri.ts b/web-app/src/services/core/tauri.ts index 8f83b0b2c..8b968510d 100644 --- a/web-app/src/services/core/tauri.ts +++ b/web-app/src/services/core/tauri.ts @@ -73,4 +73,4 @@ export class TauriCoreService extends DefaultCoreService { return null } } -} \ No newline at end of file +} diff --git a/web-app/src/services/core/types.ts b/web-app/src/services/core/types.ts index 8f518ffa4..6bcfb2983 100644 --- a/web-app/src/services/core/types.ts +++ b/web-app/src/services/core/types.ts @@ -21,4 +21,4 @@ export interface CoreService { // App token getAppToken(): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/core/web.ts b/web-app/src/services/core/web.ts index 39a248611..abb2c6330 100644 --- a/web-app/src/services/core/web.ts +++ b/web-app/src/services/core/web.ts @@ -89,4 +89,4 @@ export class WebCoreService implements CoreService { console.warn('App token not available in web environment') return null } -} \ No newline at end of file +} diff --git a/web-app/src/services/deeplink/default.ts b/web-app/src/services/deeplink/default.ts index a7f8cf5da..27971ce8a 100644 --- a/web-app/src/services/deeplink/default.ts +++ b/web-app/src/services/deeplink/default.ts @@ -15,4 +15,4 @@ export class DefaultDeepLinkService implements DeepLinkService { async getCurrent(): Promise { return [] } -} \ No newline at end of file +} diff --git a/web-app/src/services/deeplink/tauri.ts b/web-app/src/services/deeplink/tauri.ts index cab694353..722e5d209 100644 --- a/web-app/src/services/deeplink/tauri.ts +++ b/web-app/src/services/deeplink/tauri.ts @@ -24,4 +24,4 @@ export class TauriDeepLinkService extends DefaultDeepLinkService { return [] } } -} \ No newline at end of file +} diff --git a/web-app/src/services/deeplink/types.ts b/web-app/src/services/deeplink/types.ts index 19b3ff517..22ecd5426 100644 --- a/web-app/src/services/deeplink/types.ts +++ b/web-app/src/services/deeplink/types.ts @@ -6,4 +6,4 @@ export interface DeepLinkService { onOpenUrl(handler: (urls: string[]) => void): Promise<() => void> getCurrent(): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/deeplink/web.ts b/web-app/src/services/deeplink/web.ts index bba92c43c..1c8df40be 100644 --- a/web-app/src/services/deeplink/web.ts +++ b/web-app/src/services/deeplink/web.ts @@ -24,4 +24,4 @@ export class WebDeepLinkService implements DeepLinkService { // Return current URL return [window.location.href] } -} \ No newline at end of file +} diff --git a/web-app/src/services/dialog/default.ts b/web-app/src/services/dialog/default.ts index 3232fd638..f2ec6d1d5 100644 --- a/web-app/src/services/dialog/default.ts +++ b/web-app/src/services/dialog/default.ts @@ -14,4 +14,4 @@ export class DefaultDialogService implements DialogService { console.log('dialog.save called with options:', options) return null } -} \ No newline at end of file +} diff --git a/web-app/src/services/dialog/tauri.ts b/web-app/src/services/dialog/tauri.ts index 1b4efad28..d6d5fc2f2 100644 --- a/web-app/src/services/dialog/tauri.ts +++ b/web-app/src/services/dialog/tauri.ts @@ -33,4 +33,4 @@ export class TauriDialogService extends DefaultDialogService { return null } } -} \ No newline at end of file +} diff --git a/web-app/src/services/dialog/types.ts b/web-app/src/services/dialog/types.ts index 245155c36..8f3c4e3ab 100644 --- a/web-app/src/services/dialog/types.ts +++ b/web-app/src/services/dialog/types.ts @@ -16,4 +16,4 @@ export interface DialogOpenOptions { export interface DialogService { open(options?: DialogOpenOptions): Promise save(options?: DialogOpenOptions): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/dialog/web.ts b/web-app/src/services/dialog/web.ts index c735cbf41..9dbfd503d 100644 --- a/web-app/src/services/dialog/web.ts +++ b/web-app/src/services/dialog/web.ts @@ -54,4 +54,4 @@ export class WebDialogService implements DialogService { console.warn('Save dialog not supported in web environment') return null } -} \ No newline at end of file +} diff --git a/web-app/src/services/events/EventEmitter.ts b/web-app/src/services/events/EventEmitter.ts index bb9e57ebb..762ca5018 100644 --- a/web-app/src/services/events/EventEmitter.ts +++ b/web-app/src/services/events/EventEmitter.ts @@ -44,4 +44,4 @@ export class EventEmitter { handler(args) }) } -} \ No newline at end of file +} diff --git a/web-app/src/services/events/default.ts b/web-app/src/services/events/default.ts index 5b5a67492..f7f9aa83d 100644 --- a/web-app/src/services/events/default.ts +++ b/web-app/src/services/events/default.ts @@ -16,4 +16,4 @@ export class DefaultEventsService implements EventsService { // No-op unlisten function } } -} \ No newline at end of file +} diff --git a/web-app/src/services/events/tauri.ts b/web-app/src/services/events/tauri.ts index b15e1e338..c58b03781 100644 --- a/web-app/src/services/events/tauri.ts +++ b/web-app/src/services/events/tauri.ts @@ -27,4 +27,4 @@ export class TauriEventsService extends DefaultEventsService { return () => {} } } -} \ No newline at end of file +} diff --git a/web-app/src/services/events/types.ts b/web-app/src/services/events/types.ts index e57641114..0b033efdc 100644 --- a/web-app/src/services/events/types.ts +++ b/web-app/src/services/events/types.ts @@ -13,4 +13,4 @@ export interface UnlistenFn { export interface EventsService { emit(event: string, payload?: T, options?: EventOptions): Promise listen(event: string, handler: (event: { payload: T }) => void, options?: EventOptions): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/events/web.ts b/web-app/src/services/events/web.ts index a14a6fe0d..055fd4571 100644 --- a/web-app/src/services/events/web.ts +++ b/web-app/src/services/events/web.ts @@ -32,4 +32,4 @@ export class WebEventsService implements EventsService { this.eventTarget.removeEventListener(event, eventListener) } } -} \ No newline at end of file +} diff --git a/web-app/src/services/hardware/default.ts b/web-app/src/services/hardware/default.ts index 250e56de9..5f4df438c 100644 --- a/web-app/src/services/hardware/default.ts +++ b/web-app/src/services/hardware/default.ts @@ -21,4 +21,4 @@ export class DefaultHardwareService implements HardwareService { console.log('setActiveGpus called with data:', data) // No-op - not implemented in default service } -} \ No newline at end of file +} diff --git a/web-app/src/services/hardware/tauri.ts b/web-app/src/services/hardware/tauri.ts index 458b3037b..efcd23c37 100644 --- a/web-app/src/services/hardware/tauri.ts +++ b/web-app/src/services/hardware/tauri.ts @@ -30,4 +30,4 @@ export class TauriHardwareService extends DefaultHardwareService { // TODO: llama.cpp extension should handle this console.log(data) } -} \ No newline at end of file +} diff --git a/web-app/src/services/hardware/types.ts b/web-app/src/services/hardware/types.ts index 026d616c6..3307298f6 100644 --- a/web-app/src/services/hardware/types.ts +++ b/web-app/src/services/hardware/types.ts @@ -21,4 +21,4 @@ export interface HardwareService { } // Re-export hardware types for convenience -export type { HardwareData, SystemUsage } \ No newline at end of file +export type { HardwareData, SystemUsage } diff --git a/web-app/src/services/mcp/default.ts b/web-app/src/services/mcp/default.ts index 1bcce285a..b9a2f832e 100644 --- a/web-app/src/services/mcp/default.ts +++ b/web-app/src/services/mcp/default.ts @@ -66,4 +66,4 @@ export class DefaultMCPService implements MCPService { console.log('deactivateMCPServer called with name:', name) // No-op - not implemented in default service } -} \ No newline at end of file +} diff --git a/web-app/src/services/mcp/tauri.ts b/web-app/src/services/mcp/tauri.ts index 697bbc500..244e002c3 100644 --- a/web-app/src/services/mcp/tauri.ts +++ b/web-app/src/services/mcp/tauri.ts @@ -75,4 +75,4 @@ export class TauriMCPService extends DefaultMCPService { async deactivateMCPServer(name: string): Promise { return await invoke('deactivate_mcp_server', { name }) } -} \ No newline at end of file +} diff --git a/web-app/src/services/mcp/types.ts b/web-app/src/services/mcp/types.ts index c551c61c5..eef8e1bf3 100644 --- a/web-app/src/services/mcp/types.ts +++ b/web-app/src/services/mcp/types.ts @@ -32,4 +32,4 @@ export interface MCPService { // MCP Server lifecycle management activateMCPServer(name: string, config: MCPServerConfig): Promise deactivateMCPServer(name: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/mcp/web.ts b/web-app/src/services/mcp/web.ts index 124de93fd..c23283951 100644 --- a/web-app/src/services/mcp/web.ts +++ b/web-app/src/services/mcp/web.ts @@ -276,4 +276,4 @@ export class WebMCPService implements MCPService { private generateCancellationToken(): string { return `mcp_cancel_${Date.now()}_${Math.random().toString(36).substring(2, 11)}` } -} \ No newline at end of file +} diff --git a/web-app/src/services/messages/default.ts b/web-app/src/services/messages/default.ts index 177a09e29..8dbd63181 100644 --- a/web-app/src/services/messages/default.ts +++ b/web-app/src/services/messages/default.ts @@ -50,4 +50,4 @@ export class DefaultMessagesService implements MessagesService { .get(ExtensionTypeEnum.Conversational) ?.deleteMessage(threadId, messageId) } -} \ No newline at end of file +} diff --git a/web-app/src/services/messages/types.ts b/web-app/src/services/messages/types.ts index ad5ae72c8..731de06d0 100644 --- a/web-app/src/services/messages/types.ts +++ b/web-app/src/services/messages/types.ts @@ -8,4 +8,4 @@ export interface MessagesService { fetchMessages(threadId: string): Promise createMessage(message: ThreadMessage): Promise deleteMessage(threadId: string, messageId: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/opener/default.ts b/web-app/src/services/opener/default.ts index 287e927b8..d7f6f2722 100644 --- a/web-app/src/services/opener/default.ts +++ b/web-app/src/services/opener/default.ts @@ -9,4 +9,4 @@ export class DefaultOpenerService implements OpenerService { console.log('revealItemInDir called with path:', path) // No-op - not implemented in default service } -} \ No newline at end of file +} diff --git a/web-app/src/services/opener/tauri.ts b/web-app/src/services/opener/tauri.ts index 9c465e521..c47bf687a 100644 --- a/web-app/src/services/opener/tauri.ts +++ b/web-app/src/services/opener/tauri.ts @@ -14,4 +14,4 @@ export class TauriOpenerService extends DefaultOpenerService { throw error } } -} \ No newline at end of file +} diff --git a/web-app/src/services/opener/types.ts b/web-app/src/services/opener/types.ts index 21e0d17f0..1dd7bee87 100644 --- a/web-app/src/services/opener/types.ts +++ b/web-app/src/services/opener/types.ts @@ -5,4 +5,4 @@ export interface OpenerService { revealItemInDir(path: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/path/default.ts b/web-app/src/services/path/default.ts index 90ed46e82..cde56bf4a 100644 --- a/web-app/src/services/path/default.ts +++ b/web-app/src/services/path/default.ts @@ -28,4 +28,4 @@ export class DefaultPathService implements PathService { console.log('path.extname called with path:', path) return '' } -} \ No newline at end of file +} diff --git a/web-app/src/services/path/tauri.ts b/web-app/src/services/path/tauri.ts index 80b5808c9..618c15abd 100644 --- a/web-app/src/services/path/tauri.ts +++ b/web-app/src/services/path/tauri.ts @@ -55,4 +55,4 @@ export class TauriPathService extends DefaultPathService { return lastDot > lastSlash ? path.substring(lastDot) : '' } } -} \ No newline at end of file +} diff --git a/web-app/src/services/path/types.ts b/web-app/src/services/path/types.ts index 269adc1c9..5f5c9af13 100644 --- a/web-app/src/services/path/types.ts +++ b/web-app/src/services/path/types.ts @@ -9,4 +9,4 @@ export interface PathService { dirname(path: string): Promise basename(path: string): Promise extname(path: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/path/web.ts b/web-app/src/services/path/web.ts index 724acb130..e207fa01b 100644 --- a/web-app/src/services/path/web.ts +++ b/web-app/src/services/path/web.ts @@ -37,4 +37,4 @@ export class WebPathService implements PathService { if (lastDot === -1 || lastDot === 0) return '' return basename.substring(lastDot) } -} \ No newline at end of file +} diff --git a/web-app/src/services/providers/default.ts b/web-app/src/services/providers/default.ts index 241138d28..3143d203f 100644 --- a/web-app/src/services/providers/default.ts +++ b/web-app/src/services/providers/default.ts @@ -22,4 +22,4 @@ export class DefaultProvidersService implements ProvidersService { fetch(): typeof fetch { return fetch } -} \ No newline at end of file +} diff --git a/web-app/src/services/providers/types.ts b/web-app/src/services/providers/types.ts index 1c6d81d90..324058f78 100644 --- a/web-app/src/services/providers/types.ts +++ b/web-app/src/services/providers/types.ts @@ -7,4 +7,4 @@ export interface ProvidersService { fetchModelsFromProvider(provider: ModelProvider): Promise updateSettings(providerName: string, settings: ProviderSetting[]): Promise fetch(): typeof fetch -} \ No newline at end of file +} diff --git a/web-app/src/services/theme/default.ts b/web-app/src/services/theme/default.ts index 421cc102e..8dc131be5 100644 --- a/web-app/src/services/theme/default.ts +++ b/web-app/src/services/theme/default.ts @@ -18,4 +18,4 @@ export class DefaultThemeService implements ThemeService { } } } -} \ No newline at end of file +} diff --git a/web-app/src/services/theme/tauri.ts b/web-app/src/services/theme/tauri.ts index 0f2f1f64d..e05d60c74 100644 --- a/web-app/src/services/theme/tauri.ts +++ b/web-app/src/services/theme/tauri.ts @@ -24,4 +24,4 @@ export class TauriThemeService extends DefaultThemeService { } } } -} \ No newline at end of file +} diff --git a/web-app/src/services/theme/types.ts b/web-app/src/services/theme/types.ts index abcf8fc44..21c208072 100644 --- a/web-app/src/services/theme/types.ts +++ b/web-app/src/services/theme/types.ts @@ -7,4 +7,4 @@ export type ThemeMode = 'light' | 'dark' | null export interface ThemeService { setTheme(theme: ThemeMode): Promise getCurrentWindow(): { setTheme: (theme: ThemeMode) => Promise } -} \ No newline at end of file +} diff --git a/web-app/src/services/theme/web.ts b/web-app/src/services/theme/web.ts index 39b1ff903..cf6ce01cf 100644 --- a/web-app/src/services/theme/web.ts +++ b/web-app/src/services/theme/web.ts @@ -22,4 +22,4 @@ export class WebThemeService implements ThemeService { } } } -} \ No newline at end of file +} diff --git a/web-app/src/services/threads/types.ts b/web-app/src/services/threads/types.ts index d0ce195cc..9f739624f 100644 --- a/web-app/src/services/threads/types.ts +++ b/web-app/src/services/threads/types.ts @@ -7,4 +7,4 @@ export interface ThreadsService { createThread(thread: Thread): Promise updateThread(thread: Thread): Promise deleteThread(threadId: string): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/updater/default.ts b/web-app/src/services/updater/default.ts index b648c5622..c0ba14aa2 100644 --- a/web-app/src/services/updater/default.ts +++ b/web-app/src/services/updater/default.ts @@ -19,4 +19,4 @@ export class DefaultUpdaterService implements UpdaterService { console.log('downloadAndInstallWithProgress called with callback:', typeof progressCallback) // No-op for non-Tauri platforms } -} \ No newline at end of file +} diff --git a/web-app/src/services/updater/tauri.ts b/web-app/src/services/updater/tauri.ts index 1db1ad294..a84951e7e 100644 --- a/web-app/src/services/updater/tauri.ts +++ b/web-app/src/services/updater/tauri.ts @@ -60,4 +60,4 @@ export class TauriUpdaterService extends DefaultUpdaterService { throw error } } -} \ No newline at end of file +} diff --git a/web-app/src/services/updater/types.ts b/web-app/src/services/updater/types.ts index c61642666..5dceee89e 100644 --- a/web-app/src/services/updater/types.ts +++ b/web-app/src/services/updater/types.ts @@ -24,4 +24,4 @@ export interface UpdaterService { downloadAndInstallWithProgress( progressCallback: (event: UpdateProgressEvent) => void ): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/window/default.ts b/web-app/src/services/window/default.ts index 08483743c..ea48a0173 100644 --- a/web-app/src/services/window/default.ts +++ b/web-app/src/services/window/default.ts @@ -40,4 +40,4 @@ export class DefaultWindowService implements WindowService { async openLocalApiServerLogsWindow(): Promise { // No-op } -} \ No newline at end of file +} diff --git a/web-app/src/services/window/tauri.ts b/web-app/src/services/window/tauri.ts index 56c038425..a6dd643c7 100644 --- a/web-app/src/services/window/tauri.ts +++ b/web-app/src/services/window/tauri.ts @@ -139,4 +139,4 @@ export class TauriWindowService extends DefaultWindowService { throw error } } -} \ No newline at end of file +} diff --git a/web-app/src/services/window/types.ts b/web-app/src/services/window/types.ts index 029f008aa..2f109427c 100644 --- a/web-app/src/services/window/types.ts +++ b/web-app/src/services/window/types.ts @@ -32,4 +32,4 @@ export interface WindowService { openLogsWindow(): Promise openSystemMonitorWindow(): Promise openLocalApiServerLogsWindow(): Promise -} \ No newline at end of file +} diff --git a/web-app/src/services/window/web.ts b/web-app/src/services/window/web.ts index 8cc01b8cb..da49077a1 100644 --- a/web-app/src/services/window/web.ts +++ b/web-app/src/services/window/web.ts @@ -61,4 +61,4 @@ export class WebWindowService implements WindowService { async openLocalApiServerLogsWindow(): Promise { console.warn('Cannot open local API server logs window in web environment') } -} \ No newline at end of file +} diff --git a/web-app/src/test/mocks/extensions-web.ts b/web-app/src/test/mocks/extensions-web.ts index 908f56c90..0748e905f 100644 --- a/web-app/src/test/mocks/extensions-web.ts +++ b/web-app/src/test/mocks/extensions-web.ts @@ -18,4 +18,4 @@ export class ConversationalExtensionWeb { export default {} // Export registry type for TypeScript compatibility -export type WebExtensionRegistry = Record \ No newline at end of file +export type WebExtensionRegistry = Record diff --git a/web-app/src/test/setup.ts b/web-app/src/test/setup.ts index 9fde8b66b..b2286c2f3 100644 --- a/web-app/src/test/setup.ts +++ b/web-app/src/test/setup.ts @@ -207,4 +207,4 @@ Object.defineProperty(window, 'matchMedia', { // runs a cleanup after each test case (e.g. clearing jsdom) afterEach(() => { cleanup() -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/error.test.ts b/web-app/src/utils/__tests__/error.test.ts index e6286060c..07efd387c 100644 --- a/web-app/src/utils/__tests__/error.test.ts +++ b/web-app/src/utils/__tests__/error.test.ts @@ -11,4 +11,4 @@ describe('error utilities', () => { expect(typeof OUT_OF_CONTEXT_SIZE).toBe('string') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/formatDate.test.ts b/web-app/src/utils/__tests__/formatDate.test.ts index 296d95da6..9d559f66f 100644 --- a/web-app/src/utils/__tests__/formatDate.test.ts +++ b/web-app/src/utils/__tests__/formatDate.test.ts @@ -100,4 +100,4 @@ describe('formatDate', () => { expect(formatted).not.toMatch(/\d{1,2}:\d{2}/i) expect(formatted).not.toMatch(/(AM|PM)/i) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/highlight.test.ts b/web-app/src/utils/__tests__/highlight.test.ts index 0277ba41a..0379c60a1 100644 --- a/web-app/src/utils/__tests__/highlight.test.ts +++ b/web-app/src/utils/__tests__/highlight.test.ts @@ -68,4 +68,4 @@ describe('highlight utility', () => { expect(result2).toBe('Hello World') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/number.test.ts b/web-app/src/utils/__tests__/number.test.ts index ad5848f3c..c31ba9d09 100644 --- a/web-app/src/utils/__tests__/number.test.ts +++ b/web-app/src/utils/__tests__/number.test.ts @@ -66,4 +66,4 @@ describe('toNumber', () => { expect(toNumber('\t42\n')).toBe(42) expect(toNumber('\r\n -5.5 \t')).toBe(-5.5) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/reasoning.test.ts b/web-app/src/utils/__tests__/reasoning.test.ts index f9717b753..76c7853d9 100644 --- a/web-app/src/utils/__tests__/reasoning.test.ts +++ b/web-app/src/utils/__tests__/reasoning.test.ts @@ -378,4 +378,4 @@ describe('ReasoningProcessor', () => { expect(result3).toBe('Second thought') }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/__tests__/teamEmoji.test.ts b/web-app/src/utils/__tests__/teamEmoji.test.ts index eda023c01..2163f9cdf 100644 --- a/web-app/src/utils/__tests__/teamEmoji.test.ts +++ b/web-app/src/utils/__tests__/teamEmoji.test.ts @@ -39,4 +39,4 @@ describe('teamEmoji utility', () => { }) }) }) -}) \ No newline at end of file +}) diff --git a/web-app/src/utils/highlight.ts b/web-app/src/utils/highlight.ts index fe7cedcef..282ca9aa6 100644 --- a/web-app/src/utils/highlight.ts +++ b/web-app/src/utils/highlight.ts @@ -38,4 +38,4 @@ export function highlightFzfMatch(text: string, positions: number[], highlightCl : part.text ) .join(''); -} \ No newline at end of file +}