Implement two new CLI flags to disable downloading avatars and sticker packs during message reception, following the existing pattern of --ignore-attachments and --ignore-stories flags. Changes: - Add --ignore-avatars and --ignore-stickers flags to ReceiveCommand, DaemonCommand, and JsonRpcDispatcherCommand - Extend ReceiveConfig record with ignoreAvatars and ignoreStickers fields - Pass ignoreAvatars as explicit boolean parameter to ProfileHelper, SyncHelper, and GroupHelper methods (per maintainer feedback) - Gate avatar downloads in ProfileHelper (profile avatars), SyncHelper (contact avatars), and GroupHelper (group avatars for V1 and V2) - Gate sticker pack downloads in IncomingMessageHandler for both direct sticker messages and sync sticker pack operations - Update handleSignalServiceDataMessage and handleSyncMessage to pass full ReceiveConfig instead of individual boolean flags - Update man page (signal-cli.1.adoc) with flag documentation - Add entries to CHANGELOG.md When these flags are set, the respective content is not downloaded during message reception. Metadata (avatar paths, sticker pack IDs) is still stored, and existing FileNotFoundException handling will surface if content is later requested but wasn't downloaded. Fixes #1903
36 KiB
Changelog
[Unreleased]
Attention: Now requires Java 25
Breaking changes
- Remove isRegistered method without parameters from Signal dbus interface, which always returned
true - Remove
sandboxvalue for --service-environment parameter, usestaginginstead - The
daemoncommand now requires at least one channel parameter (--socket,--dbus, ...) and no longer defaults to dbus
[0.13.23] - 2026-01-24
Requires libsignal-client version 0.86.12.
Added
- Add sendPollCreate, sendPollVote, sendPollTerminate commands for polls
- Add updateDevice command to set device name of linked devices
- Add --ignore-avatars flag to prevent downloading avatars
- Add --ignore-stickers flag to prevent downloading sticker packs
Changed
- Allow updating contact names from linked devices
Fixed
- Start multi account mode even if some accounts have authorization failures
[0.13.22] - 2025-11-14
Requires libsignal-client version 0.86.1.
Fixed
- Fix timeout handling for receive command
- Fix device link URI parsing for unencoded trailing =
- Adapt setPin command to server changes
[0.13.21] - 2025-10-25
Requires libsignal-client version 0.84.0.
Changed
- Add isExpirationUpdate to json message output
- Improve error message when using verify without registering before
[0.13.20] - 2025-09-23
Requires libsignal-client version 0.81.0.
Fixed
- Fix sending group message to legacy targets without group send endorsements
- Fix registration commands in daemon mode for already registered accounts (Thanks @AntonKun)
Improved
- Faster shutdown performance when using multiple accounts
[0.13.19] - 2025-09-15
Requires libsignal-client version 0.80.2.
Fixed
- Fixed hiding contacts (with
removeContact --hide) - Prevent splitting UTF-8 chars when reading message from stdin
- Handle unregistered username correctly when sending message
Changed
- Update to signal service changes, mainly new group endorsements for group sending
- Reduced frequency of updating last received timstamp on disk
- Handle missing storage manifest version correctly
- Force a group refresh when using listGroups command with groupId
[0.13.18] - 2025-07-16
Requires libsignal-client version 0.76.3.
Added
- Added
--view-onceparameter to send command to send view once images
Fixed
- Handle rate limit exception correctly when querying usernames
Improved
- Shut down when dbus daemon connection goes away unexpectedly
- In daemon mode, exit immediately if account check fails at startup
- Improve behavior when sending to devices that have no available prekeys
[0.13.17] - 2025-06-28
Requires libsignal-client version 0.76.0.
Fixed
- Fix issue when loading an older inactive group
- Close attachment input streams after upload
- Fix storage sync behavior with unhandled fields
Changed
- Improve behavior when pin data doesn't exist on the server
[0.13.16] - 2025-06-07
Requires libsignal-client version 0.73.2.
Changed
- Ensure every sent message gets a unique timestamp
[0.13.15] - 2025-05-08
Requires libsignal-client version 0.70.0.
Fixed
- Fix native access warning with Java 24
- Fix storage sync loop due to old removed e164 field
Changed
- Increased compatibility of native build with older/virtual CPUs
[0.13.14] - 2025-04-06
Requires libsignal-client version 0.68.1.
Fixed
- Fix pre key import from old data files
Changed
- Use websocket connection instead of HTTP for more requests
- Improve handling of messages with decryption error
[0.13.13] - 2025-02-28
Requires libsignal-client version 0.66.2.
Added
- Allow setting nickname and note with
updateContactcommand
Fixed
- Fix syncing nickname, note and expiration timer
- Fix check for registered users with a proxy
- Improve handling of storage records not yet supported by signal-cli
- Fix contact sync for networks requiring proxy
[0.13.12] - 2025-01-18
Requires libsignal-client version 0.65.2.
Fixed
- Fix sync of contact nick name
- Fix incorrectly marking recipients as unregistered after sync
- Fix cause of database deadlock (Thanks @dukhaSlayer)
- Fix parsing of account query param in events http endpoint
Changed
- Enable sqlite WAL journal_mode for improved performance
[0.13.11] - 2024-12-26
Requires libsignal-client version 0.64.0.
Fixed
- Fix issue with receiving messages that have an invalid destination
[0.13.10] - 2024-11-30
Requires libsignal-client version 0.62.0.
Fixed
- Fix receiving some unusual contact sync messages
- Fix receiving expiration timer updates
Improved
- Add support for new storage encryption scheme
[0.13.9] - 2024-10-28
Fixed
- Fix verify command
[0.13.8] - 2024-10-26
Requires libsignal-client version 0.58.2
Fixed
- Fix sending large text messages
- Fix setting message expiration timer with recent Signal apps
Improved
- Add group name and timestamps on json message (Thanks @jailson-dias)
[0.13.7] - 2024-09-28
Requires libsignal-client version 0.58.0
Fixed
- Fix unnecessary log output
- Fix issue with CDSI sync with invalid token
[0.13.6] - 2024-09-08
Requires libsignal-client version 0.56.0
Improved
- Send sync message to linked devices when sending read/viewed receipts
Fixed
- Fix issue with sending to some groups
- Fix CDSI sync if no token is stored
- Fix possible db dead lock during storage sync
[0.13.5] - 2024-07-25
Requires libsignal-client version 0.52.2
Fixed
- Fixed device linking, due to new feature flag
[0.13.4] - 2024-06-06
Attention: Now requires libsignal-client version 0.47.0
Improved
- Improve username update error message
- Update groups when using listGroups command
Fixed
- Update libsignal to fix graalvm native startup
- Fix issue with saving username link
- Fix sendMessageRequestResponse type parameter parsing in JSON RPC mode
- Fix getUserStatus command with only username parameter
[0.13.3] - 2024-04-19
Attention: Now requires libsignal-client version 0.44.0
Added
- Support for reading contact nickname and notes
- Add
--internaland--detailedparameters tolistContactscommand
Fixed
- Fix issue with sending messages when a new session is created
[0.13.2] - 2024-03-23
Attention: Now requires libsignal-client version 0.40.1
Added
- Add
--usernameparameter togetUserStatuscommand
Fixed
- Fixed setting and retrieving PIN after server changes
[0.13.1] - 2024-02-27
Added
- Add
--reregisterparameter to force registration of an already registered account
Fixed
- Fixed rare issue with duplicate PNIs during migration
Improved
- Show information when requesting voice verification without prior SMS verification
- Username can now be set with an explicit discriminator (e.g. testname.000)
- Improve behavior when PNI prekeys upload fails
- Improve
submitRateLimitChallengeerror message if captcha is rejected by server - Only retry messages after an identity was trusted
Changed
- Default number sharing to NOBODY, to match the official apps behavior.
[0.13.0] - 2024-02-18
Attention: Now requires Java 21 and libsignal-client version 0.39.2
Breaking changes
- Sending to the self number (+XXXX) now behaves the same as the
--note-to-selfparameter. To get the previous behavior with notification, the--notify-selfparameter can be added.
Added
- New
--hiddenparameter forremoveContactcommand - New
--notify-selfparameter forsendcommand, for sending a non-sync message when self is part of the recipients or groups. - New
--unrestricted-unidentified-sender,--discoverable-by-number,--number-sharing,--usernameand--delete-usernameparameter forupdateAccountcommand - New
--bus-nameparameter fordaemoncommand to use another D-Bus bus name - New
getAvatarandgetStickercommands to get avatar and sticker images - New
sendMessageRequestResponsecommand to accept/delete message requests
Fixed
- Improve issue with stale prekeys and receiving messages to PNI address
Improved
- Better shutdown handling after Ctrl+C and SIGTERM
- Implemented full remote storage sync. Provides better contact and settings sync for linked devices.
listContactsdoesn't list unregistered users anymore
[0.12.8] - 2024-02-06
Fixes
- Update user agent
[0.12.7] - 2023-12-15
Attention: Now requires native libsignal-client version 0.36.1
Fixes
- Fix linking to an existing account
[0.12.6] - 2023-12-11
Fixes
- Fix linking to an existing account
- Fix migration from old account data
[0.12.5] - 2023-11-21
Fixes
- Fix issue with joining groups by group link for new accounts
- Fix receiving address of shared contact
- Fix receiving sync edit messages in groups
Changed
- Create safety numbers based on ACI instead of phone number
[0.12.4] - 2023-10-22
Fixes
- Prevent ConcurrentModificationException
- Update captcha help text
[0.12.3] - 2023-10-17
Added
- Added
startChangeNumberandfinishChangeNumbercommands to switch to another phone number - Added
--quote-attachmentparameter tosendcommand - Added support for scannable safety numbers based on serviceId
- Added
EditMessageReceivedsignal for D-Bus interface - Added new exit code
5for rate limit failures - Added full CDSI refresh to get current ACI/PNIs for known numbers regularly
Fixed
- Correctly respond with delivery receipts for edit messages
Changed
- JSON-RPC requests are now executed in parallel.
Clients should make sure to use the
idfield to get the correct response for a request.
[0.12.2] - 2023-09-30
Attention: Now requires native libsignal-client version 0.32.1
Added
- Added
--receive-modeparameter forjsonRpccommand - Add
libsignal_client_pathbuild property to override libsignal-client jar file
Changed
jsonRpccommand now supports multi-account mode including registering and linking
[0.12.1] - 2023-08-26
Added
- New
addStickerPackcommand
Fixed
- Fixed some issues with upgrading from older accounts
Changed
- Reverted receive notification in JSON-RPC to old format, only explicit subscriptions should use the new format
[0.12.0] - 2023-08-11
Attention: Now requires native libsignal-client version 0.30.0
Breaking changes
- Adapt receive subscription notification in JSON-RPC to have payload in result field
- Before:
{"jsonrpc":"2.0","method":"receive","params":{"envelope":{ ... },"account":"+XXX","subscription":0}} - After:
{"jsonrpc":"2.0","method":"receive","params":{"subscription":0,"result":{"envelope":{ ... },"account":"+XXX"}}}
- Before:
Added
- Manage identities via DBus (Thanks @bublath)
- Added support for SVR2 PINs
Fixed
- Fixed finishLink/receive/register/verify commands for JSON-RPC
- Update to the latest libsignal to fix various issues
[0.11.11] - 2023-05-24
Attention: Now requires native libsignal-client version 0.25.0
Added
- New
--text-styleand--quote-text-styleflags forsendcommand
Fixed
- Fixed migration of older account files
- Fix deleting old unregistered recipient
[0.11.10] - 2023-05-11
Attention: Now requires native libsignal-client version 0.23.1
Added
- Support for receiving and sending edit messages with
--edit-timestamp
[0.11.9.1] - 2023-04-23
Fixed
- Fix build with Java 20
[0.11.9] - 2023-04-22
Fixed
- Workaround issue with linking to newer app versions
[0.11.8] - 2023-04-05
Added
- Added file attachment attributes to JSON output (Thanks @signals-from-outer-space)
Fixed
- Scrub E164 number from dbus paths
- Fix sending large text messages to multiple recipient
- Fix deleting old group in dbus mode
- Fix issue with unknown identity serviceId
Improved
- Relaxed Content-Type check in http daemon mode (Thanks @cedb)
[0.11.7] - 2023-02-19
Attention: Now requires native libsignal-client version 0.22.0
Fixed
- Fix issue with missing pni identity key
- Fix graalvm sqlite issue (Thanks @Marvin A. Ruder)
- Fix issue with forgetting recipient
Changed
- Allow JSON-RPC commands without account param if only one account exists
[0.11.6] - 2022-12-18
Added
- Allow using data URIs for updateGroup/updateProfile
- New alive check endpoint for http daemon (Thanks @ced-b)
Fixed
- Registration with voice verification now works if no system locale is set
- Fixed retrieving attachments in JSON RPC mode (Thanks @ced-b)
[0.11.5.1] - 2022-11-09
Fixed
- Fix updating from older signal-cli version
[0.11.5] - 2022-11-07
Attention: Now requires native libsignal-client version 0.21.1
Added
- Add
--httpflag todaemoncommand to provide a JSON-RPC http endpoint (/api/v1/rpc). (Thanks @ced-b) - The
receivemethod is now also available in JSON-RPC daemon mode, for polling new messages. - Add
getAttachmentcommand to get attachment file base64 encoded. (Thanks @ced-b) - Add
--disable-send-logto disable the message send log. - Add
--storytosendReactioncommand, to react to stories. - Add
--story-timestampand--story-authortosendcommand, to reply to stories. - Add
--max-messagestoreceivecommand, to only receive a certain number of messages.
Changed
- Send long text messages as attachment instead. This matches the behavior of the official clients.
- Store attachments with a file extension, for common file types.
[0.11.4] - 2022-10-19
Added
- Approve/Refuse group join requests, using same interface as adding/removing members
- Add --ignore-stories flag to prevent receiving story messages
Fixed
- Fixed issue with receiving messages that can't be decrypted
- Do not discard incoming group join messages
Improved
- Add code to receive new PNI after change number
[0.11.3] - 2022-10-07
Fixed
- Fix sending messages to groups (in non-daemon mode)
- Fix updating from older signal-cli version
- Fix issue with handling decryption error message
- Fix graalvm native build (Thanks @bentolor)
[0.11.2] - 2022-10-06
Fixed
- Update user agent version to work with new Signal-Server check
[0.11.1] - 2022-10-05
Fixed
- Fix sending group messages
- Fix store migration issue on Windows
- Fix building fat jars
[0.11.0] - 2022-10-02
Attention: Now requires native libsignal-client version 0.20.0
Breaking changes
- Changed meaning of
-vflag from--versionto--verbose. So now extended logging can be achieved with-vv. - Remove deprecated fallback to reading from stdin if no message body is given.
To read a message from stdin, use the
--message-from-stdinflag.
Added
- Migrate PIN to new KBS enclave when Signal updates it
- Add
--scrub-logflag to remove possibly sensitive information from the log - Add
sendPaymentNotificationdbus method
Fixed
- Fix an issue where messages were sent without sender phone number
Changed
- Store data except base account data in sqlite database
- Use new CDSI for contact discovery in compat mode
[0.10.11] - 2022-08-17
Attention: Now requires native libsignal-client version 0.19.3
Added
- Output content of received story messages
[0.10.10] - 2022-07-30
Attention: Now requires native libsignal-client version 0.18.1
Fixed
- Fix setPin/removePin commands which broke due to server side changes
- Workaround GraalVM 22.2.0 issue with daemon connection
[0.10.9] - 2022-07-16
Changed
- updateAccount command checks self number and PNI after updating account attributes
Fixed
- Fixed small issue with syncing contacts from storage
- Fixed issue with opening older account files
[0.10.8] - 2022-06-13
Added
- Attachments can now be given as data: URIs with base64 data instead of just file paths (Thanks @KevinRoebert)
versioncommand can now be used on the commandline, in addition to the--versionflag. In the next version the current short form-vwill change its meaning to--verbose!
Improved
- An account can now be registered on both LIVE and STAGING environment in the same config directory.
- Logging output for registering has been extended.
[0.10.7] - 2022-05-29
Added
- Added profile information to
listContactscommand output - Added filter flags for
listContactscommand - New
sendPaymentNotificationcommand to send payment receipt blobs - New
--given-nameand--family-nameparameters forupdateContactcommand - Implement sending link previews with
--preview-url,--preview-titleparameters for thesendcommand - New
--send-read-receiptsparameter forreceiveanddaemoncommands for automatically marking received messages as read
Fixed
- Issue with endless growing
pre-keys-pnidata directory
[0.10.6] - 2022-05-19
Attention: Now requires native libsignal-client version 0.17
Added
- Check if account is used on the environment it was registered (live or staging)
- New command
deleteLocalAccountDatato delete all local data of an unregistered account - New parameter
-gforlistGroupscommand to filter for specific groups
Fixed
- Fix deleting a recipient which has no uuid
Changed
- Show warning when sending a message and no profile name has been set. (A profile name may become mandatory in the future)
- After blocking a contact/group the profile key is now rotated
- Only update profile keys from authoritative group changes
[0.10.5] - 2022-04-11
Attention: Now requires native libsignal-client version 0.15
Added
- New
--ban,--unbanflags forupdateGroupcommand to ban users from joining by group link
Fixed
- Fix plain text output of blocked group ids
- Fix error output in case of rate limiting
- Fix error when creating a group with no members
- Fix adding recent Signal-Desktop versions as linked devices
[0.10.4.2] - 2022-03-17
Fixed
- Crash in json output when receiving message from untrusted identity
- Fix multi account commands for newly created accounts
[0.10.4.1] - 2022-03-02
Fixed
- Linking to current apps (which currently don't include a PNI identity yet)
- Show better error message when --target-timestamp is missing for sendReceipt
[0.10.4] - 2022-02-20
Added
- Implement support for change number as linked device
- Add
--message-from-stdinflag for send command. The current behavior of reading from stdin if the-mflag is not given, will be removed in a future version.
Changed
- Align receive timeout behavior for dbus client with cli and JSON-RPC. Timeout is reset by every incoming message
- Renamed
errorfield in json receive response toexception
Fixed
- Prevent a stale jsonrpc connection from interfering with message receiving
[0.10.3] - 2022-02-01
Added
- MessageSendLog to cache sent message for 24h. For resending messages in case the recipient fails to decrypt the message.
- New global
--log-fileparameter to write logs to a separate file. (--verbosecan be used to increase the log level)
Improved
- Better subscription handling for JSON-RPC
subscribeReceivecommand
Fixed
- Output receipt data for unsealed sender receipts again
- Fix sending message resend requests to devices that happen to have the same deviceId
[0.10.2] - 2022-01-22
Fixed
- Archive old sessions/sender keys when a recipient's identity key has changed
- Fix profile fetch with an invalid LANG variable
[0.10.1] - 2022-01-16
Added
- Send group messages with sender keys (more efficient for larger groups)
- New command
listStickerPacksto display all known sticker packs - New flag
--stickerforsendcommand to send stickers
Changed
- Improve exit code for message sending. Exit with 0 status code if the message was sent successfully to at least one recipient, otherwise exit with status code 2 or 4 (for untrusted).
- Download profiles in parallel for improved performance
--verboseflag can be specified multiple times for additional log output- Enable more security options for systemd service file
- Rename sandbox to staging environment, to match the upstream name.
Fixed
- The first incoming message after registration can now always be decrypted successfully
- Ignore decryption failures from blocked contacts and don't send a resend request.
[0.10.0] - 2021-12-11
Attention: Now requires Java 17 and libsignal-client version 0.11
Added
- The daemon command now provides a JSON-RPC based socket interface (
--socketand--tcp) - New daemon command flag
--receive-modeto configure when messages are received - New daemon command flag
--no-receive-stdoutto prevent outputting messages on stdout - New command
listAccountsthat lists all registered local accounts - New command
removeContact - Extend
sendcommand to allow sending mentions (--mention) and quotes (--quote-timestamp,--quote-author,--quote-message,--quote-mention) - New dbus methods sendGroupTying, unregister, deleteAccount
- New dbus events MessageReceivedV2, ReceiptReceivedV2, SyncMessageReceivedV2 that provide an extras parameter with additional message info as a key/value map
- New dbus method sendViewedReceipt (Thanks @John Freed)
- New dbus object Configuration to read and update configuration values (Thanks @John Freed)
- Payment info in json receive output (Thanks @technillogue)
-calias for--config(Thanks @technillogue)
Changed
- libzkgroup dependency is no longer required
- Renamed
-uand--usernameflags to-aand--accountto prevent confusion with upcoming Signal usernames. The old flags are also still supported for now. - Respect phone number sharing mode and unlisted state set by primary device
- Adapt register command to reactivate account if possible.
- dbus-java now uses Java 16 native unix sockets, which should provide better cross-platform compatibility
- If sending to a recipient fails (e.g. unregistered) signal-cli now exits with a success exit code and prints additional information about the failure.
Fixed
- Registering an existing unregistered account now works reliably in daemon mode
- Fixed an issue with loading some old config files without UUID
- More reliable send behavior if some recipients are unregistered
[0.9.2] - 2021-10-24
Fixed
- dbus
listNumbersmethod works again
Changed
- Improved provisioning error handling if the last steps fail
- Adapt behavior of receive command as dbus client to match normal mode
- Update captcha url for proof required handling
[0.9.1] - 2021-10-16
Attention: Now requires native libzkgroup version 0.8
Added
- New command
updateConfigurationwhich allows setting configurations for linked devices - Improved dbus daemon for group handling, groups are now exported as separate dbus objects
- Linked devices can be managed via dbus
- New dbus methods sendTyping and sendReadReceipt (Thanks @JtheSaw)
- New dbus methods submitRateLimitChallenge, isRegistered, listDevices, setExpirationTimer, sendContacts, sendSyncRequest, uploadStickerPack, setPin and removePin (Thanks @John Freed)
- New dbus method getSelfNumber
Fixed
- Do not send message resend request to own device
- Allow message from pending member to accept group invitations
- Fix issue which could cause signal-cli to repeatedly send the same delivery receipts
- Reconnect websocket after connection loss
Changed
- Use new provisioning URL
sgnl://linkdeviceinstead oftsdevice:/ - The gradle command to build a graalvm native image is now
./gradlew nativeCompile
[0.9.0] - 2021-09-12
Attention: Now requires native libsignal-client version 0.9
Breaking changes
- Removed deprecated
--jsonparameter, use global parameter--output=jsoninstead - Json output format of
listGroupscommand changed: Members are now arrays of{"number":"...","uuid":"..."}objects instead of arrays of strings. - Removed deprecated fallback data paths, only
$XDG_DATA_HOME/signal-cliis used now For those still using the old paths ($HOME/.config/signal,$HOME/.config/textsecure) you need to move those to the new location.
Added
- New global parameter
--trust-new-identities=alwaysto allow trusting any new identity key without verification - New parameter
--device-nameforupdateAccountcommand to change the device name (also works for the primary device) - New SignalControl DBus interface, to register/verify/link new accounts
- New
jsonRpccommand that provides a JSON-RPC based API on stdout/stdin - Support for announcement groups
- New parameter
--set-permission-send-messagesforupdateGroupto create an announcement group - New
sendReceiptcommand to send read and viewed receipts - Support for receiving sender key messages, mobile apps can now send messages more efficiently with server-side fan-out to groups with signal-cli members.
- Support for reading data from remote Signal storage. Now v2 groups will be shown after linking a new device.
- New
submitRateLimitChallengecommand that can be used to lift some rate-limits by solving a captcha
Fixed
- Store identity key correctly when sending a message after a recipient has changed keys
[0.8.5] - 2021-08-07
Added
- Source name is included in JSON receive output (Thanks @technillogue)
Fixed
- Allow updateContact command to only set expiration timer without requiring a name parameter
[0.8.4.1] - 2021-06-20
Fixed
- Incorrect error handling in register command
[0.8.4] - 2021-06-13
Attention: Now requires native libsignal-client version 0.8.1
Added
- New parameters for
updateGroupcommand for group v2 features:--description,--remove-member,--admin,--remove-admin,--reset-link,--link,--set-permission-add-member,--set-permission-edit-details,--expiration - New
--adminparameter forquitGroupto set an admin before leaving the group - New
--deleteparameter forquitGroup, to delete the local group data - New 'sendTyping' command to send typing indicators
Fixed
- Fixed issue that prevented registration with invalid locales
- Prevent last admin of a group from leaving the group
- All commands now show a short description with
--help - Now a hint is shown if messages aren't received regularly
- Group edit conflicts are now resolved automatically
[0.8.3] - 2021-05-13
Fixed
- Upgrading from account files with older profiles
- Building native image with graalvm
[0.8.2] - 2021-05-11
Added
- A manual page for the DBus interface (Thanks @bublath, @exquo)
- Remote message delete command (Thanks @adaptivegarage)
- sendSyncRequest command to request complete contact/group list from primary device
- New
--delete-accountargument for unregister (Dangerous) - New
--family-nameargument for updateProfile
Fixed
- Sending reaction to group (Thanks @adaptivegarage)
- Displaying of address for messages from untrusted identities
- Handling of recipient number or uuid changes (e.g. after account deletions)
- Only respond to sync requests from primary device
- Display of quit group messages
Changed
- Unlimited strength crypto is now enabled automatically for JREs that require it (Thanks @i-infra)
- Only one identity key is stored per recipient and updated from profile (to match app behavior)
- updateContact, block and unblock are now disabled for linked devices
- After registering an empty profile is created so new groups can be joined immediately
- If message decryption fails due to a broken session, the session is automatically renewed
- Rework account storage for better reliability
- Improved device linking flow
- Allow relinking existing account
- Encrypt/Decrypt device names
[0.8.1] - 2021-03-02
Added
- New dbus commands: updateProfile, listNumbers, getContactNumber, quitGroup, isContactBlocked, isGroupBlocked, isMember, joinGroup (Thanks @bublath)
- Additional output for json format: shared contacts (Thanks @Atomic-Bean)
- Improved plain text output to be more consistent and synced messages are now indented
Fixed
- Issue with broken sessions with linked devices
Changed
- Behavior of
trustcommand improved, when trusting a new identity key all other known keys for the same number are removed.
[0.8.0] - 2021-02-14
Attention: For all signal protocol functionality an additional native library is now required: libsignal-client. See https://github.com/AsamK/signal-cli/wiki/Provide-native-lib-for-libsignal for more information.
Added
- Experimental support for building a GraalVM native image
- Support for setting profile about text and emoji
Fixed
- Incorrect error message when removing a non-existent profile avatar
[0.7.4] - 2021-01-19
Changed
- Notify linked devices after profile has been updated
Fixed
- After registering a new account, receiving messages didn't work You may have to register and verify again to fix the issue.
- Creating v1 groups works again
[0.7.3] - 2021-01-17
Added
getUserStatuscommand to check if a user is registered on Signal (Thanks @Atomic-Bean)- Global
--verboseflag to increase log level - Global
--output=jsonflag, currently supported byreceive,daemon,getUserStatus,listGroups --note-to-selfflag forsendcommand to send a note to linked devices- More info for received messages in json output: stickers, viewOnce, typing, remoteDelete
Changed
- signal-cli can now be used without the username
-uflag For daemon command all local users will be exposed as dbus objects. If only one local user exists, all other commands will use that user, otherwise a user has to be specified. - Messages sent to self number will be sent as normal Signal messages again, to
send a sync message, use the new
--note-to-selfflag - Ignore messages with group context sent by non group member
- Profile key is sent along with all direct messages
- In json output unnecessary fields that are null are now omitted
Fixed
- Disable registration lock before removing the PIN
- Fix PIN hash version to match the official clients. If you had previously set a PIN you need to set it again to be able to unlock the registration lock later.
- Issue with saving account file after linking
[0.7.2] - 2020-12-31
Added
- Implement new registration lock PIN with
setPinandremovePin(with KBS) - Include quotes, mentions and reactions in json output (Thanks @Atomic-Bean)
Fixed
- Retrieve avatars for v2 groups
- Download attachment thumbnail for quoted attachments
[0.7.1] - 2020-12-21
Added
- Accept group invitation with
updateGroup -g GROUP_ID - Decline group invitation with
quitGroup -g GROUP_ID - Join group via invitation link
joinGroup --uri https://signal.group/#...
Fixed
- Include group ids for v2 groups in json output
[0.7.0] - 2020-12-15
Added
Support for groups of new type/v2
- Sending and receiving
- Updating name, avatar and adding members with
updateGroup - Quit group and decline invitation with
quitGroup - In the
listGroupsoutput v2 groups can be recognized by the longer groupId
Attention: For the new group support to work the native libzkgroup library is required. See https://github.com/AsamK/signal-cli/wiki/Provide-native-lib-for-libsignal for more information.
Fixed
- Rare NullPointerException when receiving messages
[0.6.12] - 2020-11-22
Added
- Show additional message content (view once, remote delete, mention, …) for received messages
--captchaparameter forregistercommand, required for some IP ranges
Changed
- Profile keys are now stored separately from contact list
- Receipts from normal and unidentified messages now have the same format in json output
Fixed
- Issue where some messages were sent with an old counter index
[0.6.11] - 2020-10-14
- Fix issue with receiving message reactions
[0.6.10] - 2020-09-11
- Fix issue when retrieving profiles
- Workaround issue with libzkgroup on platforms other than linux x86_64
[0.6.9] - 2020-09-10
- Minor bug fixes and improvements
- dbus functionality now works on FreeBSD
- signal-cli now requires Java 11
Warning: this version only works on Linux x86_64, will be fixed in 0.6.10
[0.6.8] - 2020-05-22
- Switch to hypfvieh dbus-java, which doesn't require a native library anymore (drops requirement of libmatthew-unix-java)
- Bugfixes for messages with uuids
- Add
--expirationparameter toupdateContactcommand to set expiration timer
[0.6.7] - 2020-04-03
- Send command now returns the timestamp of the sent message
- DBus daemon: Publish received sync message to SyncMessageReceived signal
- Fix issue with resolving e164/uuid addresses for sessions
- Fix pack key length for sticker upload
[0.6.6] - 2020-03-29
- Added listContacts command
- Added block/unblock commands to block contacts and groups
- Added uploadStickerPack command to upload sticker packs (see man page for more details)
- Full support for sending and receiving unidentified sender messages
- Support for message reactions with emojis
- Internal: support recipients with uuids
[0.6.5] - 2019-11-11
Supports receiving messages sent with unidentified sender
[0.6.4] - 2019-11-02
- Fix rounding error for attachment ids in json output
- Add additional info to json output
- Add commands to update profile name and avatar
- Add command to update contact names
[0.6.3] - 2019-09-05
Bug fixes and small improvements
[0.6.2] - 2018-12-16
- Fixes sending of group messages
[0.6.1] - 2018-12-09
- Added getGroupIds dbus command
- Use "NativePRNG" pseudo random number generator, if available
- Switch default data path:
$XDG_DATA_HOME/signal-cli($HOME/.local/share/signal-cli) Existing data paths will continue to work (used as fallback)
[0.6.0] - 2018-05-03
- Simple json output
- dbus signal for receiving messages
- Registration lock PIN
- Output quoted message
[0.5.6] - 2017-06-16
- new listGroups command
- Support for attachments with file names
- Support for complete contacts sync
- Support for contact verification sync
- DBus interface:
- Get/Set group info
- Get/Set contact info
[0.5.5] - 2017-02-18
- fix receiving messages on linked devices
- add unregister command
[0.5.4] - 2017-02-17
- Fix linking of new devices
[0.5.3] - 2017-01-29
- New commandline parameter for receive: --ignore-attachments
- Updated dependencies
[0.5.2] - 2016-12-16
- Add support for group info requests
- Improve closing of file streams
[0.5.1] - 2016-11-18
- Support new safety numbers (https://whispersystems.org/blog/safety-number-updates/)
- Add a man page
- Support sending disappearing messages, if the recipient has activated it
[0.5.0] - 2016-08-29
- Check if a number is registered on Signal, before adding it to a group
- Prevent sending to groups that the user has quit
- Commands to trust new identity keys (see README)
- Messages from untrusted identities are stored on disk and decrypted when the user trusts the identity
- Timestamps shown in ISO 8601 format
[0.4.1] - 2016-07-18
- Fix issue with creating groups
- Lock config file to prevent parallel access by multiple instances of signal-cli
- Improve return codes, always return non-zero code, when sending failed
[0.4.0] - 2016-06-19
- Linking to Signal-Desktop and Signal-Android is now possible (Provisioning)
- Added a contact store, mainly for syncing contacts with linked devices (editing not yet possible via cli)
- Avatars for groups and contacts are now stored (new folder "avatars" in the config path)
[0.3.1] - 2016-04-03
- Fix running with Oracle JRE 8
- Fix registering
- Fix unicode warning when compiling with non utf8 locale
[0.3.0] - 2016-04-02
- Renamed textsecure-cli to signal-cli, following the rename of libtextsecure-java to libsignal-service-java
- The experimental dbus interface was also renamed to org.asamk.Signal
- Upload new prekeys to the server, when there are less than 20 left, prekeys are needed to create new sessions
[0.2.1] - 2016-02-10
- Improve dbus service
- New command line argument --config to specify config directory
[0.2.0] - 2015-12-30
Added an experimental dbus interface, for sending and receiving messages (The interface is unstable and may change with future releases).
This release works with Java 7 and 8.
[0.1.0] - 2015-11-28
Add support for creating/updating groups and sending to them
[0.0.5] - 2015-11-21
- Add receive timeout commandline parameter
- Show message group info
[0.0.4] - 2015-09-22
[0.0.3] - 2015-08-07
[0.0.2] - 2015-07-08
First release