TAKE66 SOFTWARE / PRODUCTS / MAIL SHEPHERD / HELP / APP STORE

What’s New.

Mail Shepherd 3.0 for the Mac App Store (build 535) · Updated October 24, 2026

Changes since build 453, newest first.

Build 535

  • Mail Shepherd now needs macOS 15 or later (it was 14): 3.0 hasn’t been tested on macOS 14. The first TestFlight build for external testers (build 534 was the same code, built locally before archiving).

Build 533

  • An account whose contacts can’t be read (an iCloud alias, for example) no longer stops every Sweep: a Sweep and the Review pages leave out just that account, saying why in the Sweep Log, the Action Log and on the Review pages, and the other accounts run.
  • A Test that fails for a reason other than the password (no network, no answer) shows on the account but no longer makes Auto-Sweep skip it; only iCloud refusing the password does. Such problems saved by earlier builds are cleared at launch.
  • A message’s details on Review Junk show Kept in Junk with why a Sweep leaves a contact’s or an Allowed Domain’s message there (not authenticated, or a failed spoof check).
  • Blocked Senders: the Clear button is gone (unlink Mail’s list in Settings; turn off a sender’s block in its details).
  • Settings shows Unlink… only while Mail’s list is linked. Senders left from it while it isn’t linked are removed at launch (logged in the Action Log).

Build 531

  • Review Blocked and Review Junk fit the window at its narrowest: with long account addresses the toolbar pushed Refresh, and Next at the bottom, past the window’s edge. The age and account menus now shorten first.

Build 530

  • Mail Shepherd Help rewritten for version 3.0: every page now describes the app as it is (iCloud accounts with app-specific passwords, Settings, Contacts, linking Mail’s Blocked Sender List, Sweep and Sweep Logs, the Review pages, Auto-Sweep), and everything removed is gone from it (the Setup permissions, controlling Mail, Sample Mail, Dry Run, Import…, the Accounts page, the Support Log). The old screenshots and videos are left out until they’re retaken. The App Store edition’s help is the same as the website edition’s.
  • Wording: “Imported Blocked Senders” is now “Mail’s Blocked Sender List” everywhere it still showed (a message’s details, Blocked Senders, Blocked Domains, the Action Log).
  • Delete Selected’s tooltip no longer says it asks first (it asks only when Ask Before Deleting is on, or a modifier key is held).
  • Automate’s Recent Changes goes back as far as the Action Log keeps (4 weeks), so every entry listed can show its messages.

Build 528

  • One definition of a change (moved to the Inbox, Trash or Junk, or marked read) and one way of listing changes, used by the Sweep Logs, Automate's Recent Changes and the Auto-Sweep log, which listed them in different orders.
  • “1 change weren’t confirmed” now reads “1 change wasn’t confirmed”.

Build 527

  • Parent domains come from the Public Suffix List instead of a guess: “news.abc.io” and “mail.take66.ai” now belong to abc.io and take66.ai (before, any short name under a two-letter country code was kept whole), and names under suffixes like “sp.gov.br” or “*.kobe.jp” are split where they’re registered. This affects Blocked Domains’ Combine Subdomains counts, Block Parent Domain, and the spoof checks that compare organizations (Reply-To Elsewhere, Display Name, Lookalike Domain), which no longer flag a company’s own subdomains under country domains.

Build 526

  • Faster Inbox Sweeps: Blocked Domains are searched for 20 at a time (66 domains is 4 searches, not 66); if the server refuses a combined search, each domain is searched alone. The same messages are found.
  • Cheaper rule checks with the same decisions: each sender is read once and checked against the contacts once per Sweep, patterns are prepared once instead of per message, only the spoof checks that are on run for Spoof Detection, the lookalike domains are prepared once, and the rules run off the main thread so the window stays responsive.
  • After the Mac wakes, a due Auto-Sweep waits a minute, and signing in waits for the network (up to the usual limit) instead of failing at once.
  • A move the server accepted but couldn’t be asked about afterwards now counts as moved, with a note in the Action Log, instead of “Unconfirmed”.
  • Accounts can’t be removed while a Sweep or Review action runs.
  • The Sweep Log trims its oldest tenth at once past 100,000 lines, instead of one line for every new one.

Build 525

  • Fixes the new tests found: a folder of your own named “Trash” could be taken for Trash (now the mailbox marked as Trash wins, then Deleted Messages, then Trash), and a damaged or half-written Mail blocked senders file read as “nobody blocked” and removed every imported sender (now the senders read before are kept and the problem is logged).

