Skip to main content

IPC API Reference (Auto-Generated)

Note: This file is auto-generated by scripts/generateIpcDocs.js. Do not edit manually.

Last Generated: 2026-05-27T08:40:27.100Z

Overview

This document lists all IPC (Inter-Process Communication) channels registered in the application.

  • Request/Response channels use ipcMain.handle() and expect a return value
  • Event channels use ipcMain.on() for fire-and-forget notifications
  • One-Time Event channels use ipcMain.once() for single-use listeners

Total Channels: 76


Authentication

ChannelTypeDescriptionLocation
submitFormEventHandle form submission for SSO/authentication workflowsapp/login/index.js:23

Connection Management

ChannelTypeDescriptionLocation
offline-retryEventRetry connection when user clicks retry button on offline pageapp/connectionManager/index.js:42

Core Application

ChannelTypeDescriptionLocation
config-file-changedEventRestart application when configuration file changesapp/index.js:252
get-app-versionRequest/ResponseGet application version numberapp/index.js:283
get-configRequest/ResponseGet current application configurationapp/index.js:254
get-navigation-stateRequest/ResponseGet current navigation state (can go back/forward)app/index.js:306
navigate-backEventNavigate back in browser historyapp/index.js:288
navigate-forwardEventNavigate forward in browser historyapp/index.js:297
set-badge-countRequest/ResponseSet application badge count (dock/taskbar notification)app/index.js:281
unhandled-rejectionEventLog renderer-side unhandled promise rejectionsapp/index.js:315
user-status-changedRequest/ResponseHandle user status changes from Teams (e.g., Available, Busy, Away)app/index.js:279
window-errorEventLog renderer-side uncaught window errorsapp/index.js:335

Custom Background

ChannelTypeDescriptionLocation
get-custom-bg-listRequest/ResponseGet list of custom background images for Teams meetingsapp/customBackground/index.js:14

Custom Stickers

ChannelTypeDescriptionLocation
delete-stickerRequest/ResponseDelete a sticker file from the sticker folder. Validates the requested name/subfolder do not contain path-traversal components and resolves strictly inside the sticker folder before unlinking. Returns { success } on success or { success: false, error } on failure.app/customStickers/index.js:62
get-sticker-listRequest/ResponseReturn the list of stickers (image files) from the configured folder. Each entry includes a base64 data URL so the renderer can show thumbnails and rebuild a File for synthetic-paste insertion without needing direct filesystem access.app/customStickers/index.js:48
import-sticker-urlRequest/ResponseDownload an HTTPS URL into the sticker folder. Validates the URL is HTTPS, the response content-type is on the allowlist, and the byte length is under the configured cap. Returns { success, filename } on success or { success: false, error } on failure.app/customStickers/index.js:54

Idle Monitoring

ChannelTypeDescriptionLocation
get-system-idle-stateRequest/ResponseGet system idle state to sync with Teams presenceapp/idle/monitor.js:29

Incoming Calls

ChannelTypeDescriptionLocation
incoming-call-actionEventHandle incoming call actions (accept/decline)app/incomingCallToast/index.js:27
incoming-call-toast-readyOne-Time EventSignal from toast window that it's ready to be displayedapp/incomingCallToast/index.js:37

Main Window

ChannelTypeDescriptionLocation
call-connectedRequest/ResponseNotify when a call is connectedapp/mainAppWindow/browserWindowManager.js:128
call-disconnectedRequest/ResponseNotify when a call is disconnectedapp/mainAppWindow/browserWindowManager.js:130
screen-sharing-startedEventwe cannot reuse) and means one capture feeds both Teams and the preview. The 'screen-sharing-started' / 'screen-sharing-stopped' channels are a broadcast: ScreenSharingService updates internal state, MQTTMediaStatusService publishes to the broker, and this listener wires the MessagePort. Adding another ipcMain.on here is the established pattern, not a duplication.app/mainAppWindow/index.js:453
select-sourceEventHandle screen sharing source selection from userapp/mainAppWindow/browserWindowManager.js:109
ChannelTypeDescriptionLocation
get-teams-settingsOne-Time EventReceive Teams settings from renderer to save to fileapp/menus/index.js:231
set-teams-settingsOne-Time EventAcknowledge settings restoration completion from rendererapp/menus/index.js:237
tray-updateEventUpdate tray icon based on Teams status (notifications, badge count)app/menus/tray.js:20

Microsoft Graph API

ChannelTypeDescriptionLocation
graph-api-create-calendar-eventRequest/ResponseCreate a new calendar eventapp/graphApi/ipcHandlers.js:47
graph-api-get-calendar-eventsRequest/ResponseGet calendar events with optional OData query optionsapp/graphApi/ipcHandlers.js:25
graph-api-get-calendar-viewRequest/ResponseGet calendar view for a specific time rangeapp/graphApi/ipcHandlers.js:36
graph-api-get-mail-messagesRequest/ResponseGet mail messages with optional OData query optionsapp/graphApi/ipcHandlers.js:58
graph-api-get-user-profileRequest/ResponseGet current user profile from Microsoft Graph APIapp/graphApi/ipcHandlers.js:14
graph-api-search-peopleRequest/ResponseSearch people using People API (for Quick Chat feature)app/graphApi/ipcHandlers.js:69
graph-api-send-chat-messageRequest/ResponseSend a chat message to a user via Graph APIapp/graphApi/ipcHandlers.js:80

Notifications

ChannelTypeDescriptionLocation
play-notification-soundRequest/ResponsePlay notification sound for Teams messages and callsapp/notifications/service.js:37
show-notificationRequest/ResponseShow system notification for Teams activityapp/notifications/service.js:39

Notifications (Custom)

