* core: auto increment chat item ids (#5088)
* core: auto increment chat item ids
* file name
* down name
* update schema
* ignore down migration on schema dump test
* fix testDirectMessageDelete test
* fix testNotes test
* core: initial api support for items around a given item (#5092)
* core: initial api support for items around a given item
* implementation and tests for local messages
* pass entities down
* unused
* getAllChatItems implementation and tests
* pagination for getting chat and tests
* remove unused import
* group implementation and tests
* refactor
* order by created at for local and direct chats
* core: initial landing api for chat and gaps (#5104)
* initial work on initial param for loading chat
* support for initial
* controller parse
* fixed sqls
* refactor names
* fix ChatLandingSection serialized type
* total accuracy on landing section
* descriptive view message
* foldr
* refactor to make landingSection reusable
* refactor: use foldr everywhere
* propagate search
* Revert "propagate search"
This reverts commit 01611fd719.
* throw when search is sent for initial
* gap size wip (needs testing)
* final
* remove order by
* remove index
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* core: fix initial api latest chat items ordering (#5151)
* core: fix one item missing from latest in initial and wrong check (#5153)
* core: fix one item missing from latest in initial and wrong check
* final fixes and tests
* clearer tests
* core: remove gaps and make sure page size is always the same (#5163)
* remove gaps
* consistent pagination size
* proper fix and around fix too
* optimize
* refactor
* core: simplify pagination
* core: first unread queries (#5174)
* core: pagination nav info (#5175)
* core: pagination nav info
* wip
* rework
* rework
* group, local
* fix
* rename
* fix tests
* just
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* auth only on change actions for profiles
* show notification count in profiles view
* auth to hidde profile
* save authorized
* refactor and icon fix
* keep key
* Use simplexmq with client_library flag
* fix server config for mq master
* simplexmq
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* multiplatform: insets
* more features and better performance
* calls and removed unused code
* changes
* removed logs
* status and nav bar colors
* chatList and newChatSheet search fields
* overhaul
* search fields, devtools, chatlist, newchatsheet, onehand on desktop, scrollbars
* android, desktop: update to Compose 1.7.0
- support image drag-and-drop from other applications right to a chat
(with and without transparent pixels - will be png or jpg)
* stable
* workaround
* changes
* ideal adapting height layout
* dropdownmenu, userpicker, onehandui, call layout, columns
* rename bars properties and strings
* faster update and better layout
* gallery in landscape with cutout
* better cutout
* 1% step on slider
* app bar moves to bottom in one hand ui
* default alpha
* changes
* userpicker colors
* changes
* blur
* fix wrong drawing area in chatview
* fix
* fixed differently
* changes
* changes
* android fix
* Revert "android fix"
This reverts commit 7d417afd9b.
* changes
* changes
* blur
* swap
* no logs
* fix build
* old Android support
* fix position of menu
* disable blur on Android 12
* call button padding
* useless code
* fix padding in group info view
* rename
* rename
* newline
* one more fix
* changes
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* docs: correction
* android, desktop: update to Compose 1.7.0
- support image drag-and-drop from other applications right to a chat
(with and without transparent pixels - will be png or jpg)
* stable
* workaround
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core, ios: get messages for multiple last notifications (#5047)
* ios: refactor notification service (#5086)
* core, ios: separately get notification connections before requesting messages; coordinate nse threads (#5085)
* android, desktop: don't stop audio track on Android in calls
There is a problem related to managing selected audio output device in
call. When microphone is disabled, WebView turns speaker on without
need. No way to prevent it was found yet. This is temporary workaround
that makes everything work except it makes microphone icon visible in
status bar (microphone is not used actually in that moment)
* enabled=false
* android: re-apply custom language when webview appears
There is a bug on Android related to including WebView. App language
changes to system language regardless of what was set before in
context's configuration. Re-set needed to be done twice: after creating
of WebView and after removing it from a view
* add link to bug
---------
Co-authored-by: Evgeny <evgeny@poberezkin.com>
* android, desktop: checking for camera in calls and handle uninitialized call
* explanation for situation without permission
* reorder
* reorder
* strings
* font
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: add roundness setting to chat items
* add tail setting
* use shape for clip
* wip tails
* shape style
* show tail only on last msg in group
* roundings
* padding for direct chats
* groups padding
* space between messages in settings preview
* refactor group paddings
* simplify
* simplify
* RcvDeleted handling
* revert uncessary
* import
* always maintain tail position
* rename
* reactions should not move
* short emoji shouldn't have tail
* remove invisible tail for voice without text
* better usage of gutters
* simplify
* rename
* simplify reactions
* linter happy
* exclude moderated items from shape
* uncessary diff
* func position
* fix chat view align on font resize (with image)
* fix tails moving bubble on max width
* fix big group names sometimes changing position
* small refactor
* fix top left corner end position
* rename
* sticky steps
* revert whitespace changes
---------
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: add floating date separator to chatview
* closer near bottom
* uncessary code
* same pill bg as other btns
* space
* varname
* safe get for lastVisibleItem
* move floating date outside of floating buttons
* fast cleanup on chat change
* reduced recomposes
* change delay position
* base near bottom offset on viewport size
* refactor
* Revert "change delay position"
This reverts commit 27b19580ed.
* simplified
* exact match on header position
* reduce recomposes
---------
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* android, desktop: make space on chat bubble end consistent
* use non breaking spaces for reserve space
* avoid first white space non breaking to not drag content down
* android, desktop: message grouping
* short format on chat
* separator for dates
* simplify
* show on separator when not current year
* default for showing date on markdown text
* remove unused code
* refactor
* refactor
* remove default locally
* fixed build
* fix
* show first date in chat
* apply padding to selectable area
* fix date on chats for previous days
* add year formatting
* fixed message grouping and time show
* remove log
* fixed reserved space for meta
* align first chat bubble with image
* metadata correct space
* remove log
* simplify item separation logic
* cleanuo
* icon tweaks
* without unneeded element
* match ios logic
* CIMetaText fix
* split selectable area
* Revert "split selectable area"
This reverts commit 1c6001ba3d.
* reserve space similar to ios
* split spacing for chat item selection
* less repeated code
* format
* increase padding
---------
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: calls switching from audio to video and back
* refactor
* working all 4 streams with mute handling differently
* changes
* changes
* wrong file
* changes
* padding
* android camera service type
* icons, sizes, clickable
* refactor
* Revert "android camera service type"
This reverts commit 9878ff38e9.
* late init camera permissions
* enabling camera sooner than call establishes (not fully done)
* changes
* alpha
* fixes for Safari
* enhancements
* fix Safari sound
* padding between buttons on desktop
* android default values for padding
* changes
* calls without encryption are supported and flipping camera on some devices works
* unused param
* logs
* background color
* play local video in Safari
* no line height
* removed one listener from per frame processing
* enhancements
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* desktop: wrap content of remote hosts on overflow
* fix long device text and align
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: display year in chat for previous years
* fix chat time, show past years in the list
* style
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* user picker as modal
* android dirty layout
* color mode switcher
* close picker on desktop opening modals
* cleanup
* remote hosts working
* icon buttons
* profile picker modal for external shares
* remove stroke
* color changes
* add unread badge to users row
* chat database settings section
* safe remove of you settings section
* picker should now open for single user
* remove create profile from settings
* paddings
* handle big names
* fonts and align
* simple animations and shadow
* address messaging
* active is grey
* padding
* hide non active devices from pills
* picker positioning
* pills order
* change view all profiles icon
* bigger space between profiles
* hosts ordering and fixes
* device pill in app bar
* simplex address -> public
* better switch of opacity bg
* create public address
* font match
* add icon for dark mode
* padding
* profile name as header
* h2 is too big
* icon colors
* icons
* settings as modal
* center settings
* fix use from desktop
* remove logs
* bar colors
* remove drawer unused code
* animate shading
* fade in fade out
* add system mode toast
* shading colors
* stop pushing shade up
* same button as ios for opening all profiles
* simplify nav bar color set
* broken transition change
* color mix
* gradient and horizontal scroll
* separate title
* align avatars to top
* picker should always remain open
* use chevron icon to see all profiles
* improvements on status and nav color set
* best case bars switching working
* change bar and shading on theme change
* remove unused var
* reset navbar colors on navigate
* updated icon color
* protect android calls
* desktop menu matching size of right side modals
* remove shading from desktop
* close user picker on settings click in desktop
* bigger profile image smaller gap to name
* fix spacer for row scroll on android
* smaller profile name
* remove unused code
* small refactor
* unused
* move desktop/mobile connection
* close drawer on swipe down 30%
* progress dump on new android design
* paddings in scroller
* gradient
* android paddings
* split inactive user picker between platforms
* move your chat profiles inside android specific
* always show your chat profiles in desktop
* fix profile creation in desktop
* remove unused var
* update android space between badges
* initial desktop design
* center android icons with avatar
* centered avatars
* unread badge
* extra space in the end of user list for android
* aligned paddings on desktop
* desktop paddings
* paddings
* remove you
* unread badge same style as chatlist
* use bedtime moon for dark mode
* chevron same size as sun/moon
* chevron and gradient
* paddings
* split android and desktop scaffold for picker
* move bars logic to android
* remove android check
* more android checks
* initial version of swipable modal
* muted as grey
* unused
* close drawer on 3/4
* better close control
* make all animations match
* move shadow with offset
* always close pciker on selection
* animated float doing nothing
* sync animation
* animation using single float
* fixed warnings
* better state update
* fix scrim color
* better handling of picker closure on desktop
* landscape mode
* intentation
* rename UserPickerScaffold
* hide shadow when picker not open
* reset inactive user scroll position on pick
* unused class
* left panel after new menu can be without padding
* small changes
* make ActiveProfilePicker reusable to reduce code duplication
* make picker scrollable
* refactor
* refactor and fix instant reload of profiles
* refactor
* icon sizes
* returned back ability to scroll to the picker on Android
* setting system theme on desktop's right click
* box
* refactor
* picker pill
* fix desktop shadow
* small change
* hiding keyboard when opening picker
* state specifying
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* ios: new user picker (#4770)
* current user picker progress
* one hand picker
* thin bullet icon
* more user picker buttons
* button clickable areas
* divider padding
* extra space after sun
* send current user option to address view
* add unread count badge
* with anim for apperance close
* edit current profile from picker
* remove you section from settings
* remove help and support
* simplify
* move settings and sun to same row
* remove redundant vstack
* long press on sun/moon switches to system setting
* remove back button from migrate device
* smooth profile transitions
* close user picker on list profiles
* fix dismiss on migrate from device
* fix dismiss when deleting last visible user while having hidden users
* picker visibility toggle tweaks
* remove strange square from profile switcher click
* dirty way to save auto accept settings on dismiss
* Revert "dirty way to save auto accept settings on dismiss"
This reverts commit e7b19ee8aa.
* consistent animation on user picker toggle
* change space between profiles
* remove result
* ignore result
* unread badge
* move to sheet
* half sheet on one hand ui
* fix dismiss on device migration
* fix desktop connect
* sun to meet other action icons
* fill bullet list button
* fix tap in settings to take full width
* icon sizings and paddings
* open settings in same sheet
* apply same trick as other buttons for ligth toggle
* layout
* open profiles sheet large when +3 users
* layout
* layout
* paddings
* paddings
* remove show progress
* always small user picker
* fixed height
* open all actions as sheets
* type, color
* simpler and more effective way of avoid moving around on user select
* dismiss user profiles sheet on user change
* connect desktop back button remove
* remove back buttons from user address view
* remove porgress
* header inside list
* alert on auto accept unsaved changes
* Cancel -> Discard
* revert
* fix connect to desktop
* remove extra space
* fix share inside multi sheet
* user picker and options as separate sheet
* revert showShareSheet
* fix current profile and all profiles selection
* change alert
* update
* cleanup user address
* remove func
* alert on unsaved changes in chat prefs
* fix layout
* cleanup
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: fix switching profiles (#4822)
* ios: different user picker layout (#4826)
* ios: different user picker layout
* remove section
* layout, color
* color
* remove activeUser
* fix gradient
* recursive sheets
* gradient padding
* share sheet
* layout
* dismiss sheets
---------
Co-authored-by: Levitating Pineapple <noreply@levitatingpineapple.com>
* ios: use the same way to share from all sheets (#4829)
* ios: close user picker before opening other sheets
* Revert "share sheet"
This reverts commit 0064155825.
* dismiss/show via callback
* Revert "ios: close user picker before opening other sheets"
This reverts commit 19110398f8.
* ios: show alerts from sheets (#4839)
* padding
* remove gradient
* cleanup
* simplify settings
* padding
---------
Co-authored-by: Diogo <diogofncunha@gmail.com>
Co-authored-by: Levitating Pineapple <noreply@levitatingpineapple.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* ios: ensure legibility of elements rendered over media
* reduce diff
* match meta padding
* material play background
* remove circlebadge
* progress circle
* meta color modes
* refactor
* conditional space
* fix
* fix2
* fix3
* revert video buttons
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* multiplatform: fix deleted contacts with conversations being identified as contact cards
* fix in ios
* Revert "fix in ios"
This reverts commit 9b8c6bc125.
* fix for ios
* same check as ios for android and desktop
* android, desktop: small enhancements to new chat sheet
* padding
* normal view matching stable
* fix one hand layout
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: Diogo <diogofncunha@gmail.com>
* android, desktop: improvement to a lock UI
* oneTime passcode screen which allows to pass verification while in call
* change
* unused line
* don't ask to set up auth if already has
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* add api and types
* basic ui
* add search on profiles
* profile images on select chat profile
* incognito adjustments
* basic api connection
* handling errors
* add loading state
* header to scroll
* selected profile on top (profile or incognito)
* adjust share profile copy
* avoid list moving around on selection commit
* bigger profile pick
* info icon interactive area
* thumbs to match contacts list size
* incognito sizes matching icons
* title to section padding
* add chevron
* align borders and other chevron icon
* prevent click on self
* only prevent selection
* update
* selectable item area
* no need for oninfo to be composable
* simplify
* wrap apis in try
* remove redundant derivedStateOf
* closure fns capital naming
* simplify current user null check
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: add chat message tail and roundness settings
* cleanup
* minor
* rename
* date separator
* revert max roundness to pills
* increase default roundness to 1
* minor
* out of bounds tails, style date separator
* formatting
* hardcode tail growth
* revert
* different shape (WIP)
* tail
* rename
* square
* only show tail for the last message
* remove func
* capture less
* variable tail height
* export localizations
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: allow for chat profile selection on new chat screen
* add api and types
* initial api connection with error handling
* improve incognito handling
* adjustments to different server connections
* loading state
* simpler handling of race
* smaller delay
* improve error handling and messages
* fix header
* remove tap section footer
* incognito adjustments
* set UI driving vars in main thread
* remove result
* incognito in profile picker and footer
* put incognito mask inside a circle
* fix click on incognito when already selected
* fix avoid users swapping position when picker is active
* fix pending contact cleanup logic
* icons
* restore incognito help
* fix updating qr code
* remove info from footer
* layout
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* ios: fix applying theme when no global theme editer yet
* base color
* added check for base
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: add api that enables change of owner user id for pending connections
* old user sends request, incognito handling and coverage
* call agent inside set connection api
* only set user id if servers match
* simplify
* reduce test noise
* return invitation when a newone is created
* add test for profile on different server
* refactor namings
* update simplexmq
* refactor
* test improvements and simplify
* remove fdescribes
* simplify and reduce vars scope
* put if back
* refactor, change error
* refactor view
* refactor
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* ios: get call invitations asynchronously
* async update chats
* async user list on appear
* move model changes to main thread
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: scrolling moves title to app bar
* one place should be without padding
* scroll related changes for both platforms
* adapt code to universal ColumnWithScrollBar
* show in center
* small adjustments
* new chat sheet fix
* divider + mix background color for desktop
* coerce
* different transition
* desktop title starts from left
* host starts from left too
* different coefficient
* settings title
* core: use threads instead of async (reduce memory)
* simplexmq
* core: only start message delivery workers when there are pending messages (#4714)
* core: only start message delivery workers when there are pending messages
* update tls
* simplexmq
* update ios, simplexmq
* simplexmq
* move network status into a separate model
* reduce network model observation scope (#4679)
* dont pass chat
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: navigation to delete chat working for group members
* modify
* Revert "modify"
This reverts commit fc811bbb84.
* don't mark non deleted on open, mark on send
* simplify
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* android, desktop: small layout changes
* padding
* blue theme handling
* themedBackground on onboarding
* status bar in call
* disabled elevation on attachments sheet to prevent seeing shadow from the bottom
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: throttle items moving around in chat list too often
* test
* Revert "test"
This reverts commit 82db198ed9.
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android: reachable toolbar card on start
* same padding for all elements
* show alert with instruction when dismissed
* reset tip, fix for variable font size
* layout, rename
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* ios: fix chat list bottom bar background appearance
* push up bottom bar, when no home indicator is present; tapable chats
* smaller toolbar
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* fix bottom toolbar in share one hand ui
* rename one hand ui label to reachable chat toolbar
* one hand ui to be android default
* dumb if remove
* make one hand ui always false when outside android
* override set of one hand ui for imports on desktop
* no need to override current
* always default one hand to true
* one hand ui without using mirrors
* remove unused vars
* added space on multiplication
* clean subscription to prop and param spread
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* use UnreadCollector for new messages
* less confusing
* collect removed items to reduce unread counts
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: added delete contacts, one hand ui, and contact action buttons
* remove unused, rework info buttons wip
* ios: moved existing buttons to new chat sheet
* ios: add basic list of contacts to new chat sheet
* ios: add deleted chats section to new chat sheet
* group chat info navigation
* fix spacing of group info buttons
* remove comment
* unify spacing logic across info views
* info button alerts wip
* calls alerts wip
* call buttons alerts
* fix call button to correctly update on preference change while in view
* refactor
* fix alert ids
* contact list wip
* more contact list actions
* open chat wip
* fix contact list elements clickability
* ios: search functionality on new chat sheet
* ios: white bg for search box on new chat sheet
* ios: don't show empty list when pasted contact is not known
* ios: add search and nav title to deleted chats
* navigation links wip
* fix refreshable
* ios: empty states for lists
* ios: hide contact cards from chat list
* ios: make search bar icon sizes consistent
* ios: fix deleted conversation dissapearing from chat list on back
* fix pending invitation cleanup in chat sheet
* rename search label from open to search
* make cleanup alert work on sheet and on dismiss
* dismiss all sheets after creation of groups
* fix double toolbar on group invite members
* fix double toolbar on group link invitation screen
* dismiss all on group creation error
* comment
* show alert in dismissAllSheets completion
* fix sheet dismissal on known group
* rework contact list with buttons (fixes dark mode)
* fix dark mode on new chat view
* fix search dark mode
* increase search padding
* improve new chat title and info button placing
* info view background
* improve create group title placement
* refactor
* fix delete dialogue in light mode
* change icon
* archivebox on contact list
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android: smaller new chat button in 1-hand UI mode, line on the correct side of the bar (wrong color in 1-hand UI mode)
* remove comment
* desktop: open new chat information buttons on start modal
* remove no longer applicable comment
* desktop, android: move to chat when accepting from chat list and snsReady
* android: keep search visible if keyboard is open on new chat sheet
* android: keep search visibile if keyboard is open on chat list
* android: scroll modal header on new chat sheet
* android: added divider between search and toolbar in one hand ui
* make one hand ui toolbar more extensible by using scafold
* android: remove tiny paddings around one hand ui toolbars
* android: hide toolbar when searching on one hand ui
* avoid passing one hand ui as param everywhere
* make paddings match in new chat sheet action buttons
* flip animation
* refactor and divider fix
* fix padding
* bigger padding
* appPrefs
---------
Co-authored-by: Diogo Cunha <diogofncunha@gmail.com>
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* android: status bar and navigation bar colors from theme
* padding
* background on desktop
* useless code
* colors
* removed unused param
* one more place
* core: fix archive export when some filename is not compatible with zip
* update
* core, ios
* update kotlin apis, ios: add alert to migrate from device
* ios: add throttling for incoming messages
* cleanup
* throttle, update unread
* dont pop the first chat
* move chats every 3 seconds
* fix
* optimize
* better updateChats
* remove file
* diff
* restore special case for the current chat
* ios: simpler item throttler
* minor
* minor
* refactor
* sort by key
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: added action buttons and delete to contact card, added toolbar
* android, desktop: added setting for one hand ui
* android: implemented one hand ui for chat list screen (#4448)
* android: implemented one hand ui for chat list screen
* android, desktop: remove extra toolbar
* android: fixed user picker positioning
* android, desktop: new chat sheet (#4479)
* (early draft) android, desktop: new chat sheet
* first draft
* android, desktop: new chat UI improvements
* android, desktop: removed group connections
not needed, missunderstanding in requirements
* android, desktop: deleted contacts and requests
* android, desktop: showing only actionable contacts
* android, desktop: made full new chat sheet scrollable
* android, desktop: handled empty lists
* refactor: fixed fn access scopes
* android, desktop: made sure contacts list refreshes on changes
* android: removed one hand ui for new chat sheet
* android, desktop: removed no longer used code
* android: moved new chat button to toolbar for one hand ui
* removed unused imports
* android, desktop: remove favorite contact set functionality from new chat sheet
* android, desktop: improved chat redirect
* android, desktop: removed padding from contact rows
* android, desktop: improved paddings
* android, desktop: started to use accent color for contact cards and requests
* android, desktop: fixed modals and improved contact stage tracking
* android, desktop: made deleted contacts contactable
* android, desktop: allowed for simplex links to be pasted in new chat sheet
* android, desktop: added interaction for contact cards
* close modal
* android, desktop: started to hide cards from chat list
* android, desktop: translations cleanup
* android, desktop: started to mark deleted chat as non deleted when open from new chat sheet
* android, desktop: fixed link pastes for existing connections
* android, desktop: redirect to groups when group links are pasted in new chat sheet
* move one hand ui toggle
* refactor
* on contact card interaction only close new chat sheet on connect
* android, desktop: removed usages of connection stage enum
* android, desktop: stopped preloading active chats on new chat sheet
* android: fixed invitation cleanup
* desktop: fixed invitation cleanup
* desktop: improved consistency on modals to close
* desktop: added small delay to focus re-position logic to avoid focus change cancelling click events
* android, desktop: made add contact learn more smaller to avoid header becoming bigger than expected
* android, desktop: redirect to chat on accept if send is ready
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* android, desktop: hide new chat sheet action buttons when search text is not empty instead of when search is focused (#4529)
* android, desktop: contacts, groups and group member action buttons (#4523)
* android, desktop: made action buttons round
* android, desktop: updated action buttons for contacts
* android, desktop: added action buttons for groups
* android, desktop: removed context menu items
* android, desktop: cleaned up visuals and paddings for contact and group card action buttons
* android, desktop: improved modal close logic
* android, desktop: improved search
* adjust color, fix paddings
* android, desktop: avoided async calls to open chats and simplified search as result
* android, desktop: moved mute button to the end on group view to match chat view
* android, desktop: made filling of icons consistent
* android, desktop: fixed contacts sheet close and dismiss actions on contact connection
* order
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* android, desktop: streamlined delete actions based on contact type (#4538)
* android, desktop: streamlined delete actions based on contact type
* removed unused translations
* refactor, adjust texts
* move toggle closer to buttons
* fix text
* fix accept request
* android, desktop: made sure deleted contacts update on deletes
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* restore deleted file
* desktop: stop closing modal on message search
* android, desktop: remove scroll preservation on new chat sheet unmount
* android, desktop: add functionality to search inside deleted conversation on main new chat sheet screen
* android, desktop: fixed attachment bug when clicking contact with keyboard open inside new chat sheet
* desktop, android: set incognito contacts color to Indigo in contact list
* remove unused code
* remove openedFromChatView
* android, desktop: change icon for contact requests and added icon for contact cards
* refactor
* fix paddings
* fix padding
* refactor
* android, desktop: fix attachment issue for deleted contacts
* remove unused
* android: invert new chat sheet on one hand ui
* info buttons alerts
* info buttons paddings
* android: one hand ui for new chat sheet and deleted chats
* fix build after latest master changes on chat model and mutations in chat
* android,desktop: add menu items back
* add scrollbars to new chat sheet
* desktop: inactivate and rephrase scan since it is not supported
* android: one hand ui for forward chat list
* android, desktop: fix for no chats in one hand ui
* desktop: use left side of screen for new chat actions
* desktop: close end modal when new chat sheet is clicked
* android: fix no filtered contacts on delete contacts view
* fix scrollbar not showing
* android: few adjustmnets in one hand ui
* change icon
* increase icon size
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* moving to mutablestate + snapshotstatelist from snapshotstatelist
* android, desktop: refactoring to use mutex when updating chats
* wrapped into class instead of object
* fix
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: move db actions out of synchronous execution on chat start
* revert some
* multiplatform: load chat data before starting chat
* use priority database access
* simplexmq
* fix race in the tests
* check chat is running
* core: allow getting call invitations and notificationn token when chat is stopped
* ios: load chats and refresh call invitations before chat is started
* simplexmq
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: blur for media
* change
* new option and applied blur to other elements
* new line
* added to migration
* long click handling
* hover on desktop
* changes
* change
* showDownloadButton function
* file rename
* don't blur when menu is visible
* rename
* ios: blur for media
* line
* one more place
* changes for video
* using notification center
* change
* unused code
* string
* simplify
* refactor ifs
* fix
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: interactive media and link previews in the list of chats
* commented out voice preview
* voice message support and various fixes
* changes to video
* changes
* playing voice in chat list with scrolling
* revert
This reverts commit 60f57403d1.
* prevent feedback loop
* version of dependency
* voice
* fix param
* working voice
* reacting on messages and chat deletion
* fix two videos in a row
* video item layout
* fix
---------
Co-authored-by: Levitating Pineapple <noreply@levitatingpineapple.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: receive only one notification message on push notification
* ios: receive only one notification message on push
* update stats to include notification server stats
* Codable
* update simplexmq
* desktop: in-app update functionality
* without Android
* refactor
* working windows
* tabs vs spaces
* better working mac
* changes
* repo
* undo manifest changes
* changes
* changes
* unneeded changes
* revert
* new line
* fix update notice
* different way
* changes to mac logic
* changes to mac logic
* more
* update strings
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: use disabled servers as known for private message routing
* send all servers to agent, add all preset servers
* update nix hashes
* refactor
* check that some servers are enabled, refactor
* update simplexmq
* remove functions
* desktop: font scale
* new line
* moved to slider
* default value highlighting
* clickable
* more places with adapted scale
* attachment and edit icons
* verified
* icons in chat view
* zoom
* new chat button size
* preview icons
* android support
* preview
* text scale in chat view's text field
* paddings
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* multiplatform: subscription icon (#4397)
* multiplatform: added network setting to control display of subscription percentage
* multiplatform: moved filter to search bar and scan to button
* multiplatform: added types and calls for new apis
* Update apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* chore: minor changes in API connections and usage
* fix: removed show sub setting from net cfg
* multiplatform: added subscription status to chats screen
* multiplatform: added reconnect all servers api
* multiplatform: added basic view for single user messages
* multiplatform: added basic xftp server info view
* multiplatform: added detailed stats view for SMP server
* multiplatform: added detailed stats view for XFTP server
* multiplatform: added individual server view for XFTP servers
* multiplatform: added individual server view for SMP servers
* multiplatform: added custom coloring for connections
* multiplatform: added all translation strings
* multiplatform: added support for multi user in serve summary
* multiplatform: added missing translations
* multiplatform: added share button to servers info
* better type safety for server summaries
* multiplatform: fixed action arrow paddings in server summary views
* multiplatform: serverSummaryView padding and icon fixes
* multiplatform: reused shared section divider
* move and rename
* remove tab icons, text
* colors
* filter button
* paddings
* fix translation keys
* text
* fix buttons clickable area, alerts
* stats view
* remove chevrons
* colors
* remove id, fix open server button
* don't log terminal items
* desktop left modal
* single timer, pass state variable
* remove unused
* fix no summary view
* net cfg
* ability to hide servers screen by clicking outside servers screen
* addressed review feedback
* move user/all users selector under tabs
* disable horizontal scroll on desktop
---------
Co-authored-by: Diogo Cunha <diogofncunha@gmail.com>
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: handle situation when not all databases created before shut down
* more logic of choosing whether to delete databases or not
* comment
* rename
* refactoring
* refactor: 💡 moved ScannerInView to separate module
made it more extensible and ready to be reused
* fix: 🐛 prevented error on desktop in lack of camera permissions
right now, connect to desktop functionality was failing if you didn't
accept permissions before jumping to this screen for the first time. In
here I did pick from other sections where cases of no permissions or
unknown permissions were correctly handled and did reuse the same
mechanism
* chore: 🤖 reverted file move
* chore: 🤖 reverted class change
* chore: 🤖 reverted uncessary change
* chore: 🤖 removed leftover
* android, desktop: wallpapers
* changes
* removed unused
* changes
* backgrounds moved to themes. can be exported/imported
* changes and refactoring
* scrollable
* change
* reorder
* theme per background
* changes
* don't drop customization in same cases
* changes
* changes
* fix state update
* different defaults
* fix Android
* removed migration
* temporary
* returned theme name as uppercase back
* resilient to wrong preset name
* more
* live color change without button
* fix
* Revert "temporary"
This reverts commit 705c92ee56.
* changes
* changes
* almost candy
* old picker and ability to specify hex color
* different image
* picker
* user theme override, fixes, import/export theme with image
* revert when about to merge: useful layout for theming
* custom image displaying and deletion work correctly
* performance
* moved code up
* changes
* color changes in picker when changing themes
* reset color without closing modal
* unused
* log
* currentTheme instead of MaterialTheme
* different inheritance logic
* fix and move sent/received message colors to top
* remove background
* performance
* fix wrong base
* changes
* fix
* small
* custom image selection made normally
* better color picker
* better picker
* refactor, fixes, optimizations
* working with unknown base theme + tests
* change
* delete wallpaper dir when importing archive
* function rename
* fix bug with state update
* update colors
* fix text colors
* update images
* changes
* remote desktop and theme mode dropdown
* default theme
* additional accent 2 changes
* fix default wallpaper
* removed ChatListAlwaysVisible
* renaming
* update messages
* changes
* default theme
* unused
* member icon background color
* image quality
* fix wallpaper on empty notes screen
* update colors
* change
* update colors
* fix update on android
* fix update on both platforms
* update colors, remove serializable
* fix color
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: save app themes as map with any text key
* remove theme preset name
* list of themes
* theme id
* theme IDs
* moar
* colors
* default to dark
* fix
* core: wallpapers api
* optional colors
* update
* api
* update
* whitespace
* typo
* test, fix
* fix color parsing
* separate UI and Theme color schemes
* update
* enable test
* multiple themes, one per color scheme
* theme overrides as a separate type
* rename
---------
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* core: fix connection failure because of race condition when connecting via link or joining group via invitation
* fix race for connection via contact address
* simplexmq
* web: add privacy page to website
* web: fix a blog frontmatter
* web: fix privacy link from other docs
* update
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: apply disappearing messages setting to call and group invitation chat items
* remove comment
* fix incorrectly set edited field
* sent group invitations
* refactor
* Revert "refactor"
This reverts commit 4dd3070c2d.
* Revert "scripts: ghc version update (#4010)"
This reverts commit 35b7f2cb1c.
* Revert "Force include hs_init_with_rtsopts (#4028)"
This reverts commit 76a33a3743.
* Revert "core: fix nix config (#4003)"
This reverts commit f8e6a78a3b.
* Revert "ci: build armv7a with 8.10.7 in the main branches (master, stable) (#3733)"
This reverts commit 0d7a32877f.
* docs: Add polish translation
* README: Add link to polish translation
* docs: Polish version of README - Fix links
* docs: Add links to polish translation, fix
* docs: Fix polish translation thanks to support team
* docs: Add links to polish translation in english version of docs
* fix links
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android, desktop: sound prompts and vibration
* moved audio playing to js
* Revert "moved audio playing to js"
This reverts commit a9355c2d88.
* sound from speaker/earpiece
* better
* changes
* license of audio
* reorder lines
* loop fix
* awaiting call receipt
* desktop
* new line
* android: more user-friendly way of granting permissions in call
* changes
* ask permissions without click at first
* changes in logic and UI
* enhancements
* show alert only when non in PiP
* change
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* ios: better layout performance for chat item
* different way of disabling menu
* two fixes
---------
Co-authored-by: Avently <avently@local>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* core: organize withAckMessage
* mark critical sections
* differentiate DB internal error from chat
* throw CRITICALs
* only CRIT on SEDatabaseError
* normalize errors
* shift MonadError into ExceptT
* simplify
* split critical handlers
* names, CRITICAL error in withAckMessage, comments
* only show critical alerts when database was locked or busy and message failed to process
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* multiplatform: migration via link
* onion screen
* unused code
* changes
* migrate from device
* changes
* don't allow going back on Archiving step
* changes
* correction
* correction
* change
* font
* changes
* changes
* changes
* show NEVER text for onion when socks is disabled
* onion setup
* no check
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* ios: migration via link
* changes in UI
* UI
* UI and API changes
* UI and logic
* simplify statement
* UI, API, logic
* formatting
* animation fix
* better animation
* test
* changed directory
* changes
* migrating to device
* migrate settings
* more state updates on main thread
* texts
* continue migration after restart
* toggle for saving passphrase and footer text
* no visual arthefacts when deleting a chat after migration
* saving settings before changing passphrase
* back button is looking disabled when it's disabled
* fixed starting chat issues when migrating to device
* paste and share link elements
* proper import process and refactoring UI in SimpleXInfo
* show progress on settings while starting chat
* title bold font
* changes as in Android
* brace
* changes as in Android
* rename to prevent confusion
* fixes and adapted to Android
* unused param
* comment
* don't allow going back on Archiving step
* update core library
* changes as in Android
* correction
* correction
* change
* qr code
* update network settings view
* update progress
* changes
* navigation view and focus in text field
* texts
---------
Co-authored-by: Avently <avently@local>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* core: add agreed connection version field
* fix
* progress
* use pqSupport and version to decide compression in messages
* pass version to encodeConnInfoPQ
* update pq enable/disable api
* remove TestConfig
* update nix dependencies
* update texts
* corrections
* create e2ee info items when connection switches from off to on first time
* corrections
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* comment
* increase test timeout
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
* xftp: redirect for descriptions with more than one chunk
* handle errors
* core: api to pass additional information with standalone file URI
* cleanup
* test info with large file
* Apply suggestions from code review
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* remove db-mediated client data
* refactor
* fix
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com>
if:(github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request'
if:(github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
# Beta Release
uses:cla-assistant/github-action@v2.1.3-beta
uses:cla-assistant/github-action@v2.3.0
env:
GITHUB_TOKEN:${{ secrets.GITHUB_TOKEN }}
# the below token should have repo scope and must be manually added by you in the repository's secret
@@ -33,4 +39,4 @@ jobs:
#custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'
#custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
#lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true)
#use-dco-flag: true - If you are using DCO instead of CLA
#use-dco-flag: true - If you are using DCO instead of CLA
# SimpleX Chat Privacy Policy and Conditions of Use
---
layout: layouts/privacy.html
permalink: /privacy/index.html
---
SimpleX Chat is the first communication network based on a new protocol stack that builds on the same ideas of complete openness and decentralization as email and web, with the focus on providing security and privacy of communications, and without compromising on usability.
# SimpleX Chat Operators Privacy Policy and Conditions of Use
SimpleX Chat communication protocol is the first protocol that has no user profile IDs of any kind, not even random numbers, cryptographic keys or hashes that identify the users. SimpleX Chat apps allow their users to send messages and files via relay server infrastructure. Relay server owners and providers do not have any access to your messages, thanks to double-ratchet end-to-end encryption algorithm (also known as Signal algorithm - do not confuse with Signal protocols or platform) and additional encryption layers, and they also have no access to your profile and contacts - as they do not provide any user accounts.
## Summary
Double ratchet algorithm has such important properties as [forward secrecy](./docs/GLOSSARY.md#forward-secrecy), sender [repudiation](./docs/GLOSSARY.md#) and break-in recovery (also known as [post-compromise security](./docs/GLOSSARY.md#post-compromise-security)).
[Introduction](#introduction) and [General principles](#general-principles) cover SimpleX Chat network design, the network operators, and the principles of privacy and security provided by SimpleX network.
If you believe that any part of this document is not aligned with our mission or values, please raise it with us via [email](chat@simplex.chat) or [chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion).
[Privacy policy](#privacy-policy) covers:
- data stored only on your device - [your profiles](#user-profiles), delivered [messages and files](#messages-and-files). You can transfer this information to another device, and you are responsible for its preservation - if you delete the app it will be lost.
- [private message delivery](#private-message-delivery) that protects your IP address and connection graph from the destination servers.
- [undelivered messages and files](#storage-of-messages-and-files-on-the-servers) stored on the servers.
- [how users connect](#connections-with-other-users) without any user profile identifiers.
- [user support](#user-support), [SimpleX directory](#simplex-directory) and [any other data](#another-information-stored-on-the-servers) that may be stored on the servers.
- [preset server operators](#preset-server-operators) and the [information they may share](#information-preset-server-operators-may-share).
- [source code license](#source-code-license) and [updates to this document](#updates).
[Conditions of Use](#conditions-of-use-of-software-and-infrastructure) are the conditions you need to accept to use SimpleX Chat applications and the relay servers of preset operators. Their purpose is to protect the users and preset server operators.
*Please note*: this summary and any links in this document are provided for information only - they are not a part of the Privacy Policy and Conditions of Use.
## Introduction
SimpleX Chat (also referred to as SimpleX) is the first communication network based on a new protocol stack that builds on the same ideas of complete openness and decentralization as email and web, with the focus on providing security and privacy of communications, and without compromising on usability.
SimpleX messaging protocol is the first protocol that has no user profile IDs of any kind, not even random numbers, cryptographic keys or hashes that identify the users. SimpleX apps allow their users to send messages and files via relay server infrastructure. Relay server owners and operators do not have any access to your messages, thanks to double-ratchet end-to-end encryption algorithm (also known as Signal algorithm - do not confuse with Signal protocols or platform) and additional encryption layers, and they also have no access to your profile and contacts - as they do not host user accounts.
Double ratchet algorithm has such important properties as [forward secrecy](/docs/GLOSSARY.md#forward-secrecy), sender [repudiation](/docs/GLOSSARY.md#) and break-in recovery (also known as [post-compromise security](/docs/GLOSSARY.md#post-compromise-security)).
If you believe that any part of this document is not aligned with SimpleX network mission or values, please raise it via [email](mailto:chat@simplex.chat) or [chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion).
## Privacy Policy
SimpleX Chat Ltd uses the best industry practices for security and encryption to provide client and server software for secure [end-to-end encrypted](./docs/GLOSSARY.md#end-to-end-encryption) messaging via private connections. This encryption cannot be compromised by the relays servers, even if they are modified or compromised, via [man-in-the-middle attack](./docs/GLOSSARY.md#man-in-the-middle-attack), unlike most other communication platforms, services and networks.
### General principles
SimpleX Chat software is built on top of SimpleX messaging and application protocols, based on a new message routing protocol allowing to establish private connections without having any kind of addresses or other identifiers assigned to its users - it does not use emails, phone numbers, usernames, identity keys or any other user profile identifiers to pass messages between the user applications.
SimpleX network software uses the best industry practices for security and encryption to provide client and server software for secure [end-to-end encrypted](/docs/GLOSSARY.md#end-to-end-encryption) messaging via private connections. This encryption is protected from being compromised by the relays servers, even if they are modified or compromised, via [man-in-the-middle attack](/docs/GLOSSARY.md#man-in-the-middle-attack).
SimpleX Chat software is similar in its design approach to email clients and browsers - it allows you to have full control of your data and freely choose the relay server providers, in the same way you choose which website or email provider to use, or use your own relay servers, simply by changing the configuration of the client software. The only current restriction to that is Apple push notifications - at the moment they can only be delivered via the preset servers that we operate, as explained below. We are exploring the solutions to deliver push notifications to iOS devices via other providers or users' own servers.
SimpleX software is built on top of SimpleX messaging and application protocols, based on a new message routing protocol allowing to establish private connections without having identifiers assigned to its users - it does not use emails, phone numbers, usernames, identity keys or any other user profile identifiers to pass messages between the user applications.
While SimpleX Chat Ltd is not a communication service provider, and provide public preset relays "as is", as experimental, without any guarantees of availability or data retention, we are committed to maintain a high level of availability, reliability and security of these preset relays. We will be adding alternative preset infrastructure providers to the software in the future, and you will continue to be able to use any other providers or your own servers.
SimpleX software is similar in its design approach to email clients and browsers - it allows you to have full control of your data and freely choose the relay server operators, in the same way you choose which website or email provider to use, or use your own relay servers, simply by changing the configuration of the client software. The only current restriction to that is Apple push notifications - at the moment they can only be delivered via the servers operated by SimpleX Chat Ltd, as explained below. We are exploring the solutions to deliver push notifications to iOS devices via other providers or users' own servers.
We see users and data sovereignty, and device and provider portability as critically important properties for any communication system.
SimpleX network operators are not communication service provider, and provide public relays "as is", as experimental, without any guarantees of availability or data retention. The operators of the relay servers preset in the app ("Preset Server Operators"), including SimpleX Chat Ltd, are committed to maintain a high level of availability, reliability and security. SimpleX client apps can have multiple preset relay server operators that you can opt-in or opt-out of using. You are and will continue to be able to use any other operators or your own servers.
SimpleX Chat security assessment was done in October 2022 by [Trail of Bits](https://www.trailofbits.com/about), and most fixes were released in v4.2 – see [the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
SimpleX network design is based on the principles of users and data sovereignty, and device and operator portability.
The implementation security assessment of SimpleX cryptography and networking was done in October 2022 by [Trail of Bits](https://www.trailofbits.com/about), and most fixes were released in v4.2 – see [the announcement](/blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
The cryptographic review of SimpleX protocols design was done in July 2024 by Trail of Bits – see [the announcement](/blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md).
### Your information
#### User profiles
Servers used by SimpleX Chat apps do not create, store or identify user profiles. The profiles you can create in the app are local to your device, and can be removed at any time via the app.
Servers used by SimpleX Chat apps do not create, store or identify user chat profiles. The profiles you can create in the app are local to your device, and can be removed at any time via the app.
When you create the local profile, no records are created on any of the relay servers, and infrastructure providers, whether SimpleX Chat Ltd or any other, have no access to any part of your information, and even to the fact that you created a profile - it is a local record stored only on your device. That means that if you delete the app, and have no backup, you will permanently lose all your data and the private connections you created with other software users.
When you create the local profile, no records are created on any of the relay servers, and infrastructure operators, whether preset in the app or any other, have no access to any part of your information, and even to the fact that you created a profile - it is a local record stored only on your device. That means that if you delete the app, and have no backup, you will permanently lose all your data and the private connections you created with other software users.
You can transfer the profile to another device by creating a backup of the app data and restoring it on the new device, but you cannot use more than one device with the copy of the same profile at the same time - it will disrupt any active conversations on either or both devices, as a security property of end-to-end encryption.
#### Messages and Files
SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 8mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the [key exchange](./docs/GLOSSARY.md#key-exchange) happens out-of-band.
SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 4mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the [key exchange](/docs/GLOSSARY.md#key-exchange) happens out-of-band.
Your message history is stored only on your own device and the devices of your contacts. While the recipients' devices are offline, messaging relay servers temporarily store end-to-end encrypted messages – you can configure which relay servers are used to receive the messages from the new contacts, and you can manually change them for the existing contacts too.
You do not have control over which servers are used to send messages to your contacts - they are chosen by them. To send messages your client needs to connect to these servers, therefore the servers chosen by your contacts can observe your IP address. You can use VPN or some overlay network (e.g., Tor) to hide your IP address from the servers chosen by your contacts. In the near future we will add the layer in the messaging protocol that will route sent message via the relays chosen by you as well.
#### Private message delivery
The messages are permanently removed from the used relay servers as soon as they are delivered, as long as these servers used unmodified published code. Undelivered messages are deleted after the time that is configured in the messaging servers you use (21 days for preset messaging servers).
You do not have control over which servers are used to send messages to your contacts - these servers are chosen by your contacts. To send messages your client by default uses configured servers to forward messages to the destination servers, thus protecting your IP address from the servers chosen by your contacts.
In case you use preset servers of more than one operator, the app will prefer to use a server of an operator different from the operator of the destination server to forward messages, preventing destination server to correlate messages as belonging to one client.
You can additionally use VPN or some overlay network (e.g., Tor) to hide your IP address from the servers chosen by you.
*Please note*: the clients allow changing configuration to connect to the destination servers directly. It is not recommended - if you make such change, your IP address will be visible to the destination servers.
#### Storage of messages and files on the servers
The messages are removed from the relay servers as soon as all messages of the file they were stored in are delivered and saving new messages switches to another file, as long as these servers use unmodified published code. Undelivered messages are also marked as delivered after the time that is configured in the messaging servers you use (21 days for preset messaging servers).
The files are stored on file relay servers for the time configured in the relay servers you use (48 hours for preset file servers).
If a messaging servers are restarted, the encrypted message can be stored in a backup file until it is overwritten by the next restart (usually within 1 week for preset relay servers).
As this software is fully open-source and provided under AGPLv3 license, all infrastructure providers and owners, and the developers of the client and server applications who use the SimpleX Chat source code, are required to publish any changes to this software under the same AGPLv3 license - including any modifications to the provided servers.
In addition to the AGPLv3 license terms, SimpleX Chat Ltd is committed to the software users that the preset relays that we provide via the apps will always be compiled from the [published open-source code](https://github.com/simplex-chat/simplexmq), without any modifications.
The encrypted messages can be stored for some time after they are delivered or expired (because servers use append-only logs for message storage). This time varies, and may be longer in connections with fewer messages, but it is usually limited to 1 month, including any backup storage.
#### Connections with other users
When you create a connection with another user, two messaging queues (you can think about them as mailboxes) are created on messaging relay servers (chosen by you and your contact each), that can be the preset servers or the servers that you and your contact configured in the app. SimpleX messaging protocol uses separate queues for direct and response messages, and the apps prefer to create these queues on two different relay servers for increased privacy, in case you have more than one relay server configured in the app, which is the default.
When you create a connection with another user, two messaging queues (you can think about them as mailboxes) are created on messaging relay servers (chosen by you and your contact each), that can be the preset servers or the servers that you and your contact configured in the app. SimpleX messaging protocol uses separate queues for direct and response messages, and the apps prefer to create these queues on two different relay servers, or, if available, the relays of two different operators, for increased privacy, in case you have more than one relay server configured in the app, which is the default.
SimpleX relay servers do not store information about which queues are linked to your profile on the device, and they do not collect any information that would allow infrastructure owners and providers to establish that these queues are related to your device or your profile - the access to each queue is authorized by two anonymous unique cryptographic keys, different for each queue, and separate for sender and recipient of the messages.
Preset and unmodified SimpleX relay servers do not store information about which queues are linked to your profile on the device, and they do not collect any information that would allow infrastructure owners and operators to establish that these queues are related to your device or your profile - the access to each queue is authorized by two anonymous unique cryptographic keys, different for each queue, and separate for sender and recipient of the messages.
#### Connection links privacy
@@ -70,99 +105,121 @@ You can always safely replace the initial part of the link `https://simplex.chat
#### iOS Push Notifications
This section applies only to the notification servers operated by SimpleX Chat Ltd.
When you choose to use instant push notifications in SimpleX iOS app, because the design of push notifications requires storing the device token on notification server, the notifications server can observe how many messaging queues your device has notifications enabled for, and approximately how many messages are sent to each queue.
Preset notification server cannot observe the actual addresses of these queues, as a separate address is used to subscribe to the notifications. It also cannot observe who sends messages to you. Apple push notifications servers can only observe how many notifications are sent to you, but not from how many contacts, or from which messaging relays, as notifications are delivered to your device end-to-end encrypted by one of the preset notification servers - these notifications only contain end-to-end encrypted metadata, not even encrypted message content, and they look completely random to Apple push notification servers.
You can read more about the design of iOS push notifications [here](https://simplex.chat/blog/20220404-simplex-chat-instant-notifications.html#our-ios-approach-has-one-trade-off).
You can read more about the design of iOS push notifications [here](./blog/20220404-simplex-chat-instant-notifications.md#our-ios-approach-has-one-trade-off).
#### Another information stored on the servers
Additional technical information can be stored on our servers, including randomly generated authentication tokens, keys, push tokens, and other material that is necessary to transmit messages. SimpleX Chat design limits this additional technical information to the minimum required to operate the software and servers. To prevent server overloading or attacks, the servers can temporarily store data that can link to particular users or devices, including IP addresses, geographic location, or information related to the transport sessions. This information is not stored for the absolute majority of the app users, even for those who use the servers very actively.
Additional technical information can be stored on the network servers, including randomly generated authentication tokens, keys, push tokens, and other material that is necessary to transmit messages. SimpleX network design limits this additional technical information to the minimum required to operate the software and servers. To prevent server overloading or attacks, the servers can temporarily store data that can link to particular users or devices, including IP addresses, geographic location, or information related to the transport sessions. This information is not stored for the absolute majority of the app users, even for those who use the servers very actively.
#### SimpleX Directory
[SimpleX Directory](./docs/DIRECTORY.md) stores: your search requests, the messages and the members profiles in the registered groups. You can connect to SimpleX Directory via [this address](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion).
This section applies only to the experimental group directory operated by SimpleX Chat Ltd.
[SimpleX Directory](/docs/DIRECTORY.md) stores: your search requests, the messages and the members profiles in the registered groups. You can connect to SimpleX Directory via [this address](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion).
#### User Support
If you contact SimpleX Chat Ltd, any personal data you share with us is kept only for the purposes of researching the issue and contacting you about your case. We recommend contacting support [via chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion) when it is possible, and avoid sharing any personal information.
The app includes support contact operated by SimpleX Chat Ltd. If you contact support, any personal data you share is kept only for the purposes of researching the issue and contacting you about your case. We recommend contacting support [via chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion) when it is possible, and avoid sharing any personal information.
### Information we may share
### Preset Server Operators
SimpleX Chat Ltd operates preset relay servers using third parties. While we do not have access and cannot share any user data, these third parties may access the encrypted user messages (but NOT the actual unencrypted message content or size) as it is stored or transmitted via our servers. Hosting providers can also store IP addresses and other transport information as part of their logs.
Preset server operators will not share the information on their servers with each other, other than aggregate usage statistics.
We use a third party for email services - if you ask for support via email, your and SimpleX Chat Ltd email providers may access these emails according to their privacy policies and terms. When the request is sensitive, we recommend contacting us via SimpleX Chat or using encrypted email using PGP key published at [openpgp.org](https://keys.openpgp.org/search?q=chat%40simplex.chat).
Preset server operators will not provide general access to their servers or the data on their servers to each other.
The cases when SimpleX Chat Ltd may share the data temporarily stored on the servers:
Preset server operators will provide non-administrative access to control port of preset servers to SimpleX Chat Ltd, for the purposes of removing identified illegal content. This control port access only allows deleting known links and files, and access to aggregate statistics, but does NOT allow enumerating any information on the servers.
### Information Preset Server Operators May Share
The preset server operators use third parties. While they do not have access and cannot share any user data, these third parties may access the encrypted user messages (but NOT the actual unencrypted message content or size) as it is stored or transmitted via the servers. Hosting and network providers can also store IP addresses and other transport information as part of their logs.
SimpleX Chat Ltd uses a third party for email services - if you ask for support via email, your and SimpleX Chat Ltd email providers may access these emails according to their privacy policies and terms. When the request is sensitive, please contact us via SimpleX Chat apps or using encrypted email using PGP key published at [openpgp.org](https://keys.openpgp.org/search?q=chat%40simplex.chat).
The cases when the preset server operators may share the data temporarily stored on the servers:
- To meet any applicable law, or enforceable governmental request or court order.
- To enforce applicable terms, including investigation of potential violations.
- To detect, prevent, or otherwise address fraud, security, or technical issues.
- To protect against harm to the rights, property, or safety of software users, SimpleX Chat Ltd, or the public as required or permitted by law.
- To protect against harm to the rights, property, or safety of software users, operators of preset servers, or the public as required or permitted by law.
At the time of updating this document, we have never provided or have been requested the access to the preset relay servers or any information from the servers by any third parties. If we are ever requested to provide such access or information, we will follow the due legal process to limit any information shared with the third parties to the minimally required by law.
At the time of updating this document, the preset server operators have never provided or have been requested the access to the preset relay servers or any information from the servers by any third parties. If the preset server operators are ever requested to provide such access or information, they will follow the due legal process to limit any information shared with the third parties to the minimally required by law.
Preset server operators will publish information they are legally allowed to share about such requests in the [Transparency reports](./docs/TRANSPARENCY.md).
### Source code license
As this software is fully open-source and provided under AGPLv3 license, all infrastructure owners and operators, and the developers of the client and server applications who use the SimpleX Chat source code, are required to publish any changes to this software under the same AGPLv3 license - including any modifications to the servers.
In addition to the AGPLv3 license terms, the preset relay server operators are committed to the software users that these servers will always be compiled from the [published open-source code](https://github.com/simplex-chat/simplexmq), without any modifications.
### Updates
We will update this Privacy Policy as needed so that it is current, accurate, and as clear as possible. Your continued use of our software applications and preset relays infrastructure confirms your acceptance of our updated Privacy Policy.
This Privacy Policy applies to SimpleX Chat Ltd and all other preset server operators you use in the app.
Please also read our Conditions of Use of Software and Infrastructure below.
This Privacy Policy may be updated as needed so that it is current, accurate, and as clear as possible. When it is updated, you will have to review and accept the changed policy within 30 days of such changes to continue using preset relay servers. Even if you fail to accept the changed policy, your continued use of SimpleX Chat software applications and preset relay servers confirms your acceptance of the updated Privacy Policy.
If you have questions about our Privacy Policy please contact us via [email](chat@simplex.chat) or [chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion).
Please also read The Conditions of Use of Software and Infrastructure below.
If you have questions about this Privacy Policy please contact SimpleX Chat Ltd via [email](mailto:chat@simplex.chat) or [chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion).
## Conditions of Use of Software and Infrastructure
You accept the Conditions of Use of Software and Infrastructure ("Conditions") by installing or using any of our software or using any of our server infrastructure (collectively referred to as "Applications"), whether preset in the software or not.
You accept the Conditions of Use of Software and Infrastructure ("Conditions") by installing or using any of SimpleX Chat software or using any of server infrastructure (collectively referred to as "Applications") operated by the Preset Server Operators, including SimpleX Chat Ltd, whether these servers are preset in the software or not.
**Minimal age**. You must be at least 13 years old to use our Applications. The minimum age to use our Applications without parental approval may be higher in your country.
**Minimal age**. You must be at least 13 years old to use SimpleX Chat Applications. The minimum age to use SimpleX Applications without parental approval may be higher in your country.
**Infrastructure**. Our Infrastructure includes preset messaging and file relay servers, and iOS push notification servers provided by SimpleX Chat Ltd for public use. Our infrastructure does not have any modifications from the [published open-source code](https://github.com/simplex-chat/simplexmq) available under AGPLv3 license. Any infrastructure provider, whether commercial or not, is required by the Affero clause (named after Affero Inc. company that pioneered the community-based Q&A sites in early 2000s) to publish any modifications under the same license. The statements in relation to Infrastructure and relay servers anywhere in this document assume no modifications to the published code, even in the cases when it is not explicitly stated.
**Infrastructure**. Infrastructure of the preset server operators includes messaging and file relay servers. SimpleX Chat Ltd also provides iOS push notification servers for public use. This infrastructure does not have any modifications from the [published open-source code](https://github.com/simplex-chat/simplexmq) available under AGPLv3 license. Any infrastructure provider, whether commercial or not, is required by the Affero clause (named after Affero Inc. company that pioneered the community-based Q&A sites in early 2000s) to publish any modifications under the same license. The statements in relation to Infrastructure and relay servers anywhere in this document assume no modifications to the published code, even in the cases when it is not explicitly stated.
**Client applications**. Our client application Software (referred to as "app" or "apps") also has no modifications compared with published open-source code, and any developers of the alternative client apps based on our code are required to publish any modifications under the same AGPLv3 license. Client applications should not include any tracking or analytics code, and do not share any information with SimpleX Chat Ltd or any other third parties. If you ever discover any tracking or analytics code, please report it to us, so we can remove it.
**Client applications**. SimpleX Chat client application Software (referred to as "app" or "apps") also has no modifications compared with published open-source code, and any developers of the alternative client apps based on SimpleX Chat code are required to publish any modifications under the same AGPLv3 license. Client applications should not include any tracking or analytics code, and do not share any tracking information with SimpleX Chat Ltd, preset server operators or any other third parties. If you ever discover any tracking or analytics code, please report it to SimpleX Chat Ltd, so it can be removed.
**Accessing the infrastructure**. For the efficiency of the network access, the client Software by default accesses all queues your app creates on any relay server within one user profile via the same network (TCP/IP) connection. At the cost of additional traffic this configuration can be changed to use different transport session for each connection. Relay servers do not collect information about which queues were created or accessed via the same connection, so the relay servers cannot establish which queues belong to the same user profile. Whoever might observe your network traffic would know which relay servers you use, and how much data you send, but not to whom it is sent - the data that leaves the servers is always different from the data they receive - there are no identifiers or ciphertext in common, even inside TLS encryption layer. Please refer to our [technical design document](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) for more information about our privacy model and known security and privacy risks.
**Accessing the infrastructure**. For the efficiency of the network access, the client Software by default accesses all queues your app creates on any relay server within one user profile via the same network (TCP/IP) connection. At the cost of additional traffic this configuration can be changed to use different transport session for each connection. Relay servers do not collect information about which queues were created or accessed via the same connection, so the relay servers cannot establish which queues belong to the same user profile. Whoever might observe your network traffic would know which relay servers you use, and how much data you send, but not to whom it is sent - the data that leaves the servers is always different from the data they receive - there are no identifiers or ciphertext in common, even inside TLS encryption layer. Please refer to the [technical design document](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) for more information about the privacy model and known security and privacy risks.
**Privacy of user data**. Servers do not retain any data we transmit for any longer than necessary to deliver the messages between apps. SimpleX Chat Ltd collects aggregate statistics across all its servers, as supported by published code and can be enabled by any infrastructure provider, but not any statistics per-user, or per geographic location, or per IP address, or per transport session. We do not have information about how many people use SimpleX Chat applications, we only know an approximate number of app installations and the aggregate traffic through the preset servers. In any case, we do not and will not sell or in any way monetize user data. Our future business model assumes charging for some optional Software features instead, in a transparent and fair way.
**Privacy of user data**. Servers do not retain any data you transmit for any longer than necessary to deliver the messages between apps. Preset server operators collect aggregate statistics across all their servers, as supported by published code and can be enabled by any infrastructure operator, but not any statistics per-user, or per geographic location, or per IP address, or per transport session. SimpleX Chat Ltd does not have information about how many people use SimpleX Chat applications, it only knows an approximate number of app installations and the aggregate traffic through the preset servers. In any case, preset server operators do not and will not sell or in any way monetize user data. The future business model assumes charging for some optional Software features instead, in a transparent and fair way.
**Operating our Infrastructure**. For the purpose of using our Software, if you continue using preset servers, you agree that your end-to-end encrypted messages are transferred via the preset servers in any countries where we have or use facilities and service providers or partners. The information about geographic location of the servers will be made available in the apps in the near future.
**Operating Infrastructure**. For the purpose of using SimpleX Chat Software, if you continue using preset servers, you agree that your end-to-end encrypted messages are transferred via the preset servers in any countries where preset server operators have or use facilities and service providers or partners. The information about geographic location and hosting providers of the preset messaging servers is available on server pages.
**Software**. You agree to downloading and installing updates to our Applications when they are available; they would only be automatic if you configure your devices in this way.
**Software**. You agree to downloading and installing updates to SimpleX Chat Applications when they are available; they would only be automatic if you configure your devices in this way.
**Traffic and device costs**. You are solely responsible for the traffic and device costs that you incur while using our Applications, and any associated taxes.
**Traffic and device costs**. You are solely responsible for the traffic and device costs that you incur while using SimpleX Chat Applications, and any associated taxes.
**Legal and acceptable usage**. You agree to use our Applications only for legal and acceptable purposes. You will not use (or assist others in using) our Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal or impermissible communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal or impermissible communications available via our Applications can be shared publicly on social media or websites. We reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via our servers, whether they were reported by the users or discovered by our team.
**Legal usage**. You agree to use SimpleX Chat Applications only for legal purposes. You will not use (or assist others in using) the Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, other preset server operators, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal communications, e.g. spam. While server operators cannot access content or identify messages or groups, in some cases the links to the illegal communications can be shared publicly on social media or websites. Preset server operators reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via their servers, whether they were reported by the users or discovered by the operators themselves.
**Damage to SimpleX Chat Ltd**. You must not (or assist others to) access, use, modify, distribute, transfer, or exploit our Applications in unauthorized manners, or in ways that harm Software users, SimpleX Chat Ltd, our Infrastructure, or any other systems. For example, you must not 1) access our Infrastructure or systems without authorization, in any way other than by using the Software; 2) disrupt the integrity or performance of our Infrastructure; 3) collect information about our users in any manner; or 4) sell, rent, or charge for our Infrastructure. This does not prohibit you from providing your own Infrastructure to others, whether free or for a fee, as long as you do not violate these Conditions and AGPLv3 license, including the requirement to publish any modifications of the relay server software.
**Damage to SimpleX Chat Ltd and Preset Server Operators**. You must not (or assist others to) access, use, modify, distribute, transfer, or exploit SimpleX Chat Applications in unauthorized manners, or in ways that harm Software users, SimpleX Chat Ltd, other preset server operators, their Infrastructure, or any other systems. For example, you must not 1) access preset operators' Infrastructure or systems without authorization, in any way other than by using the Software; 2) disrupt the integrity or performance of preset operators' Infrastructure; 3) collect information about the users in any manner; or 4) sell, rent, or charge for preset operators' Infrastructure. This does not prohibit you from providing your own Infrastructure to others, whether free or for a fee, as long as you do not violate these Conditions and AGPLv3 license, including the requirement to publish any modifications of the relay server software.
**Keeping your data secure**. SimpleX Chat is the first communication software that aims to be 100% private by design - server software neither has the ability to access your messages, nor it has information about who you communicate with. That means that you are solely responsible for keeping your device, your user profile and any data safe and secure. If you lose your phone or remove the Software from the device, you will not be able to recover the lost data, unless you made a back up. To protect the data you need to make regular backups, as using old backups may disrupt your communication with some of the contacts.
**Keeping your data secure**. SimpleX Chat is the first communication software that aims to be 100% private by design - server software neither has the ability to access your messages, nor it has information about who you communicate with. That means that you are solely responsible for keeping your device, your user profile and any data safe and secure. If you lose your phone or remove the Software from the device, you will not be able to recover the lost data, unless you made a back up. To protect the data you need to make regular backups, as using old backups may disrupt your communication with some of the contacts. SimpleX Chat Ltd and other preset server operators are not responsible for any data loss.
**Storing the messages on the device**. The messages are stored in the encrypted database on your device. Whether and how database passphrase is stored is determined by the configuration of the Software you use. The databases created prior to 2023 or in CLI (terminal) app may remain unencrypted, and it will be indicated in the app interface. In this case, if you make a backup of the data and store it unencrypted, the backup provider may be able to access the messages. Please note, that the desktop apps can be configured to store the database passphrase in the configuration file in plaintext, and unless you set the passphrase when first running the app, a random passphrase will be used and stored on the device. You can remove it from the device via the app settings.
**Storing the files on the device**. The files currently sent and received in the apps by default (except CLI app) are stored on your device encrypted using unique keys, different for each file, that are stored in the database. Once the message that the file was attached to is removed, even if the copy of the encrypted file is retained, it should be impossible to recover the key allowing to decrypt the file. This local file encryption may affect app performance, and it can be disabled via the app settings. This change will only affect the new files. If you later re-enable the encryption, it will also affect only the new files. If you make a backup of the app data and store it unencrypted, the backup provider will be able to access any unencrypted files. In any case, irrespective of the storage setting, the files are always sent by all apps end-to-end encrypted.
**No Access to Emergency Services**. Our Applications do not provide access to emergency service providers like the police, fire department, hospitals, or other public safety organizations. Make sure you can contact emergency service providers through a mobile, fixed-line telephone, or other service.
**No Access to Emergency Services**. SimpleX Chat Applications do not provide access to emergency service providers like the police, fire department, hospitals, or other public safety organizations. Make sure you can contact emergency service providers through a mobile, fixed-line telephone, or other service.
**Third-party services**. Our Applications may allow you to access, use, or interact with our or third-party websites, apps, content, and other products and services. When you use third-party services, their terms and privacy policies govern your use of those services.
**Third-party services**. SimpleX Chat Applications may allow you to access, use, or interact with the websites of SimpleX Chat Ltd, preset server operators or other third-party websites, apps, content, and other products and services. When you use third-party services, their terms and privacy policies govern your use of those services.
**Your Rights**. You own the messages and the information you transmit through our Applications. Your recipients are able to retain the messages they receive from you; there is no technical ability to delete data from their devices. While there are various app features that allow deleting messages from the recipients' devices, such as _disappearing messages_ and _full message deletion_, their functioning on your recipients' devices cannot be guaranteed or enforced, as the device may be offline or have a modified version of the Software. At the same time, repudiation property of the end-to-end encryption algorithm allows you to plausibly deny having sent the message, like you can deny what you said in a private face-to-face conversation, as the recipient cannot provide any proof to the third parties, by design.
**Your Rights**. You own the messages and the information you transmit through SimpleX Applications. Your recipients are able to retain the messages they receive from you; there is no technical ability to delete data from their devices. While there are various app features that allow deleting messages from the recipients' devices, such as _disappearing messages_ and _full message deletion_, their functioning on your recipients' devices cannot be guaranteed or enforced, as the device may be offline or have a modified version of the Software. At the same time, repudiation property of the end-to-end encryption algorithm allows you to plausibly deny having sent the message, like you can deny what you said in a private face-to-face conversation, as the recipient cannot provide any proof to the third parties, by design.
**License**. SimpleX Chat Ltd grants you a limited, revocable, non-exclusive, and non-transferable license to use our Applications in accordance with these Conditions. The source-code of Applications is available and can be used under [AGPL v3 license](https://github.com/simplex-chat/simplex-chat/blob/stable/LICENSE).
**License**. SimpleX Chat Ltd grants you a limited, revocable, non-exclusive, and non-transferable license to use SimpleX Chat Applications in accordance with these Conditions. The source-code of Applications is available and can be used under [AGPL v3 license](https://github.com/simplex-chat/simplex-chat/blob/stable/LICENSE).
**SimpleX Chat Ltd Rights**. We own all copyrights, trademarks, domains, logos, trade secrets, and other intellectual property rights associated with our Applications. You may not use our copyrights, trademarks, domains, logos, and other intellectual property rights unless you have our written permission, and unless under an open-source license distributed together with the source code. To report copyright, trademark, or other intellectual property infringement, please contact chat@simplex.chat.
**SimpleX Chat Ltd Rights**. SimpleX Chat Ltd (and, where applicable, preset server operators) owns all copyrights, trademarks, domains, logos, trade secrets, and other intellectual property rights associated with the Applications. You may not use SimpleX Chat Ltd copyrights, trademarks, domains, logos, and other intellectual property rights unless you have SimpleX Chat Ltd written permission, and unless under an open-source license distributed together with the source code. To report copyright, trademark, or other intellectual property infringement, please contact chat@simplex.chat.
**Disclaimers**. YOU USE OUR APPLICATIONS AT YOUR OWN RISK AND SUBJECT TO THE FOLLOWING DISCLAIMERS. WE PROVIDE OUR APPLICATIONS ON AN “AS IS” BASIS WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND FREEDOM FROM COMPUTER VIRUS OR OTHER HARMFUL CODE. SIMPLEX CHAT LTD DOES NOT WARRANT THAT ANY INFORMATION PROVIDED BY US IS ACCURATE, COMPLETE, OR USEFUL, THAT OUR APPLICATIONS WILL BE OPERATIONAL, ERROR-FREE, SECURE, OR SAFE, OR THAT OUR APPLICATIONS WILL FUNCTION WITHOUT DISRUPTIONS, DELAYS, OR IMPERFECTIONS. WE DO NOT CONTROL, AND ARE NOT RESPONSIBLE FOR, CONTROLLING HOW OR WHEN OUR USERS USE OUR APPLICATIONS. WE ARE NOT RESPONSIBLE FOR THE ACTIONS OR INFORMATION (INCLUDING CONTENT) OF OUR USERS OR OTHER THIRD PARTIES. YOU RELEASE US, AFFILIATES, DIRECTORS, OFFICERS, EMPLOYEES, PARTNERS, AND AGENTS ("SIMPLEX PARTIES") FROM ANY CLAIM, COMPLAINT, CAUSE OF ACTION, CONTROVERSY, OR DISPUTE (TOGETHER, "CLAIM") AND DAMAGES, KNOWN AND UNKNOWN, RELATING TO, ARISING OUT OF, OR IN ANY WAY CONNECTED WITH ANY SUCH CLAIM YOU HAVE AGAINST ANY THIRD PARTIES.
**Disclaimers**. YOU USE SIMPLEX APPLICATIONS AT YOUR OWN RISK AND SUBJECT TO THE FOLLOWING DISCLAIMERS. SIMPLEX CHAT LTD PROVIDES APPLICATIONS ON AN “AS IS” BASIS WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND FREEDOM FROM COMPUTER VIRUS OR OTHER HARMFUL CODE. SIMPLEX CHAT LTD DOES NOT WARRANT THAT ANY INFORMATION PROVIDED BY THEM IS ACCURATE, COMPLETE, OR USEFUL, THAT THEIR APPLICATIONS WILL BE OPERATIONAL, ERROR-FREE, SECURE, OR SAFE, OR THAT THEIR APPLICATIONS WILL FUNCTION WITHOUT DISRUPTIONS, DELAYS, OR IMPERFECTIONS. SIMPLEX CHAT LTD AND OTHER PRESET OPERATORS DO NOT CONTROL, AND ARE NOT RESPONSIBLE FOR, CONTROLLING HOW OR WHEN THE USERS USE APPLICATIONS. SIMPLEX CHAT LTD AND OTHER PRESET OPERATORS ARE NOT RESPONSIBLE FOR THE ACTIONS OR INFORMATION (INCLUDING CONTENT) OF THEIR USERS OR OTHER THIRD PARTIES. YOU RELEASE SIMPLEX CHAT LTD, OTHER PRESET OPERATORS, AFFILIATES, DIRECTORS, OFFICERS, EMPLOYEES, PARTNERS, AND AGENTS ("SIMPLEX PARTIES") FROM ANY CLAIM, COMPLAINT, CAUSE OF ACTION, CONTROVERSY, OR DISPUTE (TOGETHER, "CLAIM") AND DAMAGES, KNOWN AND UNKNOWN, RELATING TO, ARISING OUT OF, OR IN ANY WAY CONNECTED WITH ANY SUCH CLAIM YOU HAVE AGAINST ANY THIRD PARTIES.
**Limitation of liability**. THE SIMPLEX PARTIES WILL NOT BE LIABLE TO YOU FOR ANY LOST PROFITS OR CONSEQUENTIAL, SPECIAL, PUNITIVE, INDIRECT, OR INCIDENTAL DAMAGES RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH OUR CONDITIONS, US, OR OUR APPLICATIONS, EVEN IF THE SIMPLEX PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR AGGREGATE LIABILITY RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH OUR CONDITIONS, US, OR OUR APPLICATIONS WILL NOT EXCEED ONE DOLLAR ($1). THE FOREGOING DISCLAIMER OF CERTAIN DAMAGES AND LIMITATION OF LIABILITY WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE LAWS OF SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO SOME OR ALL OF THE EXCLUSIONS AND LIMITATIONS SET FORTH ABOVE MAY NOT APPLY TO YOU. NOTWITHSTANDING ANYTHING TO THE CONTRARY IN OUR CONDITIONS, IN SUCH CASES, THE LIABILITY OF THE SIMPLEX PARTIES WILL BE LIMITED TO THE EXTENT PERMITTED BY APPLICABLE LAW.
**Limitation of liability**. THE SIMPLEX PARTIES WILL NOT BE LIABLE TO YOU FOR ANY LOST PROFITS OR CONSEQUENTIAL, SPECIAL, PUNITIVE, INDIRECT, OR INCIDENTAL DAMAGES RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH OUR CONDITIONS, US, OR SIMPLEX APPLICATIONS, EVEN IF THE SIMPLEX PARTIES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE AGGREGATE LIABILITY OF THE SIMPLEX PARTIES RELATING TO, ARISING OUT OF, OR IN ANY WAY IN CONNECTION WITH THESE CONDITIONS, THE SIMPLEX PARTIES, OR THE APPLICATIONS WILL NOT EXCEED ONE DOLLAR ($1). THE FOREGOING DISCLAIMER OF CERTAIN DAMAGES AND LIMITATION OF LIABILITY WILL APPLY TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE LAWS OF SOME JURISDICTIONS MAY NOT ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO SOME OR ALL OF THE EXCLUSIONS AND LIMITATIONS SET FORTH ABOVE MAY NOT APPLY TO YOU. NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THE CONDITIONS, IN SUCH CASES, THE LIABILITY OF THE SIMPLEX PARTIES WILL BE LIMITED TO THE EXTENT PERMITTED BY APPLICABLE LAW.
**Availability**. Our Applications may be disrupted, including for maintenance, upgrades, or network or equipment failures. We may discontinue some or all of our Applications, including certain features and the support for certain devices and platforms, at any time.
**Availability**. The Applications may be disrupted, including for maintenance, upgrades, or network or equipment failures. SimpleX Chat Ltd may discontinue some or all of their Applications, including certain features and the support for certain devices and platforms, at any time. Preset server operators may discontinue providing the servers, at any time.
**Resolving disputes**. You agree to resolve any Claim you have with us relating to or arising from our Conditions, us, or our Applications in the courts of England and Wales. You also agree to submit to the personal jurisdiction of such courts for the purpose of resolving all such disputes. The laws of England govern our Conditions, as well as any disputes, whether in court or arbitration, which might arise between SimpleX Chat Ltd and you, without regard to conflict of law provisions.
**Resolving disputes**. You agree to resolve any Claim you have with SimpleX Chat Ltd and/or preset server operators relating to or arising from these Conditions, them, or the Applications in the courts of England and Wales. You also agree to submit to the personal jurisdiction of such courts for the purpose of resolving all such disputes. The laws of England govern these Conditions, as well as any disputes, whether in court or arbitration, which might arise between SimpleX Chat Ltd (or preset server operators) and you, without regard to conflict of law provisions.
**Changes to the conditions**. SimpleX Chat Ltd may update the Conditions from time to time. Your continued use of our Applications confirms your acceptance of our updated Conditions and supersedes any prior Conditions. You will comply with all applicable export control and trade sanctions laws. Our Conditions cover the entire agreement between you and SimpleX Chat Ltd regarding our Applications. If you do not agree with our Conditions, you should stop using our Applications.
**Changes to the conditions**. SimpleX Chat Ltd may update the Conditions from time to time. The updated conditions have to be accepted within 30 days. Even if you fail to accept updated conditions, your continued use of SimpleX Chat Applications confirms your acceptance of the updated Conditions and supersedes any prior Conditions. You will comply with all applicable export control and trade sanctions laws. These Conditions cover the entire agreement between you and SimpleX Chat Ltd, and any preset server operators where applicable, regarding SimpleX Chat Applications. If you do not agree with these Conditions, you should stop using the Applications.
**Enforcing the conditions**. If we fail to enforce any of our Conditions, that does not mean we waive the right to enforce them. If any provision of the Conditions is deemed unlawful, void, or unenforceable, that provision shall be deemed severable from our Conditions and shall not affect the enforceability of the remaining provisions. Our Applications are not intended for distribution to or use in any country where such distribution or use would violate local law or would subject us to any regulations in another country. We reserve the right to limit our Applications in any country. If you have specific questions about these Conditions, please contact us at chat@simplex.chat.
**Enforcing the conditions**. If SimpleX Chat Ltd or preset server operators fail to enforce any of these Conditions, that does not mean they waive the right to enforce them. If any provision of the Conditions is deemed unlawful, void, or unenforceable, that provision shall be deemed severable from the Conditions and shall not affect the enforceability of the remaining provisions. The Applications are not intended for distribution to or use in any country where such distribution or use would violate local law or would subject SimpleX Chat Ltd to any regulations in another country. SimpleX Chat Ltd reserve the right to limit the access to the Applications in any country. Preset operators reserve the right to limit access to their servers in any country. If you have specific questions about these Conditions, please contact SimpleX Chat Ltd at chat@simplex.chat.
**Ending these conditions**. You may end these Conditions with SimpleX Chat Ltd at any time by deleting our Applications from your devices and discontinuing use of our Infrastructure. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the conditions, Enforcing the conditions, and Ending these conditions will survive termination of your relationship with SimpleX Chat Ltd.
**Ending these conditions**. You may end these Conditions with SimpleX Chat Ltd and preset server operators at any time by deleting the Applications from your devices and discontinuing use of the Infrastructure of SimpleX Chat Ltd and preset server operators. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the conditions, Enforcing the conditions, and Ending these conditions will survive termination of your relationship with SimpleX Chat Ltd and/or preset server operators.
[](https://www.reddit.com/r/SimpleXChat)
<a rel="me" href="https://mastodon.social/@simplex"></a>
5. ⚡️ [Contribute](#contribute) and [help us with donations](#help-us-with-donations).
5. ⚡️ [Contribute](#contribute) and [support us with donations](#please-support-us-with-your-donations).
[Learn more about SimpleX Chat](#contents).
@@ -72,9 +72,9 @@ You must:
Messages not following these rules will be deleted, the right to send messages may be revoked, and the access to the new members to the group may be temporarily restricted, to prevent re-joining under a different name - our imperfect group moderation does not have a better solution at the moment.
You can join an English-speaking users group if you want to ask any questions: [#SimpleX users group](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2Fos8FftfoV8zjb2T89fUEjJtF7y64p5av%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAQqMgh0fw2lPhjn3PDIEfAKA_E0-gf8Hr8zzhYnDivRs%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22lBPiveK2mjfUH43SN77R0w%3D%3D%22%7D)
You can join an English-speaking users group if you want to ask any questions: [#SimpleX users group](https://simplex.chat/contact#/?v=2-4&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2Fos8FftfoV8zjb2T89fUEjJtF7y64p5av%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAQqMgh0fw2lPhjn3PDIEfAKA_E0-gf8Hr8zzhYnDivRs%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22lBPiveK2mjfUH43SN77R0w%3D%3D%22%7D)
There is also a group [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F6eHqy7uAbZPOcA6qBtrQgQquVlt4Ll91%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAqV_pg3FF00L98aCXp4D3bOs4Sxv_UmSd-gb0juVoQVs%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22XonlixcHBIb2ijCehbZoiw%3D%3D%22%7D) for developers who build on SimpleX platform:
There is also a group [#simplex-devs](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FvYCRjIflKNMGYlfTkuHe4B40qSlQ0439%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAHNdcqNbzXZhyMoSBjT2R0-Eb1EPaLyUg3KZjn-kmM1w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22PD20tcXjw7IpkkMCfR6HLA%3D%3D%22%7D) for developers who build on SimpleX platform:
- chat bots and automations
- integrations with other apps
@@ -83,7 +83,7 @@ There is also a group [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=s
There are groups in other languages, that we have the apps interface translated into. These groups are for testing, and asking questions to other SimpleX Chat users:
You can join either by opening these links in the app or by opening them in a desktop browser and scanning the QR code.
@@ -150,7 +150,7 @@ We would love to have you join the development! You can help us with:
- contributing to SimpleX Chat knowledge-base.
- developing features - please connect to us via chat so we can help you get started.
## Help us with donations
## Please support us with your donations
Huge thank you to everybody who donated to SimpleX Chat!
@@ -158,20 +158,19 @@ We are prioritizing users privacy and security - it would be impossible without
Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX platform based on the same principles as email and web, but much more private and secure.
Your donations help us raise more funds – any amount, even the price of the cup of coffee, would make a big difference for us.
Your donations help us raise more funds - any amount, even the price of the cup of coffee, would make a big difference for us.
It is possible to donate via:
- [GitHub](https://github.com/sponsors/simplex-chat) - it is commission-free for us.
-[OpenCollective](https://opencollective.com/simplex-chat) - it charges a commission, and also accepts donations in crypto-currencies.
- [GitHub](https://github.com/sponsors/simplex-chat) (commission-free) or [OpenCollective](https://opencollective.com/simplex-chat) (~10% commission).
-please ask if you want to donate any other coins.
Thank you,
@@ -234,16 +233,20 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Oct 14, 2024. SimpleX network: security review of protocols design by Trail of Bits, v6.1 released with better calls and user experience.](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md)
[Aug 14, 2024. SimpleX network: the investment from Jack Dorsey and Asymmetric, v6.0 released with the new user experience and private message routing](./blog/20240814-simplex-chat-vision-funding-v6-private-routing-new-user-experience.md)
[Jun 4, 2024. SimpleX network: private message routing, v5.8 released with IP address protection and chat themes](./blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.md)
[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md).
[Sep 25, 2023. SimpleX Chat v5.3 released: desktop app, local file encryption, improved groups and directory service](./blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.md).
[Jul 22, 2023. SimpleX Chat: v5.2 released with message delivery receipts](./blog/20230722-simplex-chat-v5-2-message-delivery-receipts.md).
[May 23, 2023. SimpleX Chat: v5.1 released with message reactions and self-destruct passcode](./blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.md).
[Apr 22, 2023. SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb](./blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md).
[Mar 1, 2023. SimpleX File Transfer Protocol – send large files efficiently, privately and securely, soon to be integrated into SimpleX Chat apps.](./blog/20230301-simplex-file-transfer-protocol.md).
@@ -291,25 +294,27 @@ What is already implemented:
1. Instead of user profile identifiers used by all other platforms, even the most private ones, SimpleX uses [pairwise per-queue identifiers](./docs/GLOSSARY.md#pairwise-pseudonymous-identifier) (2 addresses for each unidirectional message queue, with an optional 3rd address for push notifications on iOS, 2 queues in each connection between the users). It makes observing the network graph on the application level more difficult, as for `n` users there can be up to `n * (n-1)` message queues.
2. [End-to-end encryption](./docs/GLOSSARY.md#end-to-end-encryption) in each message queue using [NaCl cryptobox](https://nacl.cr.yp.to/box.html). This is added to allow redundancy in the future (passing each message via several servers), to avoid having the same ciphertext in different queues (that would only be visible to the attacker if TLS is compromised). The encryption keys used for this encryption are not rotated, instead we are planning to rotate the queues. Curve25519 keys are used for key negotiation.
3. [Double ratchet](./docs/GLOSSARY.md#double-ratchet-algorithm) end-to-end encryption in each conversation between two users (or group members). This is the same algorithm that is used in Signal and many other messaging apps; it provides OTR messaging with [forward secrecy](./docs/GLOSSARY.md#forward-secrecy) (each message is encrypted by its own ephemeral key) and [break-in recovery](./docs/GLOSSARY.md#post-compromise-security) (the keys are frequently re-negotiated as part of the message exchange). Two pairs of Curve448 keys are used for the initial [key agreement](./docs/GLOSSARY.md#key-agreement-protocol), initiating party passes these keys via the connection link, accepting side - in the header of the confirmation message.
4.Additional layer of encryption using NaCL cryptobox for the messages delivered from the server to the recipient. This layer avoids having any ciphertext in common between sent and received traffic of the server inside TLS (and there are no identifiers in common as well).
5.Several levels of [content padding](./docs/GLOSSARY.md#message-padding) to frustrate message size attacks.
6.All message metadata, including the time when the message was received by the server (rounded to a second) is sent to the recipients inside an encrypted envelope, so even if TLS is compromised it cannot be observed.
7.Only TLS 1.2/1.3 are allowed for client-server connections, limited to cryptographic algorithms: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
8.To protect against replay attacks SimpleX servers require [tlsunique channel binding](https://www.rfc-editor.org/rfc/rfc5929.html) as session ID in each client command signed with per-queue ephemeral key.
9. To protect your IP address all SimpleX Chat clients support accessing messaging servers via Tor - see [v3.1 release announcement](./blog/20220808-simplex-chat-v3.1-chat-groups.md) for more details.
10.Local database encryption with passphrase - your contacts, groups and all sent and received messages are stored encrypted. If you used SimpleX Chat before v4.0 you need to enable the encryption via the app settings.
11. Transport isolation - different TCP connections and Tor circuits are used for traffic of different user profiles, optionally - for different contacts and group member connections.
12.Manual messaging queue rotations to move conversation to another SMP relay.
13.Sending end-to-end encrypted files using [XFTP protocol](https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html).
14.Local files encryption.
4.[Post-quantum resistant key exchange](./docs/GLOSSARY.md#post-quantum-cryptography) in double ratchet protocol *on every ratchet step*. Read more in [this post](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md) and also see this [publication by Apple]( https://security.apple.com/blog/imessage-pq3/) explaining the need for post-quantum key rotation.
5.Additional layer of encryption using NaCL cryptobox for the messages delivered from the server to the recipient. This layer avoids having any ciphertext in common between sent and received traffic of the server inside TLS (and there are no identifiers in common as well).
6.Several levels of [content padding](./docs/GLOSSARY.md#message-padding) to frustrate message size attacks.
7.All message metadata, including the time when the message was received by the server (rounded to a second) is sent to the recipients inside an encrypted envelope, so even if TLS is compromised it cannot be observed.
8.Only TLS 1.2/1.3 are allowed for client-server connections, limitedto cryptographic algorithms: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
9. To protect against replay attacks SimpleX servers require [tlsunique channel binding](https://www.rfc-editor.org/rfc/rfc5929.html) as session ID in each client command signed with per-queue ephemeral key.
10.To protect your IP address from unknown messaging relays, and for per-message transport anonymity (compared with Tor/VPN per-connection anonymity), from v6.0 all SimpleX Chat clients use private message routing by default. Read more in [this post](./blog/20240604-simplex-chat-v5.8-private-message-routing-chat-themes.md#private-message-routing).
11. To protect your IP address from unknown file relays, when SOCKS proxy is not enabled SimpleX Chat clients ask for a confirmation before downloading the files from unknown servers.
12.To protect your IP address from known servers all SimpleX Chat clients support accessing messaging servers via Tor - see [v3.1 release announcement](./blog/20220808-simplex-chat-v3.1-chat-groups.md) for more details.
13.Local database encryption with passphrase - your contacts, groups and all sent and received messages are stored encrypted. If you used SimpleX Chat before v4.0 you need to enable the encryption via the app settings.
14.Transport isolation - different TCP connections and Tor circuits are used for traffic of different user profiles, optionally - for different contacts and group member connections.
15. Manual messaging queue rotations to move conversation to another SMP relay.
16. Sending end-to-end encrypted files using [XFTP protocol](https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html).
17. Local files encryption.
We plan to add:
1.Senders' SMP relays and recipients' XFTP relays to reduce traffic and conceal IP addresses from the relays chosen, and potentially controlled, by another party.
2.Post-quantum resistant key exchange in double ratchet protocol.
3.Automatic message queue rotation and redundancy. Currently the queues created between two users are used until the queue is manually changed by the user or contact is deleted. We are planning to add automatic queue rotation to make these identifiers temporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
4.Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
5. Reproducible builds – this is the limitation of the development stack, but we will be investing into solving this problem. Users can still build all applications and services from the source code.
1.Automatic message queue rotation and redundancy. Currently the queues created between two users are used until the queue is manually changed by the user or contact is deleted. We are planning to add automatic queue rotation to make these identifiers temporary and rotate based on some schedule TBC (e.g., every X messages, or every X hours/days).
2.Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
3.Reproducible builds – this is the limitation of the development stack, but we will be investing into solving this problem. Users can still build all applications and services from the source code.
4.Recipients' XFTP relays to reduce traffic and conceal IP addresses from the relays chosen, and potentially controlled, by another party.
## For developers
@@ -375,10 +380,11 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
- ✅ Post-quantum resistant key exchange in double ratchet protocol.
- ✅ Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- 🏗 Improve stability and reduce battery usage.
- 🏗 Improve experience for the new users.
- 🏗 Post-quantum resistant key exchange in double ratchet protocol.
- 🏗 Large groups, communities and public channels.
- 🏗 Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- Privacy & security slider - a simple way to set all settings at once.
- SMP queue redundancy and rotation (manual is supported).
- Include optional message into connection request sent via contact address.
@@ -397,7 +403,9 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
[SimpleX protocols and security model](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) was reviewed, and had many breaking changes and improvements in v1.0.0.
The security audit was performed in October 2022 by [Trail of Bits](https://www.trailofbits.com/about), and most fixes were released in v4.2.0– see [the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
The implementation security assessment of SimpleX cryptography and networking was done in October 2022 by [Trail of Bits](https://www.trailofbits.com/about) – see [the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
The cryptographic review of SimpleX protocols was done in July 2024 by Trail of Bits – see [the announcement](./blog/20241014-simplex-network-v6-1-security-review-better-calls-user-experience.md).
SimpleX Chat is still a relatively early stage platform (the mobile apps were released in March 2022), so you may discover some bugs and missing features. We would really appreciate if you let us know anything that needs to be fixed or improved.
@@ -407,13 +415,13 @@ We have never provided or have been requested access to our servers or any infor
We do not log IP addresses of the users and we do not perform any traffic correlation on our servers. If transport level security is critical you must use Tor or some other similar network to access messaging servers. We will be improving the client applications to reduce the opportunities for traffic correlation.
Please read more in [Terms & privacy policy](./PRIVACY.md).
Please read more in [Privacy Policy](./PRIVACY.md).
## Security contact
To report a security vulnerability, please send us email to chat@simplex.chat. We will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.
Please see our [Security Policy](./docs/SECURITY.md) on how to report security vulnerabilities to us. We will coordinate the fix and disclosure.
Please treat any findings of possible traffic correlation attacks allowing to correlate two different conversations to the same user, other than covered in [the threat model](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model), as security vulnerabilities, and follow this disclosure process.
Please do NOT report security vulnerabilities via GitHub issues.
logger.debug("Changes in devices, current audio devices: \(String(describing:self.availableInputs.map({$0.portType.rawValue}))), output: \(String(describing:self.currentDevice?.portType.rawValue))")
logger.debug("CallController chat started \(chatIsReady)\(ChatModel.shared.chatInitialized)\(ChatModel.shared.chatRunning==true)\(String(describing:AppChatState.shared.value))")
logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)}")
logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)")
logger.debug("The peer has an old version. Remote audio track is nil = \(self.activeCall?.remoteAudioTrack==nil), video = \(self.activeCall?.remoteVideoTrack==nil)")
ChatItemView(chat:Chat.sampleData,chatItem:ChatItem.getFileMsgContentSample(text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",fileStatus:.rcvInvitation),revealed:Binding.constant(false))
ChatItemView(chat:Chat.sampleData,chatItem:ChatItem.getFileMsgContentSample(text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",fileStatus:.rcvInvitation))
ChatItemView(chat:Chat.sampleData,chatItem:ChatItem.getVoiceMsgContentSample(text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."),revealed:Binding.constant(false))
ChatItemView(chat:Chat.sampleData,chatItem:ChatItem.getVoiceMsgContentSample(text:"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."))
?Text("Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.")
.font(.caption)
.foregroundColor(theme.colors.secondary)
.fontWeight(.light)
:e2eeInfoNoPQText()
}
privatefunce2eeInfoNoPQText()->Text{
Text("Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.")
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.