Skip to content

Advanced desktop integration ​

Choose the smallest documented interface and define its failure state. Advanced use does not mean arbitrary system access. Exact signatures and quotas are in desktop extensions, system integration and SDK types.

SolutionIntegrationRequired boundary
Card with detail panelpanels.open/post/close with a package-local pageShared instance identity/grants/saves; separate document lifetime and validated messages
Account-backed toolComponent/provider login plus credentials or user secret bindingNo host account service; handle expiry/logout without logging secrets
Music remotemedia.get, supported controls, media.control/artworkCurrent/recent session only; tolerate absent session/artwork and changed controls
Audio visualizationaudio.capture.open/read/closeDefault output mix, no microphone; bounded pull buffers and dropped-frame handling
Screen preview or color toolAuthorized screen capture through system pickerCancellation and hidden/locked/navigation/revocation invalidation
File previewfiles.image / directory.imageTemporary handle/binding scope; placeholder when unavailable
Remindersnotifications or reminders methodsDenial, expiry and no delivery while host is not running
Widget actions/menusshortcuts.setActions, contextMenu.setItemsBounded plain labels; re-register after reload; events are not physical gestures

Views and context ​

ready context.view distinguishes main and panel documents. Every document owns its requests and subscriptions. Panels do not create new installation identities, grants or save namespaces. Send minimal business state and do not persist panelId.

Use language.changed/i18n for host language and theme.changed for actual host theme. accentColor may be null. textScaleFactor is accessibility text scaling, separate from DPI environment.scale. High contrast and reduced motion need their own handling; accent color is not a readability guarantee.

desktop.pointer, desktop.windows and system.activity expose limited geometry/activity without text, titles, input history or arbitrary window control. audio.output affects the default system output, which differs from host widget mute; explain this scope in the UI.

For every stream, handle, panel and timer specify ownership, quota, cancellation and release. Build unavailable/denied/cancelled states before the success path.

Current host contract · SDK 0.1.1 · MIT