Phase 3 구현: 텍스트 삽입 + RecordingTip/ResultPopup + Settings
- TextInsertService: clipboard save→set→Ctrl+V→restore (@nut-tree-fork/nut-js) - RecordingTip 팝업: 9개 웨이브바 cos분포, thinking 점근수렴, 2-phase 리사이즈 - ResultPopup 팝업: 복사 버튼, auto-close, 마우스 호버 유지, 다크모드 - WindowManager: 팝업 프리로딩, 커서 위치 표시, 멀티모니터 보정 - Settings 모달: General/Audio/STT/LLM 탭 - VoiceModeService: 전사 완료 시 자동 텍스트 삽입 + 팝업 연동 - electron-vite: 팝업 HTML 멀티 엔트리 + popup preload 빌드
This commit is contained in:
parent
1d152d01a1
commit
517210af2f
16 changed files with 1366 additions and 10 deletions
21
src/preload/popup.ts
Normal file
21
src/preload/popup.ts
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
// src/preload/popup.ts
|
||||
// 팝업 윈도우(RecordingTip, ResultPopup)용 최소 preload
|
||||
|
||||
import { contextBridge, ipcRenderer } from 'electron'
|
||||
|
||||
type Unsubscribe = () => void
|
||||
|
||||
const popupAPI = {
|
||||
send: (channel: string, ...args: unknown[]): void => {
|
||||
ipcRenderer.send(channel, ...args)
|
||||
},
|
||||
on: (channel: string, callback: (...args: unknown[]) => void): Unsubscribe => {
|
||||
const handler = (_event: Electron.IpcRendererEvent, ...args: unknown[]) => callback(...args)
|
||||
ipcRenderer.on(channel, handler)
|
||||
return () => ipcRenderer.removeListener(channel, handler)
|
||||
}
|
||||
} as const
|
||||
|
||||
contextBridge.exposeInMainWorld('popupAPI', popupAPI)
|
||||
|
||||
export type PopupAPI = typeof popupAPI
|
||||
Loading…
Add table
Add a link
Reference in a new issue