Images & voice
Attach gallery images, use camera and share-in paths, dictate with device speech recognition, and understand platform limits.
Mobile capture is model- and platform-dependent. This page separates implemented controls from verification evidence.
Image requirements
Choose a model tagged Vision before sending an image. If the active model lacks that capability, Cordy blocks the request locally and offers Change model. One pending image can be staged in the composer; remove it before sending if it is not the image you want.
On Android, import applies these concrete limits before an image reaches a provider:
| Boundary | Implemented behavior |
|---|---|
| Source size | Reject a source larger than 12 MiB when Android reports its length |
| Decode | Reject content that Android cannot decode as an image |
| Dimensions | Preserve orientation, then scale the longest side down to at most 1,600 pixels |
| Stored/request format | Encode as JPEG at quality 86 |
| Encoded size | Reject the JPEG if it is larger than 4 MiB |
The picker accepts content Android can decode; Cordy does not promise support from a filename extension alone. A rejected selection shows one of four outcomes: Image is too large, That file is not an image, CordyAI could not read that image, or Could not attach that image. Choose a smaller/decodable image, grant the source app read access, or pick the file again. The image remains local when import fails.
Android image paths
Tap the attachment control and choose:
- Photo Library — select an image with the Android photo picker.
- Camera — grant camera permission at point of use and capture a JPEG through the FileProvider-backed camera path.
- Share into Cordy — in another app, share one
image/*item to Cordy. It opens chat with that image staged.
Cordy imports and compresses the selected image at the app boundary, previews it, persists the sent attachment locally, and reads its bytes only when building a provider request. Gallery selection and send have real-device evidence. Manual camera and share-in checks remained open at v0.5.0 release.
Permission denial affects only that capture path. A denied camera permission does not disable the photo picker.
Android voice input
Tap the microphone. On first use, Cordy discloses that voice input uses the device speech-recognition service. After acceptance it requests microphone permission and invokes Android SpeechRecognizer.
The recognized transcript appears as editable draft text; review it before sending. Cordy does not persist an audio recording. You can cancel listening without sending. The implementation and fake-runtime outcomes are covered, but a real microphone transcript smoke remained open at v0.5.0 release.
The speech service is supplied by the device. Its own network behavior and privacy terms are outside Cordy's control.
iOS status
Current iOS source explicitly sets image picker, camera, and voice capabilities to false, so those entry points are hidden. The repository records no completed iOS binary link, execution, or smoke. Do not treat source implementations for storage or sharing as runtime evidence.
Accessibility status
Capture controls have accessibility names and minimum touch targets in source. The required manual TalkBack pass for attachment, camera, microphone, permission recovery, and unsupported-model controls remained open at release. There is no VoiceOver runtime evidence.