“Mobile” is not one input model. A foldable may change size while an AI response streams. A tablet may have a keyboard and stylus. Voice input can lose permission mid-task. A trackpad can expose hover while touch remains primary.
Test capabilities and transitions instead of labeling devices as phone or tablet.
viewport:
width: 673
height: 841
posture: half-open
inputs: [touch, stylus, hardware-keyboard, trackpad]
network: cellular-variable
permissions:
microphone: granted
task_state: streaming
Build a transition matrix
| During this state | Change | Expected behavior |
|---|---|---|
| composing prompt | attach hardware keyboard | preserve text, selection, and undo history |
| streaming answer | unfold device | preserve scroll anchor and task identity |
| recording voice | microphone revoked | stop capture, preserve draft, explain next step |
| reviewing patch | app backgrounds | persist server task ID and last acknowledged event |
| drawing selection | stylus becomes touch | do not submit or erase accidentally |
| offline queue | network returns | deduplicate submission with the same operation ID |
Record device model, OS build, app/framework version, input hardware, posture, network conditions, permission state, battery mode, and whether the task runs locally or on a server. Without that envelope, “works on Android” is not reproducible evidence.
Capture time to first visible state, time to first streamed content, recovery time after resize or resume, duplicate submissions, lost draft characters, focus changes, and bytes transferred after reconnection. For voice, record permission timing and whether audio is retained or uploaded; make privacy behavior visible.
Do not infer battery impact from elapsed time alone. Use platform energy tools, repeat the same workload, and report thermal state. This article defines a test protocol; it is not a device benchmark.
The public MonkeyCode repository documents native mobile support, synchronized PC/mobile data, and server-side task execution. Those documented workflows make continuity across input and form-factor changes relevant, but this matrix was not executed against MonkeyCode.
Disclosure: I contribute to the MonkeyCode project. Product statements come from its public repository; no mobile performance claim is made here.
The durable test question is not “which device is this?” It is “which capabilities are active, what changed, and what state must survive?”