Releases: openclaw/imsg
Releases · openclaw/imsg
Release list
v0.13.1
Highlights
- Attachment conversion now times out safely and kills stalled converter process trees instead of blocking metadata resolution indefinitely.
- Linux read-only builds work again after the converter hardening, with current Commander and phone-number metadata dependencies.
Attachments
- fix: bound external attachment converters (ffmpeg) to a 60-second monotonic timeout with full process-tree cleanup so hung conversions cannot block metadata resolution forever (#176, thanks @SebTardif).
Linux
- fix: restore Linux builds by importing Glibc instead of Darwin on supported Linux hosts (#182, thanks @omarshahine).
Dependencies
- chore: update Commander to 0.2.4 and PhoneNumberKit to 5.0.5, including metadata/9.0.35 (#183).
v0.13.0
Read Commands
- feat: expose per-chat unread counts and inbound message read timestamps across JSON, JSON-RPC, search, history, and watch, with an unread-only chat filter (#160, #170, thanks @chiedo).
- feat: add snapshot-consistent logical message statistics through
imsg statsandmessages.stats, with strict chat scoping, timezone-aware date buckets, and deduplicated optional media totals (#161, thanks @omarshahine). - feat: inspect future Send Later rows read-only through
imsg scheduled listandmessages.scheduled, without requiring the private IMCore bridge (#163, thanks @omarshahine). - feat: inspect local chat-background metadata, cache presence, and newest set/clear event through
imsg chat-background status, without mutating the chat or requiring the private bridge (#167, thanks @omarshahine). - fix: coalesce consecutive link-preview rows from one text send so history and unread chat counts expose one logical message.
Packaging
- fix: isolate universal builds per architecture and consume SwiftPM's reported product paths so stale slices cannot silently ship older CLI code.
Native Polls
- fix: match native poll vote envelopes, participant handles, and summary metadata so votes render participant markers and correct notifications (#162, thanks @omarshahine).
- feat: add selective native poll unvoting through CLI and JSON-RPC while preserving the sender's other selected options (#162, thanks @omarshahine).
Advanced IMCore
- feat: inspect and explicitly share Apple Messages Name & Photo through
imsg name-photoand compatible contact RPC methods, while fixing bridge nickname lookup to use the current controller and handle APIs (thanks @omarshahine). - feat: add bridge-backed Apple URL preview sends through
send-rich --urlandsend.rich, with an eight-second out-of-process preparation deadline, capped image decode/staging, and metadata-only fallback (#165, thanks @omarshahine). - feat: send standalone or message-attached native stickers through
imsg send-stickerandsend.sticker, with bounded image validation and secure staging (#164, thanks @omarshahine). - fix: canonicalize securely staged attachment paths when Messages attachments are relocated through a symlink, and find nested threaded-reply items for edit, unsend, delete, and notify operations.
JSON-RPC
- fix: atomically claim bridge RPC inbox files before dispatch so multiple injected consumers cannot deliver one logical send twice (#158).
v0.12.3
Native Polls
- fix: show native poll questions by sending a plain caption after created polls and backfilling empty inbound questions from clean native caption rows (#155, thanks @omarshahine).
Packaging
- fix: include and validate an arm64e slice in the injected bridge helper for macOS 26 Messages compatibility (#156, thanks @omarshahine).
v0.12.2
Native Polls
- fix: resolve native poll vote option text from Add Choice update rows when votes still reference the original poll message (#152, #153, thanks @veteranbv).
- fix: restore native poll vote delivery on macOS 26.4 by persisting the Polls balloon and payload across the responding message objects (#150, thanks @omarshahine).
v0.12.1
v0.12.0
Send
- fix: thread attributed-text formatting through the RPC
sendbridge path, not justsend-rich, so direct/handle sends render bold/italic/etc. on macOS 15+.handleSendnow forwards format ranges to the bridge, acceptingformatting(the key OpenClaw'smessagetool emits) alongsidetext_formatting/textFormatting(#143, thanks @omarshahine). - fix: honor
reply_toaliases on RPCsendfor text and captioned attachments, and fail closed instead of silently delivering an unthreaded AppleScript message when the bridge is unavailable (#144, #145, thanks @TurboTheTurtle and @dkattan).
Native Polls
- feat: add bridge-backed native poll voting through
imsg poll vote,poll.vote, andmessages.poll.vote(#148, thanks @omarshahine).
Local Lookups
- fix: include the Contacts usage description in packaged binaries and distinguish unavailable Contacts access from a local address with no match (#147, thanks @cloopadoop).
Advanced IMCore
- fix: restore
chat-deleteon macOS 26 by falling back fromdeleteChat:toIMChatRegistry._chat_remove:, while failing closed when neither selector is available (#146, #149, thanks @alexzhues).
v0.11.1
Read Commands
- fix: let
chatsandhistoryrun without prompting for Contacts when permission is still undecided, while preserving Contacts prompts for explicit name-resolution flows (#135, thanks @cemendes).
JSON Output
- feat: expose raw Messages
balloon_bundle_idin message JSON/RPC payloads so consumers can recognize URL-preview rows without parsing text (#137, thanks @omarshahine). - fix: coalesce Apple URL-preview split-send rows into one logical message across history, search, and watch, with
url_previewmetadata when the preview row is folded into the text row (#141, thanks @omarshahine).
Advanced IMCore
- fix: defer injected bridge bootstrap until after Messages startup so macOS 26 dyld constructor ordering cannot touch ObjC/Foundation/IMCore before the process is ready (#138, thanks @omarshahine).
- fix: let bridge-backed sends and initial chat creation wait longer for slow Messages private-send completions while keeping short timeouts for probe and mutation calls (#139, thanks @omarshahine).
v0.11.0
Send
- feat: add SIP-free local iMessage/SMS service detection for direct
send --service auto, with text-only iMessage-to-SMS fallback that never overrides explicit--servicechoices (#132, thanks @ranaroussi). - fix: keep direct
send --service autousable without Full Disk Access by treating local Messages history lookup as best-effort for direct recipients.
Local Lookups
- feat: add
--localmodes foraccount,whois, andnicknameso common introspection can read local history or Contacts without launching the IMCore bridge (#132, thanks @ranaroussi).
v0.10.0
Watch
- fix: re-arm
watch/RPC filesystem sources after SQLite rotateschat.db-walorchat.db-shm, so busy iCloud-synced databases keep emitting inbound rows (#126). - fix: retry live watch rows whose chat metadata has not resolved yet, then drop them fail-closed instead of emitting
chat_id=0direct-message-shaped payloads (#118).
Native Polls
- feat: add native Apple Messages poll decoding and bridge-backed
imsg poll send/poll.sendsupport, including threaded poll replies and vote readback (#125, thanks @veteranbv).
JSON-RPC
- fix: return chat GUID, message GUID, and service identity from JSON-RPC send/create responses when observable (#119, thanks @svetly).
- feat: expose
handles.checkfor bridge-backed iMessage handle availability checks (#120, thanks @svetly). - feat: expose
message.send_statusto query outbound message delivery state by GUID (#121, thanks @svetly).
v0.9.0
JSON Output
- feat: include
reply_to_textandreply_to_senderon message payloads
emitted byhistory,search,watch, andrpcso consumers can quote
the parent of a threaded reply (or non-reaction association) without a
follow-up chat.db lookup. The parent is resolved by joining
thread_originator_guidor the non-reactionassociated_message_guid
back to the message table; absent parents leave the fields nil (#115, thanks
@omarshahine).
JSON-RPC
- feat: expose bridge-backed message RPC methods for rich sends, attachments, tapbacks, edits, unsends, deletes, and notify-anyways; include the CLI version in
imsg status --jsonso callers can gate newer RPC action surfaces.
Private API Bridge
- fix: support threaded attachment replies via
send-rich --fileand
send-attachment --reply-to, including the macOS 26 attachment staging
fallback (#113, #114, thanks @omarshahine). - fix:
editnow applies on macOS 14+ instead of silently no-opping by passing
the backingIMMessageItemand attributed compatibility text to IMCore (#116,
thanks @zshawauxlol).
Attachments
- fix: avoid hanging attachment metadata conversion when
ffmpegemits enough output to fill stdout or stderr pipes.