diff --git a/handoff/README.md b/handoff/README.md new file mode 100644 index 0000000..b9d7fbc --- /dev/null +++ b/handoff/README.md @@ -0,0 +1,46 @@ +# Agent integration handoff + +Runtime coordination between the Windows and macOS agents is exchanged through +versioned files in this directory instead of manual copy/paste. + +## Windows to macOS + +The Windows agent owns `windows-runtime.json`. The macOS agent should pull the +latest integration branch, read that file, and use its exact address, port, +minimum commit, and startup marker. Values such as `WINDOWS_IP` in general +documentation are placeholders and must never be passed literally. + +## macOS to Windows + +After a real-device run, the macOS agent should create or update +`mac-validation.json` with this shape: + +```json +{ + "schema_version": 1, + "tested_windows_runtime_updated_at": "copy from windows-runtime.json", + "mac_source_commit": "full Git commit", + "connected": true, + "physical_button_enabled": true, + "button_events": 2, + "physical_drag": "failed", + "raw_button_callbacks": [ + {"pressed": 1, "released": 0}, + {"pressed": 0, "released": 1} + ], + "emitted_button_transitions": [ + {"sequence": 100, "button": true, "contact_count": 1}, + {"sequence": 350, "button": false, "contact_count": 1} + ], + "notes": ["Add exact symptoms here."] +} +``` + +`button_events` must increase for physical press and release. Use +`"physical_drag": "failed"` and place exact symptoms in `notes` if Windows +does not drag despite nonzero button events. For a two-second hold, the +frame-level button value must remain true for every intervening contact frame; +a short true/false pulse is only a click and cannot drag. + +Do not put credentials, certificate private keys, tokens, or public-network +addresses in handoff files. diff --git a/handoff/windows-runtime.json b/handoff/windows-runtime.json new file mode 100644 index 0000000..2362a25 --- /dev/null +++ b/handoff/windows-runtime.json @@ -0,0 +1,43 @@ +{ + "schema_version": 1, + "updated_at": "2026-07-30T14:20:00+08:00", + "source_commit": "5334a7363c9a6db5693b3e498e14e8da2a6173b8", + "windows": { + "ipv4": "192.168.31.115", + "tcp_port": 39871, + "receiver_executable": "out/windows/Release/mtp-receiver.exe", + "receiver_listening": true, + "driver_version": "0.1.0.8", + "ioctl_abi_version": 2, + "driver_installed": true + }, + "mac": { + "minimum_source_commit": "5334a7363c9a6db5693b3e498e14e8da2a6173b8", + "connectivity_command": "nc -vz 192.168.31.115 39871", + "agent_command": "./build/mac-touch-agent 192.168.31.115 39871", + "required_startup_marker": "physical button=enabled" + }, + "validation": { + "windows_receiver_tests": "passed", + "synthetic_button_frame": "passed", + "real_mac_click": "passed", + "real_mac_physical_drag": "failed", + "observed_symptom": "A physical press activates the target window, but holding the press while moving does not select text." + }, + "requested_mac_diagnostics": { + "scenario": "Place one finger on the trackpad, press and hold for two seconds while moving, then release.", + "required_trace": [ + "Every raw MTRegisterButtonStateCallback invocation with pressed and released integer arguments.", + "Every emitted button transition with sequence, frame flags, and contact_count.", + "Final button_events count." + ], + "acceptance_condition": "TP_FRAME_BUTTON remains set on every contact frame from physical down until physical release.", + "response_file": "handoff/mac-validation.json" + }, + "notes": [ + "Do not pass the literal placeholder WINDOWS_IP to mac-touch-agent.", + "Physical press validation requires button_events to increase on both press and release.", + "The current symptom is consistent with a short button pulse rather than a held level.", + "Write the Mac trace and result to handoff/mac-validation.json and commit it for the Windows agent." + ] +} diff --git a/windows/driver/MtpVhfTouchpad.inf b/windows/driver/MtpVhfTouchpad.inf index 2fca6f4..09a8c10 100644 --- a/windows/driver/MtpVhfTouchpad.inf +++ b/windows/driver/MtpVhfTouchpad.inf @@ -3,7 +3,7 @@ Signature="$WINDOWS NT$" Class=HIDClass ClassGuid={745A17A0-74D3-11D0-B6FE-00A0C90F57DA} Provider=%ManufacturerName% -DriverVer=07/23/2026,0.1.0.7 +DriverVer=07/30/2026,0.1.0.8 CatalogFile=MtpVhfTouchpad.cat PnpLockdown=1 diff --git a/windows/driver/MtpVhfTouchpad.vcxproj b/windows/driver/MtpVhfTouchpad.vcxproj index b223eec..400c96a 100644 --- a/windows/driver/MtpVhfTouchpad.vcxproj +++ b/windows/driver/MtpVhfTouchpad.vcxproj @@ -27,7 +27,7 @@ Level4true4005;4083;%(DisableSpecificWarnings)$(ProjectDir)..\shared;%(AdditionalIncludeDirectories) VhfKm.lib;%(AdditionalDependencies) - 0.1.0.7 + 0.1.0.8 diff --git a/windows/shared/TouchpadIoctl.h b/windows/shared/TouchpadIoctl.h index ddc70fa..206bea5 100644 --- a/windows/shared/TouchpadIoctl.h +++ b/windows/shared/TouchpadIoctl.h @@ -13,7 +13,7 @@ #define MTP_INT32 int32_t #endif -#define MTP_IOCTL_ABI_VERSION 1u +#define MTP_IOCTL_ABI_VERSION 2u #define MTP_HID_MAX_CONTACTS 5u #define MTP_COORDINATE_LOGICAL_MAX 32767u