Build 523

  • Messages that point to the Blocked Senders importer now point to Settings → Link… or to unblocking in Mail.

Build 522

  • About: the mission says “safely and quickly”, followed by the How Your Data Is Used and Privacy Policy links; the checklist is gone.
  • Settings: Link… and Unlink… sit beside Mail’s Blocked Sender List’s status, as Turn On and Turn Off do for Open at Login.
  • Accounts: each row has a trash icon (Remove, asked first in a box under the list); the editor no longer has Remove. Adding or editing an account takes the whole page, with Test Connection, Cancel and Save at the bottom and no Next.
  • Every list’s count in its footer uses the same size; the Review pages’ legends are centered in the footer.
  • Column widths: Action Log’s Date & Time is two lines (date, then time) in a narrower column; set widths for Blocked Senders’ Source, Contacts’ Account and Hashed Email, Accounts’ Last Connection and Sweep Logs’ columns.
  • Action Log entry details: ↑ and ↓ (and the arrow keys) go to the entry above or below, with “3 of 500”.
  • Get Support: the Support Log section and the Email Support button are gone; the address is the link, with a copy button beside it.
  • The Action Log keeps 4 weeks instead of 12.

Build 520

  • Settings: Mail’s Blocked Sender List, Accounts, Spoof Detection, then a new Configuration box (Open at Login with its state beside the button, Ask Before Deleting, Verbose). With no account yet, Accounts comes first. Mail’s list’s status is just Linked (green) or Not Linked (red).
  • Blocked Sender details: Open Mail… (with where to unblock it in Mail) replaces the tip; both sections’ labels line up.
  • Blocked Domains and Allowed Domains: one toolbar row (the left list’s menu, Search, Refresh), no box; the empty strip above the right list is gone.
  • Refresh and Stop show an icon and text everywhere; Stop uses the same icon on every page, Sweep’s included.
  • Review pages: the icons’ legend is in the list’s footer, after the count.
  • Sidebar: the page shown always has a grey highlight (never blue).
  • Contacts: Clear All is gone (Refresh reads everything again); the footer has the count on the left and Last Update on the right.
  • Sweep Logs has an Account column, and Automate’s Recent Changes shows each Auto-Sweep’s account (All Accounts, or the address).
  • Action Log: Search after the menu, the date and time on one line, two lines per row, and Link/Unlink entries say “Mail’s Blocked Sender List” instead of the file’s name.

