feat: complete release preparation, 10+ ad mediation, CI/CD, and docker deployment
Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped

This commit is contained in:
Yun Chan 2026-08-20 11:12:05 +09:00
parent 5cd1de6859
commit 708e20f747
406 changed files with 42464 additions and 6199 deletions

View file

@ -37,6 +37,13 @@ import type {
STTStatusChangedEvent,
DownloadModelParams,
DownloadProgressEvent,
STTProviderType,
STTProviderInfo,
STTProviderConfig,
SetSTTProviderParams,
SetSTTProviderConfigParams,
TestSTTConnectionParams,
TestSTTConnectionResult,
HotkeyBinding,
SetHotkeyParams,
SetEnabledParams,
@ -262,6 +269,16 @@ const electronAPI = {
getLanguage: () => invoke<string>(IPC_CHANNELS.STT.GET_LANGUAGE),
setLanguage: (params: SetSTTLanguageParams) =>
invoke<void>(IPC_CHANNELS.STT.SET_LANGUAGE, params),
getProviders: () => invoke<STTProviderInfo[]>(IPC_CHANNELS.STT.GET_PROVIDERS),
getActiveProvider: () => invoke<STTProviderType>(IPC_CHANNELS.STT.GET_ACTIVE_PROVIDER),
setProvider: (params: SetSTTProviderParams) =>
invoke<void>(IPC_CHANNELS.STT.SET_PROVIDER, params),
getProviderConfig: (params: { provider: STTProviderType }) =>
invoke<STTProviderConfig>(IPC_CHANNELS.STT.GET_PROVIDER_CONFIG, params),
setProviderConfig: (params: SetSTTProviderConfigParams) =>
invoke<void>(IPC_CHANNELS.STT.SET_PROVIDER_CONFIG, params),
testConnection: (params: TestSTTConnectionParams) =>
invoke<TestSTTConnectionResult>(IPC_CHANNELS.STT.TEST_CONNECTION, params),
onStatusChanged: (cb: (e: STTStatusChangedEvent) => void): Unsubscribe =>
on(IPC_CHANNELS.STT.STATUS_CHANGED, cb),
onDownloadProgress: (cb: (e: DownloadProgressEvent) => void): Unsubscribe =>
@ -312,6 +329,14 @@ const electronAPI = {
on(IPC_CHANNELS.LLM.PROCESS_PROGRESS, cb),
pullModel: (params: { modelId: string }) =>
invoke<void>(IPC_CHANNELS.LLM.PULL_MODEL, params),
startServer: () =>
invoke<'running' | 'starting' | 'not-installed' | 'failed'>(
IPC_CHANNELS.LLM.START_SERVER
),
checkConnection: () =>
invoke<{ available: boolean; version: string | null; models: LLMModel[] }>(
IPC_CHANNELS.LLM.CHECK_CONNECTION
),
onPullProgress: (
cb: (e: {
modelId: string
@ -645,8 +670,10 @@ const electronAPI = {
// ── Meeting Mode (Phase 14) ───────────────────────────
meetingMode: {
startRecording: () =>
invoke<MeetingStartResult>(IPC_CHANNELS.MEETING_MODE.START_RECORDING),
startRecording: (params?: { force?: boolean }) =>
invoke<MeetingStartResult>(IPC_CHANNELS.MEETING_MODE.START_RECORDING, params),
forceReset: () =>
invoke<void>('meetingMode:forceReset'),
stopRecording: () =>
invoke<void>(IPC_CHANNELS.MEETING_MODE.STOP_RECORDING),
addMemo: (params: MeetingAddMemoParams) =>
@ -764,6 +791,65 @@ const electronAPI = {
onSyncError: (callback: (data: { error: string }) => void) =>
on<{ error: string }>(IPC_CHANNELS.CLOUD_SYNC.SYNC_ERROR, callback),
},
// ── Online Auth ────────────────────────────────────────
onlineAuth: {
register: (params: { email: string; password: string }) =>
invoke<unknown>(IPC_CHANNELS.ONLINE_AUTH.REGISTER, params),
login: (params: { email: string; password: string }) =>
invoke<unknown>(IPC_CHANNELS.ONLINE_AUTH.LOGIN, params),
logout: () => invoke<void>(IPC_CHANNELS.ONLINE_AUTH.LOGOUT),
getUser: () =>
invoke<{ email: string | null; isAuthenticated: boolean; mode: 'online' | 'local' | null }>(
IPC_CHANNELS.ONLINE_AUTH.GET_USER
)
},
// ── Ad Monetization & Mediation ────────────────────────
ads: {
getConfig: () => invoke<import('@d3ro/core/types').AdMediationConfig>(IPC_CHANNELS.ADS.GET_CONFIG),
setConfig: (config: Partial<import('@d3ro/core/types').AdMediationConfig>) =>
invoke<import('@d3ro/core/types').AdMediationConfig>(IPC_CHANNELS.ADS.SET_CONFIG, config),
requestAuction: (request: import('@d3ro/core/types').AdMediationAuctionRequest) =>
invoke<import('@d3ro/core/types').AdMediationAuctionResult>(IPC_CHANNELS.ADS.REQUEST_AUCTION, request),
recordImpression: (event: Omit<import('@d3ro/core/types').AdImpressionEvent, 'timestamp'>) =>
invoke<boolean>(IPC_CHANNELS.ADS.RECORD_IMPRESSION, event),
recordClick: (params: { adId: string; networkId: string }) =>
invoke<boolean>(IPC_CHANNELS.ADS.RECORD_CLICK, params),
claimReward: (params: { adId: string; networkId: string }) =>
invoke<import('@d3ro/core/types').AdRewardResult>(IPC_CHANNELS.ADS.CLAIM_REWARD, params),
getRevenueStats: (params?: { period?: string }) =>
invoke<import('@d3ro/core/types').AdRevenueStats>(IPC_CHANNELS.ADS.GET_REVENUE_STATS, params),
getSettlements: () =>
invoke<import('@d3ro/core/types').AdSettlementRecord[]>(IPC_CHANNELS.ADS.GET_SETTLEMENTS),
requestPayout: (params: { settlementId: string }) =>
invoke<{ success: boolean; message: string; settlement?: import('@d3ro/core/types').AdSettlementRecord }>(
IPC_CHANNELS.ADS.REQUEST_PAYOUT,
params
),
getPublisherAccount: () =>
invoke<import('@d3ro/core/types').PublisherAccountConfig>(IPC_CHANNELS.ADS.GET_PUBLISHER_ACCOUNT),
setPublisherAccount: (account: Partial<import('@d3ro/core/types').PublisherAccountConfig>) =>
invoke<import('@d3ro/core/types').PublisherAccountConfig>(IPC_CHANNELS.ADS.SET_PUBLISHER_ACCOUNT, account),
},
// ── Customer Assistance (CA/CS) & Diagnostics ──────────
support: {
getDiagnostics: () =>
invoke<import('@d3ro/core/types').SystemDiagnosticsPayload>(IPC_CHANNELS.SUPPORT.GET_DIAGNOSTICS),
queryAI: (params: import('@d3ro/core/types').AIAssistQuery) =>
invoke<import('@d3ro/core/types').AIAssistResponse>(IPC_CHANNELS.SUPPORT.QUERY_AI, params),
createTicket: (params: Partial<import('@d3ro/core/types').SupportTicket>) =>
invoke<import('@d3ro/core/types').SupportTicket>(IPC_CHANNELS.SUPPORT.CREATE_TICKET, params),
checkRefund: () =>
invoke<import('@d3ro/core/types').RefundEligibilityResult>(IPC_CHANNELS.SUPPORT.CHECK_REFUND),
},
// ── Multi-PG Payment & Billing ─────────────────────────
payment: {
createCheckoutSession: (params: import('@d3ro/core/types').CheckoutSessionParams) =>
invoke<import('@d3ro/core/types').CheckoutSessionResult>(IPC_CHANNELS.PAYMENT.CREATE_CHECKOUT_SESSION, params),
verifyPayment: (params: { tier: string }) =>
invoke<{ success: boolean; activeTier: string }>(IPC_CHANNELS.PAYMENT.VERIFY_PAYMENT, params),
getSubscriptionStatus: () =>
invoke<{ tier: string; valid: boolean; expiresAt: number | null }>(IPC_CHANNELS.PAYMENT.GET_SUBSCRIPTION_STATUS),
},
} as const
contextBridge.exposeInMainWorld('electronAPI', electronAPI)