From 52003a8355aa08af9bec0a903f627d975b4104fc Mon Sep 17 00:00:00 2001 From: alpha dev Date: Wed, 24 Jun 2026 10:49:38 -0400 Subject: [PATCH 1/6] chore: update icon file in build directory --- build/icon.ico | Bin 119431 -> 32755 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/build/icon.ico b/build/icon.ico index 8f244ea8d5e7bcc709d967648fc0d799b77250a7..86cbd689c28d2bd9e115c96320b0956458a911d9 100644 GIT binary patch literal 32755 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%0AM?aGWY z5JutVcbO3G48X7F4TX8}fx&eYkr(lxjv52-w=sbN`B#a_k2r<`WbmaaZGNhpl$L+g z0rFE?{h Date: Wed, 24 Jun 2026 10:54:53 -0400 Subject: [PATCH 2/6] feat: remove face swap and camera feature entirely Eliminates the face-swap/camera path (OBS virtual cam + VB-Audio cable), its config keys (faceSwap, cameraDeviceName, video dims, enableFaceEnhance, interview photo), the isGpuServerLive state, and the unused GPU ping APIs. macOS no longer needs camera access, removing a hard-crash risk on Macs lacking NSCameraUsageDescription. Co-Authored-By: Claude Opus 4.8 --- src/main/api/health-check.ts | 14 - src/main/services/app-state.service.ts | 1 - src/main/store/config.store.ts | 17 +- src/main/types/app-state.ts | 1 - .../custom/configuration-dialog.tsx | 77 +--- .../components/custom/control-panel/index.tsx | 12 - .../custom/control-panel/video-group.tsx | 384 ------------------ .../components/custom/video-panel.tsx | 50 --- src/renderer/hooks/use-app-state.tsx | 1 - src/renderer/hooks/use-assistant-service.ts | 16 +- src/renderer/hooks/use-audio-devices.ts | 4 - src/renderer/hooks/use-special-devices.ts | 46 --- src/renderer/hooks/use-video-devices.ts | 5 - src/renderer/pages/main/index.tsx | 52 +-- src/renderer/types/app-state.ts | 1 - src/renderer/types/config.ts | 7 - 16 files changed, 14 insertions(+), 674 deletions(-) delete mode 100644 src/renderer/components/custom/control-panel/video-group.tsx delete mode 100644 src/renderer/components/custom/video-panel.tsx delete mode 100644 src/renderer/hooks/use-special-devices.ts delete mode 100644 src/renderer/hooks/use-video-devices.ts diff --git a/src/main/api/health-check.ts b/src/main/api/health-check.ts index 59c4a6f8..95a478e3 100644 --- a/src/main/api/health-check.ts +++ b/src/main/api/health-check.ts @@ -24,18 +24,4 @@ export class HealthCheckApi extends ApiClient { is_assistant_running: appState.runningState === RunningState.Running, } as ClientPingRequest); } - - /** - * Ping GPU server - */ - async pingGpuServer(): Promise> { - return this.get('/api/health-check/ping-gpu-server'); - } - - /** - * Wake up GPU server - */ - async wakeupGpuServer(): Promise> { - return this.get('/api/health-check/wakeup-gpu-server', {}); - } } diff --git a/src/main/services/app-state.service.ts b/src/main/services/app-state.service.ts index cb36f03f..1ae9c776 100644 --- a/src/main/services/app-state.service.ts +++ b/src/main/services/app-state.service.ts @@ -16,7 +16,6 @@ import { getWindowReference } from './window-control.service.js'; const DEFAULT_STATE: AppState = { isStealth: false, isBackendLive: false, - isGpuServerLive: false, isLoggedIn: false, runningState: RunningState.Idle, transcripts: [], diff --git a/src/main/store/config.store.ts b/src/main/store/config.store.ts index 0ae18afa..0f7d3b76 100644 --- a/src/main/store/config.store.ts +++ b/src/main/store/config.store.ts @@ -11,7 +11,6 @@ import { LLMConfig } from '../types/llm.js'; // Runtime configuration (matches Config type in frontend) export interface RuntimeConfig { interviewConf: { - photo: string; username: string; profileData: string; jobDescription: string; @@ -22,11 +21,6 @@ export interface RuntimeConfig { email: string; password: string; audioInputDeviceName: string; - faceSwap: boolean; - cameraDeviceName: string; - videoWidth: number; - videoHeight: number; - enableFaceEnhance: boolean; llmConf: LLMConfig | null; @@ -39,7 +33,6 @@ export interface RuntimeConfig { // Default runtime configuration const DEFAULT_RUNTIME_CONFIG: RuntimeConfig = { interviewConf: { - photo: '', username: '', profileData: '', jobDescription: '', @@ -50,11 +43,6 @@ const DEFAULT_RUNTIME_CONFIG: RuntimeConfig = { email: '', password: '', audioInputDeviceName: '', - faceSwap: false, - cameraDeviceName: '', - videoWidth: 1280, - videoHeight: 720, - enableFaceEnhance: true, llmConf: null, @@ -84,7 +72,6 @@ class ConfigStore { runtime: DEFAULT_RUNTIME_CONFIG, }, }); - this.updateConfig({ faceSwap: false }); // ensure new keys have defaults on first run } /** @@ -198,7 +185,7 @@ export const configStore = new ConfigStore(); // read the raw stored object so we can test for undefined values // eslint-disable-next-line const raw = (configStore as any).store.get('runtime') as Partial | undefined; - const migration: Partial = { faceSwap: false }; + const migration: Partial = {}; if (raw?.autoScrollLiveSuggestions === undefined) { migration.autoScrollLiveSuggestions = true; } @@ -209,7 +196,7 @@ export const configStore = new ConfigStore(); migration.autoScrollTranscript = true; } // perform migration only if there are values to set - if (Object.keys(migration).length > 1) { + if (Object.keys(migration).length > 0) { configStore.updateConfig(migration); } })(); // migration block diff --git a/src/main/types/app-state.ts b/src/main/types/app-state.ts index 6679f714..f6624011 100644 --- a/src/main/types/app-state.ts +++ b/src/main/types/app-state.ts @@ -54,7 +54,6 @@ export interface ActionSuggestion { export interface AppState { isStealth: boolean; isBackendLive: boolean; - isGpuServerLive: boolean; isLoggedIn: boolean | null; runningState: RunningState; transcripts: Transcript[]; diff --git a/src/renderer/components/custom/configuration-dialog.tsx b/src/renderer/components/custom/configuration-dialog.tsx index f952c928..00020f52 100644 --- a/src/renderer/components/custom/configuration-dialog.tsx +++ b/src/renderer/components/custom/configuration-dialog.tsx @@ -1,4 +1,3 @@ -import { X } from 'lucide-react'; import { useEffect, useState } from 'react'; import { Button } from '@/components/ui/button'; @@ -14,7 +13,6 @@ import { DialogHeader, DialogTitle, } from '../ui/dialog'; -import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip'; interface ConfigurationDialogProps { isOpen: boolean; @@ -24,7 +22,6 @@ interface ConfigurationDialogProps { export default function ConfigurationDialog({ isOpen, onOpenChange }: ConfigurationDialogProps) { const { config, updateConfig } = useConfigStore(); - const [photo, setPhoto] = useState(''); const [name, setName] = useState(''); const [profileData, setProfileData] = useState(''); const [jobDescription, setJobDescription] = useState(''); @@ -36,7 +33,6 @@ export default function ConfigurationDialog({ isOpen, onOpenChange }: Configurat // Queue state updates in a single microtask to avoid cascading renders Promise.resolve().then(() => { if (config?.interviewConf) { - setPhoto(config.interviewConf.photo ?? ''); setName(config.interviewConf.username ?? ''); setProfileData(config.interviewConf.profileData ?? ''); setJobDescription(config.interviewConf.jobDescription ?? ''); @@ -46,7 +42,6 @@ export default function ConfigurationDialog({ isOpen, onOpenChange }: Configurat const handleSave = async () => { const interviewConf = { - photo: photo, username: name, profileData: profileData, jobDescription: jobDescription, @@ -59,87 +54,19 @@ export default function ConfigurationDialog({ isOpen, onOpenChange }: Configurat } }; - const handlePhotoUpload = (e: React.ChangeEvent) => { - const file = e.target.files?.[0]; - if (!file) return; - - const reader = new FileReader(); - reader.onloadend = () => { - setPhoto(reader.result as string); // base64 string - }; - reader.readAsDataURL(file); - }; - return ( Configuration - Update your configuration: profile photo, username, profile information (e.g. CV/resume) - and interview context (e.g. job description). + Update your configuration: username, profile information (e.g. CV/resume) and interview + context (e.g. job description).
-
- - -
- {photo ? ( - Profile preview - ) : ( -
- {name ? name.charAt(0).toUpperCase() : '?'} -
- )} - - - - {photo && ( - - - - - -

Remove photo

-
-
- )} -
- - -

- Your face will be replaced into this photo under video control. -

-
-