Repository navigation
Offer explicit Copy when an extension cannot paste on Android - #104
Conversation
|
Root local gate verified at exact head Final current-app credit is 78 passes / 18 whole cohorts / 346 successful restoration checks. Two old-app intended negatives and the separate same-APK gesture control have zero JUnit passes; historical failed cohorts remain excluded. All retained accounting is 95 executions / 88 passes / seven failures / 478 checks. Same-boot preservation still verifies 12 original durable files and 528 pre-existing evidence files. JVM298 uses unchanged frozen production/JVM sources; current Python115 per mode, builds and lint0 errors/55 warnings pass. Native test/production identities remain split as documented.
|
|
Independent correctness/security audit complete at exact head The audit traced bounded parsing/conversions, foreground/session ownership, single consumption and release, error/input revocation, clipboard failure handling, stale callbacks, affected menu/key/Return/handoff callers and guarded recovery ordering. It independently reconciled 223 source hashes, 360 indexed public files, 310 bindings/transforms, 50 projections, 875 retained capture hashes, 40 CRLF triplets/75 parseable XMLs, exact APK distinctions and all accounting. Seven representative real PNGs were viewed. All ten packaged assets/notices match. The reviewer inspected retained receipts rather than executing tests/builds/device commands and made no mutations. Clipboard-write exceptions, private originals, final-document-head runtime execution, physical/OEM/accessibility, signing and #89 remain outside this clearance. Companion review and root gates are separate. |
|
Independent UX/test/provenance audit complete at exact head All 40 actual public PNGs were viewed at original detail with XML/frame/case pairings and PR captions/commit-pinned embeds. The audit supports complete Copy/Return labels and 48dp targets across six frozen profiles, actual explicit Copy/source return, IME hiding/focused Enter, and the stated cancellation/ownership guards. It independently matched the 223 sources, 360 public files plus checkpoint, 310 bindings/transforms, 50 projections, 875 retained hashes, 75 XMLs, frozen APK/stamp boundaries and unchanged assets. Accounting remains 78 final passes /18 cohorts /346 checks; 95 retained executions /88 passes /7 failures /478 checks. Fresh post-Copy sentinel setup, raw null versus normalization, distinct V6/V7 DEX payloads, the common-APK gesture control and excluded failed pipeline remain accurately qualified. This was read-only inspection, with no tests/builds/adb or mutations. Private originals, induced write failure, physical typing, broader accessibility/OEM/signing and #89 remain uncertified. |
|
Root final gate verification: exact PR head remains The actual Android run 41910473628 now reports completed/success, exact head SHA and Proceeding with the normal merge API and the exact expected-head guard. Broader parity, arbitrary insertion, #89 and production readiness remain open. |
Fixes #101.
When a foreground extension tries to paste, a successful service response can end in generic failure feedback because Android insertion is unavailable. Droidcast now keeps that paste rejected and offers Copy result instead and Return in the existing palette. The clipboard changes only after the explicit Copy action; the resulting screen reports Copy, and Return preserves the original source and selection.
Output is bounded, private, invocation-owned and single-use. Replacement, source changes, cancellation, return and disposal clear it; stale callbacks cannot consume a newer offer. Actual window focus and current route/lifetime guard Copy. Unsupported content fails without an offer. Both action labels retain natural height and complete 48 dp targets across tablet, phone and short landscape at 100%/200%.
Implementation, identities, limitations and full evidence · Checkpoint
Real Android before / after
Tinycast_Tablet_API_36, Android 16/API 36. Phone is the 1080×2340/420 dpi emulator override at 100%. The unchanged frozen Translate paste command uses owned
helloinput. Old app:56134f31/2a41ea14…; current app:08210fa2/a5b1ccb1…; identical workflow instrumentation:6bd62608….The last frame is an owned real-runtime error protocol, not a Store/service observation. Enlarged profiles are functional/label evidence, not broad accessibility certification.
Validation
0dc614d4…test APK; the legacy four-pixel path starts outside the rounded palette and dismisses it, zero passes / 20 checks. The interior continuation passes. This corrects the test helper and earns no app-repair credit.localstamp and earn no benchmark-device credit.The installed app remains frozen at
08210fa2. Instrumentation cohorts retain their distinct08210fa2,5f8875b2and51de2cabidentities; no final-head runtime rerun or stamp-only binary equivalence is implied.Actual exact-head hosted Android CI and the two independent gpt-6.1-sol/high audits remain pending. Local/emulator checks do not clear those gates. Merge only after all gates pass, using the expected-head guard.
Clipboard.pasteremains partial with an explicit Copy fallback. Arbitrary insertion, whole-Store/Raycast parity, physical/OEM/TalkBack, production signing/migration and #89 remain open.