Build 518

  • A Sweep moves a contact's or an Allowed Domain's message out of Junk only when iCloud authenticated it (DMARC pass, or SPF/DKIM pass for the sender's own domain) and it passes all four spoof checks, enforced or not. Otherwise it stays in Junk, is listed on Review Junk with why, is always listed in the Sweep Log, and is counted in the Sweep table's new Kept in Junk row.
  • A list file with an entry that can't be read keeps its other entries, and a file that can't be read at all no longer gets overwritten: either way a copy is kept beside it and the Action Log says so.
  • The display going to sleep no longer stops a Sweep; the Mac sleeping or switching users still does, and the Sweep Log and Action Log say which (not "Stopped by user").
  • Moves to Junk count as changes (Automate's Recent Changes and the Auto-Sweep history).
  • Auto-Sweep skips a turn that comes while a Sweep runs or within half an interval after one.
  • Display Name check: initials and abbreviations in names (J.Smith, St.Jude) no longer count as domains.
  • A From header made only of encoded words can no longer spell out an address the rules would believe.
  • Dates with two-digit years (22 Oct 26) read as 2026.

Build 517

  • One account menu for Contacts, Sweep, Review Blocked and Review Junk: choosing an account on any of them chooses it on all. Changing it away from the Review pages means the next Review page opened reads Junk and Trash for that account. Each launch starts at All Accounts. Automate's menu stays separate (it's what Auto-Sweep sweeps).

Build 516

  • Accounts are only in Settings now: the Accounts sidebar item is gone, and every "Accounts page" pointer says Settings. The first launch (and any launch with no account) opens Settings.
  • Sweep sweeps the account chosen in its account menu (All Accounts sweeps all); the other accounts keep their numbers in the table.
  • Automate: an account menu chooses which account Auto-Sweep sweeps (All Accounts by default). Removing that account sets it back to All Accounts.
  • Review Blocked and Review Junk: Refresh reads only the account chosen in the account menu, and changing the menu reads Junk and Trash again. The list empties as soon as a read starts and shows Loading… until it finishes; Stop leaves a note to click Refresh.
  • Blocked Senders details: the From line is gone; each place the sender is blocked has its own row (Mail Shepherd with its switch, and Mail’s Blocked Sender List when it’s on it).
  • Blocked Domains and Allowed Domains: the column headings sit right under the filter (no empty second line).

Build 515

  • Settings: Accounts moved to just above Confirmations. Adding or editing an account from Settings takes over the whole page until Cancel, Save or Remove.

Build 514

  • Settings: the Accounts list is at the top too (same list, Test, …, editing in place and +), to compare with the Accounts page, which stays for now. Settings now scrolls when it's taller than the window.

Build 513

  • Settings → Mail’s Blocked Sender List: the button is Link… (then Unlink…), and the file dialog's button says Link. Only Mail's own file can be chosen (others are dimmed), and a same-named copy somewhere else is refused with a problem in the Action Log. The status says just “Not linked” until it is.
  • Contacts: one Refresh button; holding Shift, Control, Option or Command turns it into Re-Hash.

Build 512

  • Settings → Mail’s Blocked Sender List: one button, the same width and place as Open at Login's: Open… until the list is linked, then Unlink…. The file dialog no longer shows a message above the files.

Build 511

  • Settings → Mail’s Blocked Sender List: the full path of Mail’s blocked senders file, and Open File…, which opens the file dialog on that file already selected, so you only click Open (that gives Mail Shepherd permission to read it). It's read then and before every Sweep. Status shows how many senders it has and when it was read; Unlink (asked on the page) removes its senders.
  • Blocked Senders: Import… is gone. Senders from Mail's list show as “Mail’s Blocked Sender List”; an earlier import of Mail's list is renamed to it at launch.
  • A blocked sender's details: Blocked Sender (the address, From: Mail Shepherd and/or Mail’s Blocked Sender List, and Mail Shepherd's block with Turn On / Off Blocking; how to unblock one that's on Mail's list), then Blocked Domains in Mail Shepherd.

Build 510

  • Sample Mail is gone (Help → Try Mail Shepherd with Sample Mail). It opened a second copy of the app with made-up data and didn't do everything the real app does. Made-up data remains only for taking screenshots, in Debug builds. App Review needs a real test account.
  • No View menu: every page is in the sidebar.
  • About: the mission is one sentence, then a short "Your privacy" box with links to How Mail Shepherd Handles Your Data (take66.ai/mailshepherd/data.html) and the Privacy Policy.
  • Review Blocked and Review Junk read Junk and Trash only the first time one opens after a Sweep, an Auto-Sweep, a Review action, an account change or a spoof-check change, or when you click Refresh (before, every visit read them again).
  • Action Log: an entry's details open in the page, not a sheet.
  • Blocked Domains: the Parent/Exact menu is smaller, without "Show", and closer to the column headings. Blocked Domains and Allowed Domains: + is in the right list's footer.
  • Sweep page: the account menu sits beside Sweep.
  • Contacts: the Contacts Refresh Log has a maximize button (with a search box when maximized).
  • Wording: "never empties Trash" is gone; the docs now say Mail Shepherd deletes only the messages you choose, and those are deleted permanently.

