fix(ios): block incomplete shares when attachments are omitted#106513
Conversation
f2a3cec to
c7bc3df
Compare
Co-authored-by: jincheng-xydt <[email protected]>
c7bc3df to
bb622b8
Compare
|
Codex review: needs maintainer review before merge. Reviewed July 13, 2026, 2:11 PM ET / 18:11 UTC. Summary PR surface: Other +185. Total +185 across 5 files. Reproducibility: yes. Current main deterministically caps accepted images at three and sends only that array, while linked native Photos share-sheet proof demonstrates the six-image omission path and normal one-image control. Review metrics: none identified. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Land the controller-owned omission guard after an iOS owner confirms fail-closed behavior, preserving supported one-to-three-image and text/URL shares while preventing every partial-send path. Do we have a high-confidence way to reproduce the issue? Yes. Current main deterministically caps accepted images at three and sends only that array, while linked native Photos share-sheet proof demonstrates the six-image omission path and normal one-image control. Is this the best way to solve the issue? Yes for the implementation shape: centralized accounting plus a send-path guard is narrower and safer than UI-only disabling. The product choice between unconditional blocking and confirmed partial delivery still requires iOS owner approval. AGENTS.md: unclear because the file could not be read completely. Codex review notes: model internal, reasoning high; reviewed against 171fabef24cf. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +185. Total +185 across 5 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
Land-ready verification for
Landing override: CI completion explicitly waived. Known proof gap: no completed hosted |
|
Merged via maintainer CI waiver.
|
…law#106513) * fix(ios): block omitted share attachments Co-authored-by: jincheng-xydt <[email protected]> * chore: keep release note in PR body --------- Co-authored-by: jincheng-xydt <[email protected]>
…law#106513) * fix(ios): block omitted share attachments Co-authored-by: jincheng-xydt <[email protected]> * chore: keep release note in PR body --------- Co-authored-by: jincheng-xydt <[email protected]>
Closes #103363
Supersedes #104842 while preserving @jincheng-xydt's contribution and co-author credit.
What Problem This Solves
Fixes an issue where users sharing more than three images, videos, files, unsupported items, or unloadable text representations from the iOS Share Extension could send an incomplete message while the omitted content was silently discarded.
Why This Change Was Made
The Share Extension now summarizes every selected attachment, blocks both the compose UI and the send path whenever content would be omitted, and loads generic text representations before deciding whether a provider is unsupported. Image-processing failures remain authoritative, and the existing three-image upload limit stays unchanged.
User Impact
Users now see a specific recovery message and cannot accidentally send a partial share. Supported one-to-three-image and text/URL shares continue normally.
Evidence
autoreview --mode uncommitted: clean, no accepted or actionable findings.git diff --cached --check: pass before the squashed replacement commit.