ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.

Overview

ChatSecure

Build Status

ChatSecure is a free and open source XMPP messaging client for iOS that integrates OTR and OMEMO encrypted messaging support, and has optional integrated support for connectivity via the Tor network.

download chatsecure on the app store

Cost

Redistributing ChatSecure Code on the App Store

Even though this project is open source, this does not mean you can reuse this code when distributing closed source commercial products. Please contact us to discuss licensing options before you start building your product.

If you are an open source project, please contact us to arrange for an App Store redistribution exception. For more information about why this is required, please read this blog post from Open Whisper Systems.

Cost for End Users

Downloading the ChatSecure app is 100% free because it is important that all people around the world have unrestricted access to privacy tools. However, developing and supporting this project is hard work and costs real money. Please help support the development of this project!

Localization

If you would like to contribute/improve a translation:

  1. Visit our Transifex project page and make an account if you don't have one already.
  2. Go to the resources subsites AppStore.strings & Localizable.strings to add a new language or improve an existing translation.
  3. Open an issue on Github notifying us of your translation.

Compatibility

There's a more full list of OTR clients on Wikipedia. A smaller list of clients support the mobile-friendly OMEMO Encryption.

Desktop

  • dino (Linux, macOS, Windows) Supports OMEMO

Mobile

Build Instructions

You'll need CocoaPods installed for most of our dependencies.

$ gem install cocoapods

Download the source code and don't forget to pull down all of the submodules as well.

$ git clone https://github.com/ChatSecure/ChatSecure-iOS.git
$ cd ChatSecure-iOS/
$ git submodule update --init --recursive

Now you'll need to build the dependencies.

$ bash ./Submodules/CPAProxy/scripts/build-all.sh
$ bash ./Submodules/OTRKit/scripts/build-all.sh
$ pod repo update
$ pod install

Next you'll need to create your own version of environment-specific data. Make a copy of Secrets-template.plist as Secrets.plist:

$ cp OTRResources/Secrets-template.plist OTRResources/Secrets.plist

You'll need to manually change the Team ID under Project -> Targets -> ChatSecure -> Signing. The old .xcconfig method doesn't seem to work well anymore.

Open ChatSecure.xcworkspace in Xcode and build.

Note: Don't open the .xcodeproj because we use Cocoapods now!

If you're still having trouble compiling check out the Travis-CI build status and .travis.yml file.

Contributing

Thank you for your interest in contributing to ChatSecure! To avoid potential legal headaches and to allow distribution on Apple's App Store please sign our CLA (Contributors License Agreement).

  1. Sign the CLA (odt, pdf) and email it to [email protected].
  2. Fork the project and (preferably) work in a feature branch.
  3. Open a pull request on GitHub.
  4. Thank you!

License

Software License Agreement (GPLv3+)

Copyright (c) 2015, Chris Ballinger. All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

If you would like to relicense this code to distribute it on the App Store, please contact me at [email protected].

Third-party Libraries

This software additionally references or incorporates the following sources of intellectual property, the license terms for which are set forth in the sources themselves:

The following dependencies are bundled with the ChatSecure, but are under terms of a separate license:

For a more complete list, check the Podfile and Cartfile.

Regenerating Acknowledgements

To regenerate the acknowledgements in Settings.app use LicensePlist and copy the output to Settings.bundle.

$ brew install mono0926/license-plist/license-plist
$ license-plist --add-version-numbers --output-path ChatSecure/Settings.bundle --suppress-opening-directory

Acknowledgements

Thank you to everyone who helped this project become a reality! This project is also supported by the fine folks from The Guardian Project, OpenITP, and the Open Technology Fund.

