You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
macOS 27: Pin is not in the Conversation menu, and Hide Alerts can't be verified (plistlib fails on upiExpiryDate) #132
Tested #122 on macOS 27.0.1 against c4ff570, after reinstalling the Mac bridge (checksums match the repo). The test was a read 1:1 SMS conversation, run through conversationAct() in collector.ts, the same call the menu item makes. Both halves fail, for different reasons. Both fail closed: nothing was left pinned or muted.
1. Pin / Unpin: the menu item does not exist on 27
pin {"ok":false,"error":"imsg-read: 'Pin' was not available"} 4539 ms
Here is Messages' Conversation menu with that DM selected:
Show Details, Show Contact Card, -, Mark as Unread, Mark All as Read, Hide Alerts, -,
Block Person…, Delete Conversation…, -, Send Mail…, Send File…, -, Share My Screen,
Ask to Share Screen, -, FaceTime Video, FaceTime Audio, -, Call +1 (630) … Using iPhone
No Pin or Unpin there. I also searched every menu bar menu for an item containing "Pin" and found none. On 27, pinning seems to be only in the sidebar's right-click menu.
2. Hide / Show Alerts: the click happens, verification can't read the record
mute {"ok":false,"error":"imsg-read: Hide Alerts was clicked but Messages' records cannot confirm the conversation is muted"} 6932 ms
unmute {"ok":false,"error":"imsg-read: 'Show Alerts' was not available"} 4401 ms
chat_muted() returned None because alerts_flag() cannot parse chat.properties for this chat. plutil -p reads the blob without trouble:
Python 3.9's plistlib (the system python3 on this Mac) cannot read it:
File ".../plistlib.py", line 550, in _read_object
result = (datetime.datetime(2001, 1, 1) +
OverflowError: date value out of range
...
plistlib.InvalidFileException: Invalid file
upiExpiryDate is year 1, which is earlier than datetime can represent, so the whole dictionary fails to load. On this Mac, 85 of 1542 chat rows with properties contain upiExpiryDate. For each of those, alerts_flag() returns "unknown". That means muted_conversations() can never list them, and a Hide or Show Alerts on any of them can never be verified.
A fix may only need to read ignoreAlertsFlag without materialising every date, for example with a date-tolerant bplist reader, or by catching OverflowError and falling back to plutil -convert json. I haven't tried either.
One further observation I can't explain yet. After the Hide Alerts click, the blob still has no ignoreAlertsFlag, and the menu still offers "Hide Alerts", not "Show Alerts". So either the click did not take on 27 or the flag now lives somewhere else. The conversation was left with alerts on, the same as before the test.
Thank you so much, @ianswope, for testing the Pin and Hide Alerts changes from #122 on macOS 27.0.1 and for writing it up so carefully. The menu listing, the exact errors, the plistlib failure on upiExpiryDate (85 of 1542 chats), and your note that nothing was left pinned or muted all made this easy to understand. I've put it on the list to fix, covering the missing Pin item on 27 and the alerts check that can't read those chats. I really appreciate the time you put into this.
Activity
nixfred commentedon Oct 8, 2026
Thank you so much, @ianswope, for testing the Pin and Hide Alerts changes from #122 on macOS 27.0.1 and for writing it up so carefully. The menu listing, the exact errors, the plistlib failure on
upiExpiryDate(85 of 1542 chats), and your note that nothing was left pinned or muted all made this easy to understand. I've put it on the list to fix, covering the missing Pin item on 27 and the alerts check that can't read those chats. I really appreciate the time you put into this.