feat: generalize session sending with multiline text and structured mentions
Add named-session file/image/reply sending, preserve multiline text, and share safe member/all mention handling. Protect existing drafts, bind popup selection to the current window, validate structured mention tokens, and require fresh matching visible messages without automatic resend. Core tests: 121 passed. Windows 4.1.13.63 final validation: 9/9 passed. Record explicit coverage limits and sanitized evidence.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"CurrentSessionId": 1,
|
||||
"InputDesktopAvailable": true,
|
||||
"WindowFound": true,
|
||||
"Errors": []
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"Success": true,
|
||||
"Code": null,
|
||||
"Message": "visible message confirmed"
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"Success": true,
|
||||
"Code": null,
|
||||
"Message": "visible message confirmed"
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"MissingMember": {
|
||||
"error": "ControlNotFound",
|
||||
"Message": "A unique mention option in a fresh WeChat popup was not found; no send was attempted."
|
||||
},
|
||||
"ExistingDraft": {
|
||||
"error": "InvalidOperationState",
|
||||
"Message": "The conversation contains an existing draft; it was not overwritten."
|
||||
},
|
||||
"ExactOwnedDraftCleanup": {
|
||||
"DraftGuardPassed": true,
|
||||
"Cleared": true,
|
||||
"OwnedDraftLength": 1
|
||||
},
|
||||
"UserApprovedUnexpectedDraftCleanup": {
|
||||
"UserApprovedCleanup": true,
|
||||
"Cleared": true,
|
||||
"DraftGuardPassed": true,
|
||||
"ClearedDraftLength": 4
|
||||
},
|
||||
"ExactStructuredTokenCleanup": {
|
||||
"UserApprovedCleanup": false,
|
||||
"Cleared": true,
|
||||
"DraftGuardPassed": true,
|
||||
"ClearedDraftLength": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Fingerprint": "b787bffca17193219159d001a2cdd7d70d82aaa8628dffa0135173af205f698d",
|
||||
"Type": "Quote",
|
||||
"length": 114,
|
||||
"content": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Fingerprint": "dcd1b8ceaef77ca58f0656abdf7dce58aadcf997a991d5bb94a88dc3be8d7042",
|
||||
"Type": "File",
|
||||
"length": 77,
|
||||
"content": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Fingerprint": "8d879245192fb79dc95a57672367997091df48454211605c428cc5c127280178",
|
||||
"Type": "Image",
|
||||
"length": 2,
|
||||
"content": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"Fingerprint": "3ab05f45aecf440154d308dc4ca647ab760fb8098efd9029a19df735cc8c02e6",
|
||||
"Type": "Text",
|
||||
"length": 112,
|
||||
"content": null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"doctorErrors": [],
|
||||
"nodes": 162,
|
||||
"sanitized": true,
|
||||
"confirmed": true
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"Checks": [
|
||||
{
|
||||
"Stage": "doctor",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "inspect-ui",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "smoke",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "send-multiline",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "send-file",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "send-image",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "reply-latest",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "mention-member",
|
||||
"ExitCode": 0
|
||||
},
|
||||
{
|
||||
"Stage": "mention-all",
|
||||
"ExitCode": 0
|
||||
}
|
||||
],
|
||||
"BinarySha256": "45E9994739D33E0786F3D224E9905DDF7439CCD322E6BAF21B431880706A0229",
|
||||
"Success": true,
|
||||
"MentionAttempted": true
|
||||
}
|
||||
Reference in New Issue
Block a user