Changelog

All notable changes to this project are recorded here, grouped as Added, Changed, Fixed, Removed and Security. The project uses Semantic Versioning. Before 1.0.0, any release may change the API, the ABI and the behavior.

0.15.0 (2026-11-05)

The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone.

Changed

Fixed

0.14.0 (2026-11-05)

The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone.

Changed

0.13.0 (2026-11-05)

The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone.

Changed

Fixed

0.12.0 (2026-11-04)

The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone.

Changed

0.11.0 (2026-11-04)

Changed

0.10.0 (2026-11-04)

Changed

0.9.0 (2026-11-03)

Changed

0.8.1 (2026-11-03)

Fixed

0.8.0 (2026-11-03)

The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone.

Changed

0.7.0 0.8.0
mwinEvent.type, mwinEventType mwinEvent.kind, mwinEventKind
mwinGamepad_GetMotion mwinGamepad_TakeMotion
mwinContext_HoldTestRequests mwinContext_EnableTestHold, read back with the new mwinContext_IsTestHoldEnabled
mwinContext_GetDroppedFiles, mwinContext_GetDroppedText mwinDrop_GetFiles, mwinDrop_GetText
a drop's uint32_t number (mwinDropEvent.drop) an mwinDropId

The event kinds keep their names and numbers. A drop id answers mwin_errorStale for the null id, another slot's id and a drop a later one replaced, as the number did. - Breaking: mwinWindow_RequestTextInput takes no caret; mwinWindow_RequestTextInputCaret sets it, as its own request kind (mwin_requestTextInputCaret), so a newer caret supersedes an older one and never a text input request. A window keeps its caret while text input is off and on again. On Wayland, moving the caret no longer sends text-input-v3's enable again, which reset the input method's state on every move (#393). - Breaking: text lengths and composition offsets are size_t: mwinTextEvent.length, mwinPreeditEvent.length, selectionStart and selectionEnd, mwinPreeditSegment.start and length, and the web handles' selectorLength and accessibilityLength. mwinPreeditEvent.caret is ptrdiff_t and keeps -1 for a hidden caret (#388). - Breaking: mwinRequest_GetDialogFiles and mwinContext_GetTestIcon report their count in a size_t*, as the listing calls do (#394). - Breaking: mwinPointerEvent.buttons is an mwinMouseButtons (uint32_t, a named bit for each button, mwin_mouseLeft to mwin_mouseForward), mwinGamepadState.buttons an mwinGamepadButtons (uint32_t), and mwinPenEvent.button an mwinPenButton (int32_t, mwin_penButtonNone and mwin_penButtonBarrel). The pointer and pen records' layouts change (#389). - Breaking: the kinds, modes and choices of the public structs and calls are int32_t, and the sets of bit flags (mwinModifiers, mwinWindowStyle, mwinPenFlags, mwinDragContents, mwinGamepadCapabilities) are uint32_t. This changes the layout of the event, info and def structs. A negative kind is refused with mwin_errorInvalid, and counted as a misuse on a context; a cursor mode, window mode, window kind, dialog kind, hit region's kind, message box's kind or buttons, or test answer of INT32_MIN used to become 0 and go ahead. mwinGamepad_SetTestButton and mwinGamepad_SetTestAxis answer mwin_errorInvalid for a value below 0 or past 255 (#315). - Breaking: four counts are named by the family's thingCount rule (#315):

0.7.0 0.8.0
mwinPointerEvent.clicks mwinPointerEvent.clickCount
mwinEvent.samples mwinEvent.sampleCount
mwinGamepadInfo.rawButtons mwinGamepadInfo.rawButtonCount
mwinGamepadInfo.rawAxes mwinGamepadInfo.rawAxisCount

Added

Fixed

0.7.0 (2026-10-29)

Changed

0.6.0 0.7.0
mwinTestAddGamepad mwinAddTestGamepad
mwinTestAddMonitor mwinAddTestMonitor
mwinGetDroppedFiles mwinContext_GetDroppedFiles
mwinGetDroppedText mwinContext_GetDroppedText
mwinGetGamepads mwinContext_GetGamepads
mwinGetKeyReach mwinContext_GetKeyReach
mwinGetKeyboardLayout mwinContext_GetKeyboardLayout
mwinGetContextMisuse mwinContext_GetMisuse
mwinGetMonitors mwinContext_GetMonitors
mwinGetPreferredLocales mwinContext_GetPreferredLocales
mwinGetSystemFacts mwinContext_GetSystemFacts
mwinTestGetClipboard mwinContext_GetTestClipboard
mwinTestGetClipboardData mwinContext_GetTestClipboardData
mwinTestGetDialog mwinContext_GetTestDialog
mwinTestGetIcon mwinContext_GetTestIcon
mwinTestGetOpened mwinContext_GetTestOpened
mwinTestGetPrimary mwinContext_GetTestPrimary
mwinTestHold mwinContext_HoldTestRequests
mwinMapKeyCode mwinContext_MapKeyCode
mwinNextEvent mwinContext_NextEvent
mwinTestPost mwinContext_PostTestEvent
mwinTestSetAnswer mwinContext_SetTestAnswer
mwinTestSetClipboard mwinContext_SetTestClipboard
mwinTestSetClipboardData mwinContext_SetTestClipboardData
mwinTestSetClipboardUtf16 mwinContext_SetTestClipboardUtf16
mwinTestSetDialogFiles mwinContext_SetTestDialogFiles
mwinTestSetKeyReach mwinContext_SetTestKeyReach
mwinTestSetLocales mwinContext_SetTestLocales
mwinTestSetPrimary mwinContext_SetTestPrimary
mwinTestSetScale mwinContext_SetTestScale
mwinTestSetSystemFacts mwinContext_SetTestSystemFacts
mwinTestSetTime mwinContext_SetTestTime
mwinSetGamepadMotion mwinGamepad_EnableMotion
mwinGetGamepadInfo mwinGamepad_GetInfo
mwinGetGamepadMotion mwinGamepad_GetMotion
mwinGetGamepadState mwinGamepad_GetState
mwinTestGetRumble mwinGamepad_GetTestRumble
mwinTestGetTriggerRumble mwinGamepad_GetTestTriggerRumble
mwinTestGetMotionOn mwinGamepad_IsTestMotionEnabled
mwinTestGamepadMotion mwinGamepad_PostTestMotion
mwinSetGamepadRumble mwinGamepad_SetRumble
mwinTestGamepadAxis mwinGamepad_SetTestAxis
mwinTestGamepadButton mwinGamepad_SetTestButton
mwinTestChangeGamepad mwinGamepad_SetTestInfo
mwinSetGamepadTriggerRumble mwinGamepad_SetTriggerRumble
mwinResultName mwinGetResultName
mwinGetMonitorInfo mwinMonitor_GetInfo
mwinTestChangeMonitor mwinMonitor_SetTestInfo
mwinTestRemoveGamepad mwinRemoveTestGamepad
mwinTestRemoveMonitor mwinRemoveTestMonitor
mwinGetClipboardData mwinRequest_GetClipboardData
mwinGetClipboardText mwinRequest_GetClipboardText
mwinGetDialogFiles mwinRequest_GetDialogFiles
mwinGetPrimaryText mwinRequest_GetPrimaryText
mwinTestAskAccessibility mwinWindow_AskTestAccessibility
mwinGetNativeHandles mwinWindow_GetNativeHandles
mwinGetWindowState mwinWindow_GetState
mwinTestGetCursor mwinWindow_GetTestCursor
mwinTestGetTextInput mwinWindow_GetTestTextInput
mwinTestGetTitle mwinWindow_GetTestTitle
mwinTestGetVirtualKeyboard mwinWindow_GetTestVirtualKeyboard
mwinTestDrop mwinWindow_PostTestDrop
mwinRequestAccessibilityRoot mwinWindow_RequestAccessibilityRoot
mwinRequestAspectRatio mwinWindow_RequestAspectRatio
mwinRequestClipboardRead mwinWindow_RequestClipboardRead
mwinRequestClipboardReadData mwinWindow_RequestClipboardReadData
mwinRequestClipboardWrite mwinWindow_RequestClipboardWrite
mwinRequestClipboardWriteData mwinWindow_RequestClipboardWriteData
mwinRequestCursorImage mwinWindow_RequestCursorImage
mwinRequestCursorMode mwinWindow_RequestCursorMode
mwinRequestCursorShape mwinWindow_RequestCursorShape
mwinRequestFileDialog mwinWindow_RequestFileDialog
mwinRequestFocus mwinWindow_RequestFocus
mwinRequestHitRegions mwinWindow_RequestHitRegions
mwinRequestIcon mwinWindow_RequestIcon
mwinRequestKeepAwake mwinWindow_RequestKeepAwake
mwinRequestMode mwinWindow_RequestMode
mwinRequestOpacity mwinWindow_RequestOpacity
mwinRequestOpenUrl mwinWindow_RequestOpenUrl
mwinRequestPosition mwinWindow_RequestPosition
mwinRequestPrimaryRead mwinWindow_RequestPrimaryRead
mwinRequestPrimaryWrite mwinWindow_RequestPrimaryWrite
mwinRequestRevealFile mwinWindow_RequestRevealFile
mwinRequestSize mwinWindow_RequestSize
mwinRequestSizeLimits mwinWindow_RequestSizeLimits
mwinRequestStyle mwinWindow_RequestStyle
mwinRequestTextInput mwinWindow_RequestTextInput
mwinRequestTitle mwinWindow_RequestTitle
mwinRequestVirtualKeyboard mwinWindow_RequestVirtualKeyboard
mwinRequestVisible mwinWindow_RequestVisible

Added

Fixed

0.6.0 (2026-10-29)

The device checks on real hardware are waived by the owner for releases through 2026-10-29, so 0.6.0 ships on its other gates. The iOS check, that a window shows no flash against the launch screen before its first frame, runs against it in #254.

Changed

Added

Fixed

0.5.1 (2026-10-27)

Fixed

0.5.0 (2026-10-25)

Changed

Added

Fixed

0.4.0 (2026-10-25)

Added

0.3.0 (2026-10-25)

Added

0.2.0 (2026-10-25)

Added

0.1.1 (2026-10-25)

Fixed

0.1.0 (2026-10-24)

Changed

Added

Fixed

0.0.1 (2026-10-23)

The first release: windows, input, gamepads and platform services behind one contract on Windows, macOS, iOS, Android, Wayland, X11 and the web, with a headless test backend for programs' own tests.

Added