diff --git a/docs/.well-known/llms-full.txt b/docs/.well-known/llms-full.txt
index b06b7219..9dd0e997 100644
--- a/docs/.well-known/llms-full.txt
+++ b/docs/.well-known/llms-full.txt
@@ -28672,7 +28672,9 @@ await Fliplet.require.lazy.chain('fliplet-media');
## Capturing a photo: Fliplet.Media.capture()
-`Fliplet.Media.capture()` resolves with the chosen image as an **optimized WebP `File`** — downscaled to `maxWidth`/`maxHeight` and re-encoded to keep uploads small, so you don't ship a multi-megapixel original over the wire. It works the same on web and native — on native it drives the device camera or photo library; on web it opens the file picker (hinting the camera when you ask for one). You never touch the platform camera APIs yourself, the same way you build a login screen on top of `Fliplet.Session`.
+`Fliplet.Media.capture()` resolves with the chosen image as a `File`, downscaled to `maxWidth`/`maxHeight` so you don't ship a multi-megapixel original over the wire. It works the same on web and native — on native it drives the device camera or photo library; on web it opens the file picker (hinting the camera when you ask for one). You never touch the platform camera APIs yourself, the same way you build a login screen on top of `Fliplet.Session`.
+
+You don't need to care what the image is encoded as — hand the result to `Files.upload()` and Fliplet handles the rest.
```js
await Fliplet.require.lazy.chain('fliplet-media');
@@ -28694,11 +28696,11 @@ const picked = await Fliplet.Media.capture({ source: 'library' }); // straight t
`capture(options)` accepts:
* **options.source** (String) — `'ask'` (**default**, lets the user choose), `'camera'`, or `'library'`. On native, `'ask'` shows the OS chooser; on web the browser decides, and `'camera'` hints the rear camera on mobile.
-* **options.quality** (Number) — WebP quality `0`–`100`. **Default** `80`.
+* **options.quality** (Number) — image quality `0`–`100`. **Default** `80`.
* **options.maxWidth** (Number) — longest-edge width cap in px; the image is scaled down to fit and never upscaled. **Default** `2048`.
* **options.maxHeight** (Number) — longest-edge height cap in px. **Default** `2048`.
-It resolves with an optimized WebP `File` and rejects if the user cancels or no camera is available — handle the rejection so the screen doesn't hang.
+It resolves with a `File` and rejects if the user cancels or no camera is available — handle the rejection so the screen doesn't hang.
> **Photos only.** `capture()` takes still images. To collect audio or video, let the user **upload an existing file** with `Files.upload()` (below) — there is no audio/video *recording* API.
@@ -36115,13 +36117,14 @@ Release notes for the Fliplet iOS and Android native frameworks — rebuild your
iOS
Current release: 6.4.6
Target SDK version: 17
+ Minimum supported version: iOS 17
Android
-
Current release: 6.4.4
-
Target API level: 36
+
Current release: 6.4.7
+
Target API level: 37
Minimum supported SDK: 29 (Android 10)
@@ -36132,6 +36135,10 @@ Release notes for the Fliplet iOS and Android native frameworks — rebuild your
## Supported versions
+### Version 6.4.7 (July 16, 2026)
+
+- **Android**: The target SDK has now been set to 37 (Android 17)
+
### Version 6.4.6 (February 09, 2026)
- **iOS**: iOS apps are now built using Xcode 26.
diff --git a/docs/.well-known/llms-v3-libraries.json b/docs/.well-known/llms-v3-libraries.json
index cd8967c7..af1b41a3 100644
--- a/docs/.well-known/llms-v3-libraries.json
+++ b/docs/.well-known/llms-v3-libraries.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "generatedAt": "2026-07-02T10:13:20.806Z",
+ "generatedAt": "2026-07-22T13:41:33.000Z",
"libraries": [
{
"package": "fliplet-analytics-spa",
diff --git a/docs/API/v3/media.md b/docs/API/v3/media.md
index 2aa08a71..3342dc56 100644
--- a/docs/API/v3/media.md
+++ b/docs/API/v3/media.md
@@ -27,7 +27,9 @@ await Fliplet.require.lazy.chain('fliplet-media');
## Capturing a photo: Fliplet.Media.capture()
-`Fliplet.Media.capture()` resolves with the chosen image as an **optimized WebP `File`** — downscaled to `maxWidth`/`maxHeight` and re-encoded to keep uploads small, so you don't ship a multi-megapixel original over the wire. It works the same on web and native — on native it drives the device camera or photo library; on web it opens the file picker (hinting the camera when you ask for one). You never touch the platform camera APIs yourself, the same way you build a login screen on top of `Fliplet.Session`.
+`Fliplet.Media.capture()` resolves with the chosen image as a `File`, downscaled to `maxWidth`/`maxHeight` so you don't ship a multi-megapixel original over the wire. It works the same on web and native — on native it drives the device camera or photo library; on web it opens the file picker (hinting the camera when you ask for one). You never touch the platform camera APIs yourself, the same way you build a login screen on top of `Fliplet.Session`.
+
+You don't need to care what the image is encoded as — hand the result to `Files.upload()` and Fliplet handles the rest.
```js
await Fliplet.require.lazy.chain('fliplet-media');
@@ -49,11 +51,11 @@ const picked = await Fliplet.Media.capture({ source: 'library' }); // straight t
`capture(options)` accepts:
* **options.source** (String) — `'ask'` (**default**, lets the user choose), `'camera'`, or `'library'`. On native, `'ask'` shows the OS chooser; on web the browser decides, and `'camera'` hints the rear camera on mobile.
-* **options.quality** (Number) — WebP quality `0`–`100`. **Default** `80`.
+* **options.quality** (Number) — image quality `0`–`100`. **Default** `80`.
* **options.maxWidth** (Number) — longest-edge width cap in px; the image is scaled down to fit and never upscaled. **Default** `2048`.
* **options.maxHeight** (Number) — longest-edge height cap in px. **Default** `2048`.
-It resolves with an optimized WebP `File` and rejects if the user cancels or no camera is available — handle the rejection so the screen doesn't hang.
+It resolves with a `File` and rejects if the user cancels or no camera is available — handle the rejection so the screen doesn't hang.
> **Photos only.** `capture()` takes still images. To collect audio or video, let the user **upload an existing file** with `Files.upload()` (below) — there is no audio/video *recording* API.