Build 509

  • Accounts: adding or editing an account takes the list's place instead of a sheet. The name has a copy button and the password a paste button (icons only). Delete Account is now Remove, and it asks in the same panel, saying what's removed (the account, its password, its contacts, its numbers in the last Sweep's table) and what's kept (the logs, the shared lists, imported blocked lists).
  • Toolbars: menus, then Search, on the left; actions and Refresh on the right (Blocked Domains, Allowed Domains, Blocked Senders, Contacts). Blocked Domains' Show menu moved into the left list, above its column headings, since it changes only that list.
  • Search boxes have the standard magnifying glass.
  • Settings: one Ask Before Deleting setting for both kinds of delete (it stays on unless both were off). Each Spoof Detection check has a one-line description beside it.
  • Sweep page: the Sweep Log keeps a fixed height with its own scroll bar; maximized, it has a search box.
  • Sweep Logs: a Log column (Verbose or Concise), Clear (asked on the page), and a search box in a Sweep's log.
  • Action Log: smaller text, so more fits.
  • Get Support: the support address is shown as a link that opens the same message as Email Support….
  • About: the mission says contacts' addresses are read only to recognize their mail, keeping just each domain and a one-way hash of the address.

Build 508

  • Sweep Logs: a new sidebar page above Action Log lists every Sweep and Auto-Sweep, newest first, with the date and time, Manual or Auto-Sweep, the result (Succeeded, Finished with Problems, Stopped or Failed) and its changes. Click one for its Sweep Log, with ↑/↓ and Done. Each Sweep's log is saved beside the Action Log; the newest 500 are kept.
  • Settings → Sweep Logs: Verbose moved here from the Sweep Log, for manual Sweeps and Auto-Sweeps alike.
  • Sweep page: the Sweep Log has a maximize button that makes it fill the page (the sidebar and Back/Next stay).
  • Review pages: the select-all checkbox lines up with the rows' checkboxes; "Blocked Mail" is gone from Review Blocked's list; Review Junk shows its icon legend between Back and Next, like Review Blocked.
  • Window: the narrowest is now 1,020 points (an 800-point page), and 600 tall, so Back, Next and the sidebar's bottom rows are never cut off.

Build 505

  • Sweep page: the account menu moved from under the table to the button row, beside Sweep.
  • Dry Run is gone: its button, the saved last Dry Run and its table title, and the read-only path in the Sweep engine. Its saved results and Verbose setting are removed at launch (the Sweep Log's Verbose is now its own setting, off at first). The docs, store listing, review notes and tester guide no longer mention it.

Build 503

  • Removed what was left of the old RedFlag and Flagger66 names: the build script no longer looks for RedFlag, RedFlag2 or Flagger66 apps to quit or move to the Trash, the Action Log no longer cleans up their old support folders (the sandboxed app can't reach them), the tests use a current action, and outdated notes are gone from Release-readiness and the artwork README. README keeps one line on the app's earlier names.

Build 502

  • Spoof Detection (Settings): Failed Authentication, Reply-To Elsewhere, Display Name Hides Address and Lookalike Domain, each off by default. A message that fails an enforced check is junk even if it claims to be from a contact or an Allowed Domain: a Sweep moves it from Junk to Trash, or marks it junk and moves it from the Inbox to Junk (left unread, so Review Junk lists it), and logs which checks failed. The Sweep table has Spoofed and Moved to Junk. With a check enforced, the Inbox is read in full each Sweep.
  • Review details: a new Spoof Checks section shows every check (Pass, Fail or Not Checked, and why), the score, and an Enforced pill (others dimmed, Off). The Message section adds Reply-To (when it differs), Sent, and Subscription for mailing-list mail (unsubscribe through Open in Mail).
  • Only iCloud's own Authentication-Results header is trusted; the new headers are read with the others, never the body.
  • Network limits: connecting and signing in must finish in 30 seconds, each read in 60, each command in 180, and an answer can't grow past 16 MB without a line break; Stop and sleep close the connection at once.
  • The two-list pages' column titles use the small grey header style and wrap to two lines in a narrow window. Review Junk's list no longer says "Junk Mail".
  • Leading icons and Title Case: the account sheet (steps, Create App Password…, Paste, Test Connection, Delete Account), Test, Turn On / Off Blocking, the import buttons, Done, Quit Sample Mail. The Contacts page has a count footer and the standard search box.
  • Copyright: © 2026 Take66 Software everywhere.

Build 500

  • Review Junk details: Open Contacts… replaces Add as New Contact (Mail Shepherd never changes contacts); copy buttons beside Email and Name; Open in Mail is in the Message section's header; Delete Permanently is in the Block section.
  • Review Blocked details: a new Allow section mirrors Block: Allow Sender, Allow Exact Domain and Allow Parent Domain, each dimmed with the reason when it isn't blocked that way (an imported sender: unblock it in Mail and import again; a domain blocked by its parent: "Blocked by …"). Delete Permanently moved to Block, Open in Mail to the Message section.
  • Settings → Confirmations: Ask Before Delete Selected and Ask Before Delete Permanently. "Don't ask again" in either dialog turns its setting off; the old single setting carries over to both.
  • Block Sender and Block Domain log the message they were made from: account · mailbox, UID, sender, subject, sent and received dates, and the page.
  • The Sent date (Date header) is read with the other headers and shown in the Action Log.
  • Safety: before changing a mailbox its UIDVALIDITY must match the list; Delete Permanently needs exactly one matching copy in Trash; a failed expunge is logged Unconfirmed and the message is unmarked; a Sweep step that fails partway is logged Unconfirmed and the counts so far are kept; header text is cleaned of control and bidirectional characters; contacts requests go only to icloud.com over HTTPS with no cookies or cache; a contacts read that fails for any account keeps the old key and contacts.
  • Review no longer warns about an account that has no Junk or Trash mailbox yet.
  • Check for Updates is only in the website edition (Release builds with WEBSITE_EDITION).
  • Clear Log asks first. DomainMover's button is Go to Contacts.
  • Removed unused code (old Setup rows and badges, inline operation errors, BlockedMark and others). README, the App Store Connect guide (3.0, sign-in required) and the privacy policy draft describe version 3.0.

Build 495

  • Sweep page: the status beside Stop no longer repeats "Dry Run".

Build 493

  • Everything now works directly with iCloud Mail over IMAP; Mail Shepherd no longer controls Apple Mail at all (no AppleScript, no Accessibility, no Mail Automation, Mail doesn't need to be open).
  • Sweep is back on: every account's Trash, Junk and Inbox. Junk from blocked senders, Blocked Domains and other junk is marked read and junk and moved to Trash; junk from contacts and Allowed Domains is marked not junk and moved to the Inbox (left unread); unread Trash is marked read; Inbox mail from Blocked Domains (not contacts) goes to Trash. Each mailbox is read 500 messages at a time; the Inbox is searched on the server for Blocked Domains' senders only. Every change is in the Action Log, and a change the server doesn't confirm is logged "Unconfirmed".
  • The Sweep page has Sweep and Dry Run side by side, one table for the last Sweep or Dry Run (with Moved to Inbox, Marked Read and Moved to Trash after a Sweep), an account menu, and the Sweep Log (Verbose lists every message left as it is).
  • Auto-Sweep runs the same Sweep; it's skipped only when there's no account. Contacts are brought up to date before every Sweep.
  • Review Blocked and Review Junk actions work on iCloud: Delete Selected (Trash messages are deleted for good, Junk messages move to Trash), Delete Permanently (Junk messages move to Trash first), Move to Inbox, Block Sender (their junk is marked read and moved to Trash), Open in Mail (by Message-ID) and Add as New Contact…. Before changing anything, each message is read again and must still be there as listed and still belong on the page. Deleting logs “Attempting” first.
  • Removed: everything that controlled Mail (MailBridge and its AppleScript, Accessibility, the Mail-window Delete, flag-for-deleting, the selection test), the Mac's Contacts (Add to Existing Contact…), reading Mail's blocked list directly and its saved copy, the Mail Automation and Contacts entitlements and usage descriptions. Send Support Log uses macOS's email sharing.

Build 492

  • Contacts stay current by themselves. Before every Dry Run (and, once it runs on iCloud, every Sweep), Mail Shepherd asks iCloud only for the contacts added, changed or removed since the last read (CardDAV sync tokens); an address book that hasn't changed costs one small request. When the last full refresh is more than 8 hours old, every card is read again instead, before the Sweep or at launch.
  • A new hashing key is made once a week, with the next full refresh (Re-Hash still does it at once).
  • The Contacts page shows Last Full Refresh, Last Update and Last Re-Hash under the table.
  • To drop a removed or changed card, each address book's sync token and, per card, the hashes it gave are saved with the contacts (the card's iCloud name only, never its contents).
  • The Contacts and Dry Run logs always scroll all the way to the newest line (it could be cut off at the bottom).

Build 489

  • Accounts: Last Connection is the last time an account’s credentials signed in successfully for anything: Test Connection, Test, Contacts Refresh or Re-Hash, Dry Run, or the Review pages.

Build 488

  • Review Blocked and Review Junk read every iCloud account’s Junk and Trash live (read-only, headers only) when they open and on Refresh; Mail doesn’t need to be open. Contacts are the Contacts page’s hashed iCloud contacts (until they’ve been read, nothing is listed). An account menu (All Accounts or one) is next to the filters.
  • For safety, every Review action that worked through Mail is off for now (Delete Selected, Delete Permanently, Move to Inbox, Open in Mail, moving a newly blocked sender’s mail): the listed messages are iCloud’s, not Mail’s. Block Sender and Block Domain still update the lists.

Build 487

  • Sweep’s Dry Run reads each mailbox 500 messages at a time and drops each batch once it’s counted, so memory stays the same however big a mailbox is (only From, Subject, flags and the received date are ever fetched). Messages Sweep would leave alone are listed only when Verbose is on as the run starts. iCloud’s junk marks ($Junk, $NotJunk) are noted.
  • Dry Run calls out conflicts, once per sender: a contact whose address or domain is blocked, a blocked sender whose domain is allowed, or a domain on both lists, with the rule Sweep follows. The table has a Conflicts row.

Build 486

  • Sweep: after a Dry Run, the table shows what it found in each mailbox (Checked, Unread, From Contacts, From Blocked Senders, From Blocked Domains, From Allowed Domains, Other Junk), for All Accounts or one account (menu under the table); what Sweep would change is only in the log. The log’s Verbose checkbox shows every message checked; off, only the messages Sweep would change (and the run’s steps and totals).

Build 485

  • Sweep: the Sweep button is off while Sweep is rebuilt for iCloud Mail. Dry Run reads every account’s Inbox, Junk and Trash (opened read-only; headers fetched without marking anything read), applies Sweep’s rules (blocked senders, contacts, Allowed and Blocked Domains, other junk) and logs every message (mailbox, UID, date, read state, sender, subject), how it was judged and why, and what Sweep would do, with totals per mailbox and for every account. Nothing is changed. The log has Copy and Clear.

Build 483

  • Blocked Senders: Clear is at the top and acts on the source chosen in the menu (every source, Mail Shepherd, or one import), asking first; Import… is at the bottom right of the list.
  • Blocked Domains and Allowed Domains use the contacts read on the Contacts page (from the iCloud accounts) instead of the Mac’s Contacts; until they’ve been read, the pages say to Refresh there. Shared providers (gmail.com, aol.com…) are still never offered.

Build 482

  • Blocked Senders: one Source column (“Mail Shepherd” for senders blocked in the app, or the import’s name) and a source menu (All Sources, Mail Shepherd, each import). Import… asks for a Source Name, then opens Mail’s blocked senders file (in Library › Preferences) or any other file; each import is read again before a Sweep under its name. Imported addresses are cleaned and checked like contacts’. Sample files to test with are in Samples/Blocked Sender Imports.
  • Contacts: the log has a “Contacts Refresh Log” header with its copy and clear (x) buttons, clear of the scroll bar.

Build 481

  • Contacts: Clear All (asks first); a menu to show All Accounts or one account; Search Domains filters the table. The summary line at the top is gone. The log has Copy and Clear, and Refresh and Re-Hash clear it before they start.
  • Accounts: removing an account (or changing its address) removes its contacts too.

Build 480

  • Contacts: every address is cleaned the way senders are (the address inside “Name <…>”, no stray quotes, brackets or “mailto:”, lowercased) and checked before it’s hashed or saved: the domain may only have letters, digits, hyphens and dots, and the name only the characters email allows. Anything else is skipped and counted in the log (never shown). iCloud sends whole contact cards even though Mail Shepherd asks for the email field only, so each card is handled as soon as it’s read: its email addresses are taken and the rest of the card is dropped at once; the log says so (field names only). Replies over 64 MB are refused, and the XML reader never follows external references.

Build 478

  • Contacts: Refresh reads the contacts of every account on the Accounts page from iCloud (CardDAV, contacts.icloud.com, with the account’s app-specific password). Each email address is kept only as a keyed one-way hash (HMAC-SHA256; the key is in this Mac’s keychain), with its domain and its account. Re-Hash makes a new key and reads every account again. A table shows each contact’s account, hashed email and domain, and a small log at the bottom shows what Refresh and Re-Hash did. (Sweep still uses the Mac’s Contacts for now.)
  • Accounts: no line beside +; the … button is as tall as Test.

Build 476

  • Sidebar: the first section is Setup: Settings (was Setup), Accounts (new, with the @ icon), Contacts, Blocked Senders, Blocked Domains, Allowed Domains.
  • Accounts: the iCloud accounts table moved to its own page. Each row has Test (signs in with the saved password; Status shows a spinner, then a green check or an orange warning that says why on hover, and failures go to the Action Log) and … (edit, with Delete; double-clicking the row does the same). + is at the bottom left of the list.
  • Settings: just Open at Login, without the icon, “(optional)” or description.
  • Messages about Contacts access point to the Contacts page; Setup’s warning opens the page with the problem.

Build 475

  • Setup: Open at Login is first, then iCloud Accounts. The Contacts row is gone: Mail Shepherd asks for Contacts access at launch (macOS asks once).
  • Sidebar: a new Contacts page under Get Started, after Setup (TBD: what's been imported from contacts, and managing it). When Contacts access is off, it says so, with Open Settings.

Build 474

  • Setup: the Edit iCloud Account sheet fills in the account’s saved password from the keychain (as dots), so Test Connection can run again without pasting it; pasting a new one replaces it.

Build 474

  • Setup: Edit… fills in the account’s saved password, so Test Connection can run again right away (Save then updates Last Connection).

Build 472

  • Setup: iCloud Accounts is a table (Email, Last Connection, Status) with + next to the title to add an account and Edit… on each row (or click the row); Delete is in the Edit sheet. Status is Connected, Not Tested or Password Missing.
  • Sidebar: Blocked Senders, Blocked Domains and Allowed Domains are under Get Started, after Setup (the Lists heading is gone); Back and Next and the View menu follow the new order.
  • Setup: Mail’s Blocked List is gone from Setup; importing is optional, and Sweep no longer waits for it (imported senders are kept).

Build 471

  • Setup: iCloud Accounts is a list: Add Account…, and for each account Update… (Reconnect… when its password is missing) and a remove button (asks first). Test Connection now signs in to iCloud Mail (imap.mail.me.com) and lists its mailboxes; Save is enabled only after it passes. Passwords are kept in this Mac’s keychain only (not synced). An account saved by earlier builds appears on the list. The same name at @icloud.com, @me.com and @mac.com counts as one account.
  • Setup: the Mail Automation row is gone (Sweep still asks macOS for it the first time it runs), as are the website version’s Accessibility and Full Disk Access rows.

Build 468

  • One app: every build is the sandboxed App Store app (bundle ID ai.take66.MailShepherd.appstore) with the daytime icon. The website build is exactly the same app, plus Check for Updates. The first time it launches, a website 2.0 user's settings and Action Log come along (blocked lists are already shared).

Build 465

  • Setup: the hints under the buttons no longer repeat the button ("To turn it on, click Turn On."); they only say what isn't obvious, like where to look in Settings.

Build 457

  • Automate: a Sweep’s list of changes shows each message once, with all its changes together (such as “Blocked Domain, Marked Read”), and counts messages.
  • The version from take66.ai is 2.0 again, the same as the App Store edition; the two keep sharing build numbers. (Build 454 went to testers as 3.0.)

Build 454

  • The sidebar always opens at its full width, including the first time Mail Shepherd opens (it could open too narrow).
  • Help → Try Mail Shepherd with Sample Mail reopens Mail Shepherd with made-up mail, lists and results, to try every page without touching Mail. A bar above each page says it’s sample mail, with Quit Sample Mail, which reopens it as usual. It keeps its own settings, so it never changes yours. Sweep and Delete Selected work on the sample mail: a Sweep shows fresh results, and deleted (or, in the App Store edition, flagged) messages leave the list, with Action Log entries.
  • Version 3.0 (no more “beta”). The App Store edition is 2.0, with the same build numbers.
  • Review Blocked and Review Junk no longer make macOS ask for Mail access as soon as they open. Until Mail Shepherd may control Mail, their controls are off and a warning icon explains why, with Ask for Permission (or Open Settings, once refused) and Open Setup.
  • The Contacts permission prompt is one short sentence: “Mail Shepherd uses your contacts so their mail is never treated as junk or blocked.”
  • Review actions find a message in Junk or Trash by reading each account’s mailbox’s IDs in one request and taking the message at that position, instead of searching Trash, which could take 15 seconds or more per message in a large Trash (flagging two messages and selecting them took about two minutes).
  • Delete’s confirmation (Delete Selected and Delete Permanently) has Don’t show this message again. Holding Shift, Control, Option or Command as you click Delete shows it anyway.
  • Blocked Senders has Clear Mail Shepherd’s List (asks first), for testing: it empties Mail Shepherd’s own Blocked Senders without touching Mail’s list.
  • A message Mail reports as deleted (waiting to be erased) is logged once as “Skipped: already deleted”, not again by every Auto-Sweep while it stays that way.
  • Automate: while Setup needs attention, the Auto-Sweep menu is off, with a warning icon that explains and opens Setup.

Was this page helpful? Tell us.