Comments
  • Failing push notification

    Failing push notification

    Hi,

    Sorry to create yet another bug about push...

    Setup

    • Server: prosody .9.12 with CA-signed TLS certificate
    • Relevant modules: cloud_notify, smacks, pinger, carbons, mam, csi, filter_chatstates, throttle_presence.
    • IPhone SE with latest iOS. Low battery mode off, all is ON in General Settings > ChatSecure.
    • Chatsecure 4.0.8

    Steps to reproduce

    1. Install Chatsecure, log to server
    2. Send a couple of messages to user on iPhone, they reach him, OMEMO works... Everything looks clear.
    3. Confirmed push is active in the app's interface
    4. Leave the app.

    Actual result

    • Quickly, the iPhone user shows as away on other devices, then as offline.
    • Messages don't reach the device unless the iPhone's user starts the app
    • The iPhone's user has to specifically open the app to get the sent messages
    • Relevant portions of the server log:
      • Successfully initiating push (it seems): May 14 HH:MM:SS [alphanum characters] info Push notifications enabled for [ID]@[chatdomain.tld]/chatsecure (pubsub.chatsecure.org<A3486BB3-6442-4945-84E2-[more alphanum characters])

      • When trying to send a message to offline device (the last number increments with every try of the server): May 14 HH:MM:SS [chatdomain.tld]:cloud_notify info Got error of type 'cancel' (not-allowed) for identifier 'pubsub.chatsecure.org<A3486BB3-6442-4945-84E2-[alphanum characters]': error count for this identifier is now at 1

    Expected Result If iPhone is connected to the Internet, the iPhone user gets a notification straight away.

    Bonus questions

    • What does mod_pinger do? I can make an educated guess looking at the name and bits of its code, but I'm not 100% certain.
    • Would it be possible to get a wiki of FAQ detailing exactly what modules in prosody are needed to use all the features of ChatSecure? @chrisballinger gives a few times his config in threads here and there, but that's hardly discoverable and probably not comprehensive or up to date.

    Many thanks.

    opened by ageru 153
  • Push Notifications are broken.. sometimes.

    Push Notifications are broken.. sometimes.

    Dear Developers,

    I installed your nice app at some friends, and I am using it with a own xmpp server (prosody 0.10) + Push-module (cloud_notify). Some of my friends a while back also got some push notifications, so it seemed to work somehow a while ago. But now there aren't any push notifications any more. I wonder now if the push server is down (as my prosody logs seem to indicate, as they say something of "not found"), or if is rather my fault, e.g. because he the push app server doesn't like my self-signed certificate. But if the later, why did it work then sometimes a while ago?

    Any helpful comment highly appreciated :-)

    greets

    Bug 
    opened by lazyadmin111 92
  • Unavailable in France / French App Store

    Unavailable in France / French App Store

    Hello ! Did not found my answer, so i ask :

    An Iphone-user friend of mine is trying to download the app from french Itunes. As it's on US Itunes, it can't be downloaded.

    Is there a way to download the .ipa elsewhere ? To build it by myself ?

    Thanks in advance ;)

    Enhancement 
    opened by guill4ume 42
  • Version 1.5 crashes instantly on 6.0.1

    Version 1.5 crashes instantly on 6.0.1

    Upgrading to version 1.5 (Dec 13 2012) on starting up the app immediate crash after splash screen.

    Seen on:

    iOS 6.0.1 iPhone 5 iPad 3 (retina)

    I tried wiping and reinstalling: still crashes.

    Bug 
    opened by arrigo 30
  • Unable to login to self-hosted Jabberd

    Unable to login to self-hosted Jabberd

    Version: 1.3

    I was able to login to to my DreamHost provided jabberd using the previous version of ChatSecure, but not with 1.3. Now when I press "Log In" or the "Go" button on the keyboard, the black "Logging in..." overlay appears and never disappears.

    I was unable to find any log or debug settings to provide further information.

    Bug 
    opened by mdaniel 29
  • Facing Problem While compiling the code with Xcode6.1

    Facing Problem While compiling the code with Xcode6.1

    Subsequently getting following errors-

    1. 1st error tor_cpaproxy.h file not found 2)JSQSystemSoundPlayer+JSQMessages.h no visible @interface for JSQSystemSoundPlayer
    2. /usr/include/dns.h file not found
    3. XMPPFramework Not found โ€ฆ.
    4. ld: library not found for -lcrypto
    5. ld: library not found for -lcurve25519_donna clang: error: linker command failed with exit code 1 (use -v to see invocation) I feel some script is not getting executed or any dependency is not getting downloaded, Please provide some guidelines and help me to compile the code.

    Thanks in advance. Subodh

    opened by singh79 28
  • Can't compile (JSQSystemSoundPlayer playSoundWithName:extension not declared)

    Can't compile (JSQSystemSoundPlayer playSoundWithName:extension not declared)

    After successfully following the installation instructions I am getting the error below. The installation worked as expected, gitmodules downloaded, pods installed, build-all scripts ran, opened the .xcworkspace.

    There was one thing I didn't do but I don't know if this problem is related to that, which is 'add the public signing keys for OpenSSL, GnuPG, libevent, and libotr', i just downloaded and installed the GPGTools.

    The error I am getting is this, it happens halfway through the compile in xcode.

    /Projects/ChatSecure-iOS/Pods/JSQMessagesViewController/JSQMessagesViewController/Categories/JSQSystemSoundPlayer+JSQMessages.m:29:42: No visible @interface for 'JSQSystemSoundPlayer' declares the selector 'playSoundWithName:extension:'

    When I look in xcode at the pods that are installed I do see the JSQSystemSoundPlayer pod.

    opened by roelvanhoof 25
  • OMEMO/chat issues in latest version?

    OMEMO/chat issues in latest version?

    In the latest download, I am not able to get users to talk OMEMO. In fact, no messages of any type are getting through. We are using eJabber and we rebooted the server just in case something screwy was happening there, but that didn't fix the issue. Other than rebooting, we have not touched the server, just updated the app. I will look more at server log messages tomorrow. Has anyone else seen this in the latest version?

    opened by afriedmanGlacier 22
  • Allow using a custom XMPP server

    Allow using a custom XMPP server

    Thanks for your effort!

    I'm using my own XMPP server (ejabberd) - do you think adding support for using arbitrary XMPP servers besides Google's would be a major undertaking?

    opened by mkai 22
  • Contact receives unintentional and undecryptable OTR

    Contact receives unintentional and undecryptable OTR

    I'm trying out the beta to communicate with a Conversations.im user using OMEMO. However, every now and again, he reports receiving a blurb of OTR ciphertext. Notably, these messages do not show up in ChatSecure on my side.

    Last night we sent several messages back and forth, and sometime later he received such an OTR blurb. This morning, I mindlessly opened and closed the app without sending any messages, and he again reported receiving messages. The receiving timestamps on these messages were again sometime later (but at a time I'm certain I did not interact with the app, as I was physically away from my phone), making me think it was related.

    On my prosody server, I see the following logs (the timestamps on the messages were 07:50 and 8:34). Note that [email protected] is the account I'm using with ChatSecure, and 92.51.148.190 is the conversations.im server where my friend has an account.

    Nov 25 07:49:58 s2sinfce300	info	incoming s2s connection conversations.im->joostrijneveld.nl complete
    Nov 25 07:50:00 c2sbcab10	info	Client connected
    Nov 25 07:50:01 c2sbcab10	info	Authenticated as [email protected]
    Nov 25 07:50:01 s2sout13456e0	info	Beginning new connection attempt to conversations.im ([92.51.148.190]:5269)
    Nov 25 07:50:01 s2sout13456e0	info	outgoing s2s connection joostrijneveld.nl->conversations.im complete
    Nov 25 07:50:02 c2sbcab10	warn	The client says it handled 1 new stanzas, but we only sent 0 :)
    Nov 25 07:50:29 c2sbcab10	info	Client disconnected: closed
    Nov 25 08:34:54 joostrijneveld.nl:saslauth	info	Accepting SASL EXTERNAL identity from conversations.im
    Nov 25 08:34:54 s2sine5f2e0	info	incoming s2s connection conversations.im->joostrijneveld.nl complete
    Nov 25 08:34:56 c2sfb8230	info	Client connected
    Nov 25 08:34:56 c2sfb8230	info	Authenticated as [email protected]
    Nov 25 08:34:57 s2sout10f28f0	info	Beginning new connection attempt to conversations.im ([92.51.148.190]:5269)
    Nov 25 08:34:57 s2sout10f28f0	info	outgoing s2s connection joostrijneveld.nl->conversations.im complete
    Nov 25 08:35:03 c2sfb8230	warn	The client says it handled 1 new stanzas, but we only sent 0 :)
    Nov 25 08:35:24 c2sfb8230	info	Client disconnected: closed
    

    The logs seems to indicate that it's actually the conversations.im server initiating the connection.. However, my friend is only seeing these messages coming from me, and not from other people using Conversations or Gajim.

    My next debugging step is to create an account at a third party server (i.e. duckduckgo's or conversations') to see if that's part of the reason.

    opened by joostrijneveld 20
  • Login Timeout Issue

    Login Timeout Issue

    I would like to try to use ChatSecure. However, when I click on the "Login to XMPP" button, I get an error message saying "Failed to connect to XMPP server. Please check your login credentials and internet connection and try again."

    My internet connection is fine. Where should I go to establish credentials to login to the XMPP server????

    Thanks for any help you can provide.

    JmSegel

    Bug 
    opened by jmsegel 20
  • README doesn't explain that this isn't maintained any more

    README doesn't explain that this isn't maintained any more

    I recently found that chatsecure was not receiving messages because of #1250.

    This issue is not a complaint about the state of maintenance, but more narrowly focused. If, as seems to be the case, ChatSecure is no longer usable because of push problems, the README should say that it has reach end-of-life and should not longer be used. Or perhaps an explanation of how one works around broken push. As it is, the README makes it look usable.

    opened by gdt 0
  • Bump tzinfo from 1.2.9 to 1.2.10

    Bump tzinfo from 1.2.9 to 1.2.10

    Bumps tzinfo from 1.2.9 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • trying to understand why push notifications is failing

    trying to understand why push notifications is failing

    Hello,

    I'm new to XMPP and would like to use the Chatsecure app. I'm currently using the latest version of Chatsecure 5.0.4. I don't have the infrastructure to host a private xmpp server so I'm trying to use the public ones like jabber.de, or conversations.im, and jabber.5july.net. I go to test my ios device running IOS 15.5. What is happening is the push notifications even though they are enabled, I am not receiving the messages when Chatsecure is in the background or closed.

    What is missing on the public servers to work to enable them to push to the ios devices when Chatsecure is not in the foreground? Is there special software they have to enable to allow this to work or am I doing something wrong or missing something? Or is there a public server that I don't know about which implements these features fully?

    Thanks for your help.

    opened by netuser01 3
  • Broke OTR session on folding ChatSecure Messenger

    Broke OTR session on folding ChatSecure Messenger

    When I switch to another application or go to the main tap or turn off the screen, the OTP session is interrupted. How to make sure that the OTP session is not interrupted?

    opened by yvgorshkov 1
  • Bump jmespath from 1.4.0 to 1.6.1

    Bump jmespath from 1.4.0 to 1.6.1

    Bumps jmespath from 1.4.0 to 1.6.1.

    Release notes

    Sourced from jmespath's releases.

    Release v1.6.1 - 2022-03-07

    • Issue - Use JSON.parse instead of JSON.load.

    Release v1.6.0 - 2022-02-14

    • Feature - Add support for string comparissons.

    Release v1.5.0 - 2022-01-10

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Changelog

    Sourced from jmespath's changelog.

    1.6.1 (2022-03-07)

    • Issue - Use JSON.parse instead of JSON.load.

    1.6.0 (2022-02-14)

    • Feature - Add support for string comparisons.

    1.5.0 (2022-01-10)

    • Support implicitly convertible objects/duck-type values responding to to_hash and to_ary.

      [See related GitHub pull request #51](jmespath/jmespath.rb#51).

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Releases(v5.0.2)
  • v5.0.2(Apr 16, 2020)

    • Storage management of downloaded media messages #1189
    • Migrate to YapDatabase 4.0
    • Update dependencies
    • Use CryptoKit on iOS 13 for AES-GCM operations
    • Resolve some dark mode issues
    Source code(tar.gz)
    Source code(zip)
  • v5.0.1(Feb 16, 2020)

  • v5.0(Feb 16, 2020)

    v5.0:

    • Dark Mode
    • Removes Tor support
    • Mac version available soon for macOS Catalina
    • Miscellaneous bug fixes and performance improvements
    • Now requires iOS 12 or higher

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.9...v5.0

    Source code(tar.gz)
    Source code(zip)
  • v4.3.9(Aug 1, 2019)

    • Fix issue where fingerprint trust settings cannot be saved

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.8...v4.3.9

    Source code(tar.gz)
    Source code(zip)
  • v4.3.8(Jul 16, 2019)

    • Improved launch performance, reduced binary size and memory usage
    • Tor 0.4.0.5
    • SQLCipher 4.2.0
    • Update 3rd party dependencies

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.7...v4.3.8

    Source code(tar.gz)
    Source code(zip)
  • v4.3.7(Apr 23, 2019)

    • Swift 5.0 / Xcode 10.2
    • Updated translations
    • Minor bug fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.6...v4.3.7

    Source code(tar.gz)
    Source code(zip)
  • v4.3.6(Dec 12, 2018)

    • Fix security issue in certificate pinning alert dialog, where any valid certificate would show as valid #1071 (thanks @mimi89999!)
    • Fix crash when rapidly scrolling through chat history #817 #977 #1038
    • Fix issue where chat history is temporarily blank after sending a message #950
    • Swift 4.2 / Xcode 10.1
    • Updated 3rd party dependencies
    • Other minor bug fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.5...v4.3.6

    Source code(tar.gz)
    Source code(zip)
    4.3.6-dSYMs.zip(49.30 MB)
  • v4.3.5(Dec 7, 2018)

    • Support for new iPhone screen resolutions
    • Minor bug fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.4...v4.3.5

    Source code(tar.gz)
    Source code(zip)
  • v4.3.4(Jul 19, 2018)

    • Attempting to fix source of crash regression in Swift 4.1.2 runtime (reabstraction thunk helper swift_getObjectType crash).
    • Other crash fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.3...v4.3.4

    Source code(tar.gz)
    Source code(zip)
  • v4.3.3(Jul 14, 2018)

  • v4.3.2(Jul 13, 2018)

  • v4.3.1(Jul 13, 2018)

    • Fix bug causing duplicate MAM messages
    • No longer expires the last remaining OMEMO key after it hasn't been seen for > 30 days
    • Minor bug fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.3.0...v4.3.1

    Source code(tar.gz)
    Source code(zip)
  • v4.3.0(Apr 10, 2018)

    • Message Archive Management (XEP-0313) - one-to-one and group chat history is now synchronized between multiple devices, if supported by your server.
    • Group Chat Bookmarks (XEP-0048) - Group chats are now bookmarked on your server to allow persistence between devices / installs.
    • OMEMO Group Chat Encryption - This is not yet recommended for general use and is for advanced users only. Must be globally enabled in Advanced Settings as well as individually for each group chat.
    • Improvements to general group chat user experience
    • Bug fixes and performance improvements

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.2.1...v4.3.0

    Source code(tar.gz)
    Source code(zip)
  • v4.2.1(Jan 23, 2018)

    • Fix some crashes and odd behavior in the chat view bubbles
    • Fix crash when media URL cannot be parsed
    • Fix crash when room messages are orphaned
    • Add toggle to allow database passphrase keychain entry to be persisted in encrypted iTunes backups to allow for better experience when restoring a backup to a new device
    • Connections are more likely to be cleanly disconnected during background fetches
    • Match room occupants to contacts if possible
    • Remove UserVoice
    • Update a few dependencies
    • Show full version number at bottom of Settings
    • Move 3rd party library license and version information to Settings bundle
    • Migrate to Swift 4
    • iPhone X support
    • Now requires iOS 9 or higher

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.2.0...v4.2.1

    Source code(tar.gz)
    Source code(zip)
  • v4.2.0(Oct 24, 2017)

    • Improved group chat reliability
    • Media sharing in group chats (unencrypted only)
    • Redesigned group participants view
    • Improvements to OMEMO session initiation. Thanks @N-Pex! #809
    • Improve performance of chat view. Thanks @stigger! #817 #823
    • Group chat: Use displayName for nickname instead of JID #818
    • Fix UnsentGroupMessagesViewName crash #645
    • Attempt to fix extraneous push registration dialogs
    • Do not discard messages with identical stanza ids #813
    • Show better warning when certificate changes #825 #777
    • Bug fixes and refactoring
    • Tor 0.3.0.11

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.1.0...v4.2.0

    Source code(tar.gz)
    Source code(zip)
  • v4.1.0(Jun 30, 2017)

    What's new in 4.1.0

    • XEP-0363: HTTP Upload support for much faster and reliable media messaging. [1]
    • XEP-0352: Client State Indication. Helps reduce network usage when running in the background.
    • End-to-end encryption for file transfers in OMEMO or OTR sessions [2].
    • Inline media previews for incoming URLs. (Optional)
    • Bug fixes and refactoring.
    • Tor 0.3.0.9

    Caveats

    • Your server administrator must enable support for XEP-0363. See mod_http_upload for Prosody [3] and ejabberd [4] for more details.
    • Encrypted file transfer is required in OMEMO/OTR, but has limited compatibility for receiving clients. Users on the other end will receive aesgcm:// links [2].
    • Inline media previews are enabled by default, but can be disabled on a per-account basis. This feature should be disabled if you have extreme privacy concerns or do not trust your contacts. This setting is always disabled for Tor accounts.
    1. https://xmpp.org/extensions/xep-0363.html
    2. https://github.com/iNPUTmice/ImageDownloader
    3. https://modules.prosody.im/mod_http_upload.html
    4. https://docs.ejabberd.im/admin/configuration/#mod-http-upload
    5. https://xmpp.org/extensions/xep-0352.html

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.9...v4.1.0

    Source code(tar.gz)
    Source code(zip)
  • v4.0.9(Jun 23, 2017)

    What's new in v4.0.9:

    • NEW: Now you can support continued development via in-app purchase. Help make developing free and open source privacy tools sustainable!
    • Partial fix for bug where keyboard covers chat area

    For more information about how you can help: https://chatsecure.org/blog/sustainable-open-source-starts-with-you/

    Source code(tar.gz)
    Source code(zip)
  • 4.0.8(May 11, 2017)

    • ๐Ÿšจ DuckDuckGo is shutting down their server in early May! ๐Ÿšจ If your account ends in @dukgo.com you need to migrate to a new server ASAP!
    • NEW: Account migration tool. Automatically create new account, move existing contacts, archive old conversations, and optionally notify old contacts of new account info.
    • NEW: Inbox / Archive. In addition to swipe-to-delete, there is now swipe-to-archive, which allows decluttering the inbox without deleting conversation history.
    • Fix a nasty bug introduced in 4.0.7 that could prevent OMEMO sessions from working. If your outgoing OMEMO messages were no longer getting delivery receipts, send some messages back and forth and it should fix the issue. When you receive an undecipherable message it will clear the session, which allows the session to be re-initiated on your next outgoing message.
    • Improve discoverability of group chat by replacing icon with "Group Chat"
    • Join existing group chats
    • Show ๐Ÿ“ท ๐Ÿ”Š icons to indicate media in conversation list message preview, and show โš ๏ธ warning if message had an error.
    • Disable deadlock detector because it was causing crashes on slower devices
    • Removes Donate button per Apple's request
    • Now available in France! ๐Ÿ‡ซ๐Ÿ‡ท
    Source code(tar.gz)
    Source code(zip)
  • v4.0.7(Apr 19, 2017)

    • Fix issue receiving short OMEMO messages from users of the Conversations app
    • Partially fix issue where invalid OMEMO bundles are published
    • Deadlock detector: If the app is frozen, please wait ~20 seconds for it to crash, then relaunch and submit a crash report.
    • Remove Dukgo from server list because their server will be shutting down soon. See https://twitter.com/cfarivar/status/852193164207063040
    • Add additional public community servers to list. Full list here: https://github.com/ChatSecure/xmpp-server-list
    • home.zom.im is now the default server for new account registrations
    • Adding/removing contacts while temporarily disconnected is more reliable
    • Update Catalan translation
    Source code(tar.gz)
    Source code(zip)
  • v4.0.6(Apr 18, 2017)

  • v4.0.5(Mar 28, 2017)

    What's new in v4.0.5:

    • Shows notifications for incoming requests and outgoing approvals
    • Displays idle status / last activity in the title bar, for instance "Active 10 min ago". This keeps track of the last time you interact with the app, and will report this value when queried by your contacts. The time you last interacted with the app is identical for all of your accounts, so broadcasting this value is disabled for Tor accounts and when auto-login disabled.
    • Fixes a crash when viewing your account details on iOS 8 devices
    • Fix issues with contacts that get stuck as "Pending Approval"

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.4...v4.0.5

    Source code(tar.gz)
    Source code(zip)
  • v4.0.4(Mar 22, 2017)

    What's new in v4.0.4:

    • Added an account detail view
    • New view to help troubleshoot and fix push issues
    • View XMPP server capabilities information
    • Redesigned account cell on Settings screen
    • Fixes push notification registration on ejabberd 17.01 and Prosody 0.10
    • Refactoring to help make push registration more reliable
    • Small bug fixes
    • Now using Swift 3

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.3...v4.0.4

    Source code(tar.gz)
    Source code(zip)
  • v4.0.3(Feb 8, 2017)

    What's new in v4.0.3:

    • Add back presence information (by popular request)
    • Improve display of nicknames
    • Show contact's JID below their nickname instead of your own
    • Removes stream resumption timeout (XEP-0198)
    • Update dependencies (includes OpenSSL 1.0.2k)
    • Update translations (Greek, Slovak)
    • Other minor bug fixes

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.2...v4.0.3

    Source code(tar.gz)
    Source code(zip)
  • v4.0.2(Jan 27, 2017)

    • Fix Pending Approval bug
    • Fix audio message 0:00 duration bug
    • Always show Compose button if you have at least one account
    • Update Translations (French)

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0.1...v4.0.2

    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(Jan 26, 2017)

    • Fix pending subscription for approved contacts
    • Fix removal of pending contacts
    • Fix removing account UI update
    • Fix stream resumption for stream management (XEP-0198)
    • Improve handling of message carbons (XEP-0280)
    • Move presence info to profile screen
    • Fix possible deadlock
    • Tor 0.2.9.9
    • Update Translations (German, Spanish)

    Changelog: https://github.com/chatsecure/chatsecure-ios/compare/v4.0...v4.0.1

    Source code(tar.gz)
    Source code(zip)
  • v4.0(Jan 17, 2017)

    What's new in v4.0:

    • OMEMO Encryption
    • Profile screen that shows contact's OMEMO and OTR fingerprints
    • In-app notifications on iOS 10
    • Outgoing message queue for improved reliability
    • Resend any outgoing message
    • Automatic selection of best available encryption with manual override per contact
    • TOFU (trust on first use) for OTR and OMEMO fingerprints
    • Easily share and compare OMEMO and OTR fingerprints
    • Keeps screen awake while device is plugged in and app in foreground
    • Improve reliability of audio messages
    • Slightly longer XEP-0198 timeout
    • Fixes multiple group chat bugs
    • Significantly improves database performance
    • Many more bug fixes and performance improvements [2]
    • Full changelog

    Download ChatSecure on the App Store

    Source code(tar.gz)
    Source code(zip)
  • v3.2.3(Nov 8, 2016)

    Jul 25, 2016

    • XMPP push for supported servers (XEP-0357)
    • Improved subscription requests UI
    • Basic vCard nickname support
    • Fix issues with missing messages during stale OTR sessions
    • Improved IPv6 support for NAT64/DNS64
    • Fix some issues with presence/availability
    • Added button to view your password
    • Fix issue where message view would appear multiple times
    • Automatically start OTR sessions when contact is online
    • Send error messages back to contact when messages cannot be decrypted
    Source code(tar.gz)
    Source code(zip)
  • v3.2.2(May 3, 2016)

    • Fix crashes and UI issues caused by asynchronous database initialization
    • Improved contact search when starting a new conversation (also now with less crashes)
    • Fix crash when sharing account on iPad
    • Update Italian translation
    • Fix multiple Knocks and improve reliability
    • Don't send delivery receipts if decryption fails
    • Update 3rd party dependencies
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Apr 25, 2016)

    • Fix bug causing 73% of all crashes
    • Fix issues with Google Talk logins
    • Fix other crashes and bugs
    • Faster startup times
    • Slightly improved UI on iPad
    Source code(tar.gz)
    Source code(zip)
  • v3.2(Apr 15, 2016)

    New in v3.2:

    • Push: You can now briefly wake up offline ChatSecure iOS contacts via the "Knock" button. The Knock button will replace the Send button when no text is entered, you've previously established an OTR session with a Push-compatible contact, and the contact is offline.

    We would appreciate feedback on the UX of this design, which we know acts very differently from centralized messaging apps. There are plans to improve this experience when connected to servers supporting XEP-0357, which will allow any contact to wake your client.

    • Group Chat: You can now start and join group chats. End-to-end encryption is planned but not yet supported.
    • Onboarding: When starting the app for the first time, or adding a new account, there is a new onboarding flow to help simplify setup for new users.
    • Under the hood: Many changes that should improve performance and reliability.
    Source code(tar.gz)
    Source code(zip)