ChannelTypeDescriptionLocation
notification-show-toastEventDisplay custom in-app toast notification in bottom-right cornerapp/notificationSystem/index.js:17
notification-toast-clickEventHandle toast clicks - close the window and focus main windowapp/notificationSystem/index.js:19

Other

ChannelTypeDescriptionLocation
add-profile-cancelEventUser dismissed the dialog (Cancel button or Escape).app/profileDialogs/addProfile/index.js:22
add-profile-submitEventForm submit from the renderer; record is a plain object matching the shape ProfilesManager.add() accepts: name, optional url, avatarInitials, avatarColor.app/profileDialogs/addProfile/index.js:18
camera-state-changedEventPublish MQTT status when camera state changesapp/mqtt/mediaStatusService.js:27
join-meeting-cancelEventHandle join meeting dialog cancelapp/joinMeetingDialog/index.js:18
join-meeting-submitEventHandle join meeting dialog submissionapp/joinMeetingDialog/index.js:14
manage-profile-closeEventUser dismissed the dialog (Close button or Escape).app/profileDialogs/manageProfile/index.js:29
manage-profile-removeEventRemove request from the renderer; main shows the destructive confirmation before forwarding to ProfilesManager.app/profileDialogs/manageProfile/index.js:25
manage-profile-renameRequest/ResponseInline rename request from the renderer. Uses request/response (ipcMain.handle / ipcRenderer.invoke) so the renderer can await the result and keep the input open on validation rejection — losing the user's typed value on error was a gemini-flagged UX bug on PR #2510. Payload carries the profile id and the new name.app/profileDialogs/manageProfile/index.js:19
microphone-state-changedEventPublish MQTT status when microphone state changesapp/mqtt/mediaStatusService.js:29
profile-addRequest/ResponseADR-020: persist a new profile; UI creates the matching viewapp/profilesManager/index.js:74
profile-get-activeRequest/ResponseADR-020: return the currently active profile, or nullapp/profilesManager/index.js:70
profile-listRequest/ResponseADR-020: list every profile this user has configuredapp/profilesManager/index.js:68
profile-removeRequest/ResponseADR-020: delete a profile; UI is responsible for clearing storageapp/profilesManager/index.js:80
profile-switchRequest/ResponseADR-020: mark a profile active; UI swaps the visible WebContentsViewapp/profilesManager/index.js:72
profile-updateRequest/ResponseADR-020: patch a profile's metadata (name, avatar, pinned, etc.)app/profilesManager/index.js:76
quick-chat:hideEventHide the Quick Chat modalapp/quickChat/index.js:33
quick-chat:showEventShow the Quick Chat modalapp/quickChat/index.js:30
screen-sharing-startedEventPublish MQTT status when screen sharing startsapp/mqtt/mediaStatusService.js:32
screen-sharing-stoppedEventPublish MQTT status when screen sharing stopsapp/mqtt/mediaStatusService.js:34
webauthn:createRequest/ResponseHandle credential creation requests from rendererapp/webauthn/index.js:268
webauthn:getRequest/ResponseHandle assertion requests from rendererapp/webauthn/index.js:271
webauthn:pin-cancelEventReceive cancellation from the PIN dialog when user clicks Cancel or closes the windowapp/webauthn/pinDialog.js:91
webauthn:pin-submitEventReceive PIN from the PIN dialog when user submits the formapp/webauthn/pinDialog.js:89

Partitions & Zoom

ChannelTypeDescriptionLocation
get-zoom-levelRequest/ResponseGet current zoom level for a partitionapp/partitions/manager.js:12
save-zoom-levelRequest/ResponseSave zoom level for a partitionapp/partitions/manager.js:14

Screen Sharing

ChannelTypeDescriptionLocation
cancel-desktop-mediaEventCancel desktop media selection dialogapp/screenSharing/service.js:18
choose-desktop-mediaRequest/ResponseSelect desktop media source for screen sharingapp/screenSharing/service.js:16
close-viewOne-Time EventClose the stream selector view without selectionapp/screenSharing/index.js:64
desktop-capturer-get-sourcesRequest/ResponseGet available desktop capturer sources (screens/windows) for sharingapp/screenSharing/service.js:12
get-screen-share-screenRequest/ResponseGet screen share screen detailsapp/screenSharing/service.js:28
get-screen-share-streamRequest/ResponseGet screen share stream for thumbnail previewapp/screenSharing/service.js:26
get-screen-sharing-displaysRequest/ResponseGet connected displays (id, label, internal, bounds, scaleFactor) for the share pickerapp/screenSharing/service.js:14
get-screen-sharing-statusRequest/ResponseGet current screen sharing statusapp/screenSharing/service.js:24
resize-preview-windowEventResize screen sharing preview windowapp/screenSharing/service.js:30
screen-sharing-startedEventNotify when screen sharing session startsapp/screenSharing/service.js:20
screen-sharing-stoppedEventNotify when screen sharing session stopsapp/screenSharing/service.js:22
selected-sourceOne-Time EventReceive user's screen sharing source selection from picker UIapp/screenSharing/index.js:62
source-selectedOne-Time EventReceive selected screen sharing source from native picker windowapp/screenSharing/service.js:233
stop-screen-sharing-from-thumbnailEventStop screen sharing from thumbnail previewapp/screenSharing/service.js:32

Channel Security

All IPC channels are validated through the security layer in app/security/ipcValidator.js. See the IPC Channel Validation documentation for more information.

Adding New Channels

When adding a new IPC channel:

  1. Register the channel with ipcMain.handle(), ipcMain.on(), or ipcMain.once()
  2. Add the channel to the allowlist in app/security/ipcValidator.js
  3. Add a comment above the registration describing its purpose
  4. Run npm run generate-ipc-docs to update this documentation

Generated by scripts/generateIpcDocs.js