Releases: openclaw/imsg
Releases · openclaw/imsg
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.
v0.8.2
v0.8.1
Release Packaging
- fix: include the IMCore bridge helper dylib in macOS release archives and
search Homebrew install paths for brew-installed advanced features (#111,
thanks @omarshahine).
Messaging
- fix: route JSON-RPC
sendthrough the IMCore bridge when it is available,
with automatic AppleScript fallback and an explicittransportoverride
(#108). - fix: resolve JSON-RPC
typingdirect recipients against existing chat GUIDs
before synthesizing aniMessage/SMSprefix (#109). - fix: stage bridge attachments before dylib sends and let
send-attachment --transport autofall back to AppleScript for normal files
when the bridge is unavailable (#110, thanks @omarshahine).
v0.8.0
Linux Read-Only Preview
- feat: add a Linux read-only core build with fixture-backed tests and GitHub
CI coverage for copied Messages databases. - build: add Linux release archive packaging for
imsg-linux-x86_64.tar.gz. - docs: document Linux as read-only support for existing copied Messages
databases.
Message Decoding
- fix: strip printable typedstream length bytes from recovered
attributedBody
text for 32-126 byte messages (#107, thanks @SagarSDagdu).
v0.7.3
Private API Bridge
- fix: restore macOS 26 bridge sends, replies, tapbacks, typing/read RPC, and
chat/group lifecycle RPC methods after the BlueBubbles-inspired bridge port
regressed on Tahoe (#101, thanks @omarshahine). - fix: stage bridge attachments with the target chat GUID and fall back to the
modern IMDPersistence save API when the legacy persistent-path API returns
nil (#102, #103, thanks @omarshahine).
Security
- fix: harden bridge IPC queue directories and attachment paths against
symlink traversal while preserving trusted macOS system aliases like/tmp
(#105, thanks @omarshahine).
v0.7.2
v0.7.1
v0.7.0
Private API Bridge
- feat: port the BlueBubbles-inspired private-API bridge surface for rich sends,
message mutation, chat management, account/nickname introspection, and live
bridge events; add local DB search and v2 concurrent bridge IPC (#100, thanks
@omarshahine). - fix: route default bridge calls over v2 IPC when available and reject
unsupportedchat-create --service SMSrequests instead of reporting a
service that was not applied. - fix: decode typedstream attributed bodies with
0x81/0x82length prefixes
so long fallback message text is preserved in history and watch output (#99,
thanks @SagarSDagdu).
Docs And CI
- docs: publish the per-feature docs site at
imsg.shand add
syntax-highlighted code examples. - ci: update GitHub Actions for the Node 24 runtime and quote workflow
architecture lookup.
v0.6.0
More Reliable Live Streams And History
- fix: keep
imsg watchstreams alive with a lightweight polling fallback when macOS misses filesystem events (#78). - fix: dedupe URL preview balloon messages in
watchwithout dropping similar messages from other chats or older database schemas (#64, thanks @lesaai). - fix: decode UTF-16LE BOM attributed bodies so plain-text history output recovers messages whose
textcolumn is empty (#91, thanks @clawbunny). - fix: speed up JSON history output by batching attachment and reaction metadata lookups (#81, thanks @kacy).
- fix: speed up chat listing by using
chat_message_join.message_datewhen Messages provides it (#76, thanks @tmad4000). - docs: clarify stale Full Disk Access grants, Terminal.app permissions, and watch fallback polling requirements (#28, #32, #33, #46, #83, thanks @wangran870414).
Better Chat, Group, And Account Diagnostics
- feat: add
imsg group --chat-id <id>to inspect a chat's identifier, GUID, service, participants, account metadata, and group/direct status (#88, thanks @mryanb). - feat: resolve Contacts names in
chats,history,watch, and direct sends while preserving raw handles for automation (#75, #77, thanks @regaw-leinad and @jsindy). - feat: expose read-only account routing hints (
account_id,account_login,last_addressed_handle) for multi-number diagnostics (#18). - fix: include group metadata in CLI JSON history/watch output, not just RPC payloads (#57, thanks @clawbunny).
Sending, RPC, And Automation Fixes
- fix: return best-effort sent message
idandguidfrom RPCsendresponses when the row can be observed after Messages accepts the send (#85). - fix: expose RPC watch debounce and default it to 500ms to reduce outbound echo races (#72, #80).
- fix: gate RPC watch reaction metadata on
include_reactions, notattachments(#82). - fix: confirm standard tapback reaction selection in Messages automation before reporting success (#53, thanks @PeterRosdahl).
- fix: reject unsupported custom emoji reaction sends instead of taking a no-op AppleScript path (#55).
- fix: detect Tahoe group-send ghost rows and fail instead of reporting false success (#90, thanks @loop).
- docs: document standard tapback sending and watch reaction events (#66, thanks @safaaleigh).
Attachments, Completions, And Install Polish
- feat: optionally report model-compatible converted receive-side attachment files for CAF audio and GIF images (#73, thanks @mfzeidan).
- feat: add shell completions and an LLM-oriented command reference generator (
imsg completions bash|zsh|fish|llm) (#21, thanks @bdmorin). - fix: publish universal macOS release binaries for Homebrew installs (#68, #79).
- docs: document the Homebrew install path in the README (#61, thanks @joshuayoes).
- docs: clarify that
send --filesupports regular file and audio attachments through Messages.app (#35, thanks @rock19). - docs: add a local release helper for dispatching Homebrew tap updates (#97, thanks @dinakars777).
Advanced IMCore / Tahoe Notes
- feat: add advanced IMCore controls for
status,launch,read, and typing diagnostics. - fix: normalize IMCore typing chat lookup across
iMessage,SMS, andanyprefixes (#51, #54, #56, #58). - fix: report macOS 26/Tahoe IMCore typing entitlement failures as advanced-feature setup errors instead of misleading chat lookup failures (#60).
- docs: document macOS 26 advanced IMCore injection, library-validation, and private-entitlement limits (#60).
Internal Safety
- refactor: centralize Messages schema detection, row decoding, query assembly, typed row IDs, and attachment/reaction query paths behind smaller
MessageStoreextensions. - test: expand release packaging, CLI metadata, schema-compatibility, JSON newline, stdout capture, and live-read coverage.
v0.5.0
- feat: add typing indicator command + RPC methods with stricter validation (#41, thanks @kohoj)
- feat:
--reactionsflag forwatchcommand to include tapback events in stream (#26) - feat:
imsg reactcommand to send tapback reactions via UI automation (#24) - feat: reaction events include
is_reaction,reaction_type,reaction_emoji,is_reaction_add,reacted_to_guidfields - feat: add
include_reactionstoggle towatch.subscribeRPC and extend RPC reaction metadata fields - feat: include
thread_originator_guidin message output (#39, thanks @ruthmade) - feat: expose
destination_caller_idin message output (#29, thanks @commander-alexander) - fix: apply history filters before limit (#20, thanks @tommybananas)
- fix: flush watch output immediately when stdout is buffered (#43, thanks @ccaum)
- fix: prefer handle sends when chat identifier is a direct handle
- fix: detect groups from
;+;prefix in guid/identifier for RPC payloads (#42, thanks @shivshil) - fix: harden
reactAppleScript execution and tighten group-handle detection paths - refactor: consolidate schema detection, stdout writing, and message/RPC payload mapping paths
- test: split command test suites by domain and align group-handle expectations
- docs: update changelog entries as typing/reaction work landed
- chore: bump version marker to
0.5.0