Real incident (Ben, iPad off): session archived + strip cleared before the AirDrop sheet completed; cancelled share looked like success; PDF named by session start time was unfindable. Now: NSSharingServiceDelegate — archive only on didShareItems; fail/cancel keeps the session with an honest status naming the PDF's location; PDFs named by send time; new "Reveal last PDF" menu row. SEND-TRUTH selftest phase drives both delegate paths; builder run: PICKER + REGION-PERSIST + SEND-TRUTH all PASS.
Real incident (Ben, iPad off): session archived + strip cleared before the AirDrop sheet completed; cancelled share looked like success; PDF named by session start time was unfindable. Now: NSSharingServiceDelegate — archive only on didShareItems; fail/cancel keeps the session with an honest status naming the PDF's location; PDFs named by send time; new "Reveal last PDF" menu row. SEND-TRUTH selftest phase drives both delegate paths; builder run: PICKER + REGION-PERSIST + SEND-TRUTH all PASS.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Real incident (Ben, iPad off): session archived + strip cleared before the AirDrop sheet completed; cancelled share looked like success; PDF named by session start time was unfindable. Now: NSSharingServiceDelegate — archive only on didShareItems; fail/cancel keeps the session with an honest status naming the PDF's location; PDFs named by send time; new "Reveal last PDF" menu row. SEND-TRUTH selftest phase drives both delegate paths; builder run: PICKER + REGION-PERSIST + SEND-TRUTH all PASS.
🤖 Generated with Claude Code