feat(shared): enable experimental saved-devices on desktop

Surface Settings → Experimental on Windows/Linux Compose, keep generic
Desktop hosts gated off, and assert path-based targeted receive when no
output sink is available.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-11 19:51:39 +02:00
parent 37cc238888
commit b9884b566a
8 changed files with 129 additions and 7 deletions

View File

@@ -10,8 +10,8 @@ Use **saved device**, **device relationship**, **targeted transfer**, **invitati
## Experimental gate
- KMP Android: Settings → Experimental → Saved devices, preference default **off**, persisted.
- KMP desktop: experimental UI **hidden**.
- KMP Android / Windows / Linux: Settings → Experimental → Saved devices, preference default **off**, persisted.
- KMP generic desktop host (`UiPlatform.Desktop`, e.g. macOS JVM): experimental UI **hidden**.
- Apple: gate shape is platform-owned; semantics below still apply when the feature is enabled.
## Events are wake-ups
@@ -35,7 +35,9 @@ After a completed invitation transfer, eligibility may exist. The user may accep
- `Declined`
- `AlreadySettled { transfer_id }`
3. Never accept or display authorization/grant strings across the public binding.
4. Pull / resume with **transfer id + destination** (path or output sink). Android KMP reuses the invitation MediaStore Downloads sink for the experimental MVP receive.
4. Pull / resume with **transfer id + destination** (path or output sink).
- Android KMP: invitation MediaStore Downloads sink for the experimental MVP receive.
- Windows / Linux KMP: configured filesystem receive folder path when no output sink is provided.
## Out of this contracts MVP chrome