Owner
ChatSecure
Free and open source encrypted chat for iOS.
ChatSecure
Free Jabber/XMPP client for iOS and macOS

Monal A cross platform, modern XMPP client for iOS and MacOS This is the Monal XMPP client as found in the app store. If you want to use the latest st

Monal 400 Jan 5, 2023
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Dec 26, 2022
Chat-App - GV Chat App is an iOS app built with Swift

GV Chat App - iOS Explore the docs ยป Report Bug ยท Request Feature About The Proj

Cyrus Dumbwani 0 Jan 25, 2022
A chat simulator app that uses FireBase for Authentication and chat storage

Chat-App Description Flash chat is a chat simulator app that uses FireBase for Authentication and chat storage Tools Used - Swift (Programming Languag

Victor Alvarenga 0 Oct 14, 2021
Swift-Chat-Application - Swift Chat Application Using Firebase , messagekit

Swift-Chat-Application Using Firebase , messagekit

Metin ATALAY 7 Oct 9, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022
Legacy mobile Rocket.Chat client in Swift for iOS

IMPORTANT: PLEASE READ THIS FIRST Rocket.Chat mobile is moving to React Native. Development on this repository by Rocket.Chat has now ceased. If your

Rocket.Chat 1k Dec 22, 2022
surespot is a mobile messaging application that secures all messages using end-to-end encryption.

surespot-ios ios surespot client surespot is a mobile messaging application that secures all messages using end-to-end encryption. Contribute surespot

surespot 70 Jul 21, 2022
Bluetooth LE Mesh Chat for iOS and Android

BLEMeshChat Bluetooth LE mesh chat prototype for iOS. Android version over here. Goals Use the Bluetooth 4.0 Low Energy APIs on iOS and Android to all

Chris Ballinger 479 Dec 29, 2022
Open-Source Messaging App

Acani Chats Open-Source Native iOS Messages App This project and its submodules no longer work and are no longer being maintained. Acani Chats is an i

Acani 2.1k Dec 21, 2022
A native iOS video chat app based on WebRTC

AppRTC - iOS implementation of the Google WebRTC Demo About This Xcode project is a native wrapper for the Google's WebRTC Demo. It organizes the WebR

ISBX 1.3k Dec 31, 2022
Starter code for the Flash Chat project in the Complete iOS Development Bootcamp

Flash-Chat Our Goal One of the most fundamental component of modern iOS apps is the Table View. Table Views are used everywhere from the Mail app to t

The App Brewery 45 Jul 30, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 615 Dec 27, 2022
A chat textbar for iOS inspired in whatssap app

ECMagicBar [![CI Status](https://img.shields.io/travis/Eduard Calero/ECMagicBar.

Eduard Calero 0 Dec 30, 2021
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Terry Wang 369 Nov 26, 2022
Flash-Chat - Firebase Cloud Firestore, TableViews and Cocoapod Dependencies

Flash-Chat Firebase Cloud Firestore, TableViews and Cocoapod Dependencies What I

null 0 Jan 19, 2022
Real time chat app written in Swift 5 using Firebase

Quick Chat for iOS Quick Chat for iOS is a real time chat app written in Swift 5 using Firebase. Quick Chat allows to send and receive text messages,

Henry Aslanyan 1.8k Dec 10, 2022
Real time chat application in Swift 5 using Firebase

Real time chat application in Swift 5 using Firebase

null 1 May 13, 2022
Fully Functional iOS14 Swift Chat app Using Firebase as backend.

Social Chat Messenger App This iOS14 Chat App is built with Swift in Xcode12 and Using Firebase as backend to authenticate users. Features Light and D

null 0 Nov 25, 2021