Skip to content

1.6.0 — 88 operations across ten tools

Choose a tag to compare

@54yyyu 54yyyu released this 07 Aug 21:49
· 1 commit to main since this release

65 operations across seven tools became 88 across ten, and a send can now be
made to show what it would send before it sends it. Nothing was removed and no
spelling changed; every existing call means what it meant.

43 read, 35 write, 3 draft, 7 send. PYAPPLE_READ_ONLY=1 now leaves 43
operations rather than 30.

Three new tools

  • shortcuts — the user's own automation library, through /usr/bin/shortcuts. Measured against the binary: no apple-events entitlement, no AppleEvents framework, so it costs no Automation grant and launches nothing. run is classified send, because macOS exposes no way to read what a shortcut does and anything less would let PYAPPLE_READ_ONLY=1 execute arbitrary user code that can email a stranger.
  • presence — Focus, frontmost app, idle seconds, screen state. Read-only, and there is no setter: that half needs Accessibility, the broadest grant macOS has. Focus costs Full Disk Access and its format is undocumented, so the values carry their provenance on the wire.
  • doctor — why a tool just failed and which grant is missing. perms reports the policy; this reports the machine. No probe launches an app or can raise a prompt; where an answer would need one, the finding is undetermined with the reason.

Two-phase sends

PYAPPLE_CONFIRM_SENDS=1 (or --confirm-sends) makes any send-class operation
return what would go plus a single-use ticket, having sent nothing — exit 0,
because being asked to confirm is not a failure. The ticket binds a digest of the
resolved payload, so changing any part of the message invalidates it. The ticket
file never contains the message.

Twelve new operations

Mail thread, attachments, forward, forwardDraft, move, delete;
messages attachments, sendAttachment; reminders uncomplete, listCreate,
listDelete; notes move.

Also

tools/list annotations are now derived from the policy in force, so under
PYAPPLE_READ_ONLY=1 every tool honestly reports readOnlyHint: true.

This release also carries the mail reply fixes previously written up as an
unreleased 1.6.0: every reply this package composed was missing the caller's
text, and every reply it sent was also missing the thread it was answering. Both
reported success. Upgrade if you have ever used mail reply or
mail reply-draft.

Full detail, including the silent wrong answers found on the way, is in
CHANGELOG.md.