* 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>
* rfc: migrate app settings as part of export/import/migration
* export/import app settings
* test, fix
* chat: store app settings in db (#3834)
* chat: store app settings in db
* add combining with app-defaults
* commit schema
* test with tweaked settings
* remove unused error
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* remove app settings from export/import
* test, more settings
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com>
* Fix broken link on website
* Fix Sybil attack link
* fix MITM link
* fix supernovas.space link
* fix supernovas.space links
* remove broken github link
* remove dead github link
* fix link to readme
* ios: Picture-in-picture while in calls
* simplify
* improvements
* back button and lots of small issues
* layout
* padding
* back button
* animation, padding, fullscreen
* end active call button
* removed unused code
* unused line
* transition
* better
* better
* deinit PiP controller
* stop camera after call end
* formatting
* stop capture if active
---------
Co-authored-by: Avently <avently@local>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
* android: ability to hide active call
* enhancements
* fixed some problems and adapted to lock screen usage
* change
* reduce diff
* dealing with disable PiP by user
* fix back action
* fix hidden information on view rotation while info collapsed
* better info showing
* status bar color and user icon
* reorder
* experiment
* icon placement
* enhancements
* back button
* invitation accepted state handling
* awesome background work
* better service interaction and UI
* disabled call overlay when call ends and ability to accept a new call from the same contact while previous call is not ended
* incomming call alert
* enhancements
* text
* text2
* top area
* faster ending call
* a lot of enhancements
* paddings
* icon position
* move icon
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-02-05 21:44:02 +00:00
1172 changed files with 136285 additions and 28993 deletions
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
# Beta Release
uses:cla-assistant/github-action@v2.1.3-beta
uses:cla-assistant/github-action@v2.3.0
env:
env:
GITHUB_TOKEN:${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN:${{ secrets.GITHUB_TOKEN }}
# the below token should have repo scope and must be manually added by you in the repository's secret
# 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-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.'
#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)
#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 is the first communication platform that has no user profile IDs of any kind, not even random numbers. Not only it has no access to your messages (thanks to open-source double-ratchet end-to-end encryption protocol and additional encryption layers), it also has no access to your profile and contacts - we cannot observe your connections graph.
# SimpleX Chat Privacy Policy and Conditions of Use
If you believe that some of the clauses in this document are not aligned with our mission or principles, 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).
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 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.
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 our mission or values, please raise it with us 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
## Privacy Policy
SimpleX Chat Ltd. ("SimpleX Chat") uses the best industry practices for security and encryption to provide secure [end-to-end encrypted](./docs/GLOSSARY.md#end-to-end-encryption) messaging via private connections. This encryption cannot be compromised by the servers via [man-in-the-middle attack](./docs/GLOSSARY.md#man-in-the-middle-attack).
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.
SimpleX Chat is built on top of SimpleX messaging and application platform that uses a new message routing protocol allowing to establish private connections without having any kind of addresses that identify its users - we don't use emails, phone numbers, usernames, identity keys or any other user identifiers to pass messages between the users.
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 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.0 – see [the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md).
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.
### Information you provide
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.
We see users and data sovereignty, and device and provider portability as critically important properties for any communication system.
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).
### Your information
#### User profiles
#### User profiles
We do not store user profiles. The profile you create in the app is local to your device.
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.
When you create a user profile, no records are created on our servers, and we have no access to any part of your profile 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 the data and the private connections you create with other users.
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.
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
#### Messages and Files
SimpleX Chat 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 256kb, 1mb or 8mb via all or some of the configured file 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 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.
Your message history is stored only on your own device and the devices of your contacts. While the recipients' devices are offline SimpleX Chat temporarily stores end-to-end encrypted messages on the messaging (SMP) servers that are preset in the app or chosen by the users.
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.
The messages are permanently removed from the preset servers as soon as they are delivered. 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 - 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.
The files are stored on file (XFTP) servers for the time configured in the file servers you use (48 hours for preset file servers).
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).
If a messaging or file servers are restarted, the encrypted message or the record of the file can be stored in a backup file until it is overwritten by the next restart (usually within 1 week).
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.
#### Connections with other users
#### Connections with other users
When you create a connection with another user, two messaging queues (you can think about them as about mailboxes) are created on chosen messaging servers, that can be the preset servers or the servers that you configured in the app, in case it allows such configuration. SimpleX uses separate queues for direct and response messages, that the client applications prefer to create on two different servers, in case you have more than one 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 for increased privacy, in case you have more than one relay server configured in the app, which is the default.
At the time of updating this document all our client applications allow configuring the servers. Our 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 us 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.
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.
#### Connection links privacy
When you create a connection with another user, the app generates a link/QR code that can be shared with the user to establish the connection via any channel (email, any other messenger, or a video call). This link is safe to share via insecure channels, as long as you can identify the recipient and also trust that this channel did not replace this link (to mitigate the latter risk you can validate the security code via the app).
While the connection "links" contain SimpleX Chat Ltd domain name `simplex.chat`, this site is never accessed by the app, and is only used for these purposes:
- to direct the new users to the app download instructions,
- to show connection QR code that can be scanned via the app,
- to "namespace" these links,
- to open links directly in the installed app when it is clicked outside of the app.
You can always safely replace the initial part of the link `https://simplex.chat/` either with `simplex:/` (which is a URI scheme provisionally registered with IANA) or with any other domain name where you can self-host the app download instructions and show the connection QR code (but in case it is your domain, it will not open in the app). Also, while the page renders QR code, all the information needed to render it is only available to the browser, as the part of the "link" after `#` symbol is not sent to the website server.
#### iOS Push Notifications
#### iOS Push Notifications
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.
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.
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, or even how many contacts, send messages to you, as notifications are delivered to your device end-to-end encrypted by the messaging servers.
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.
It also does not allow to see message content or sizes, as the actual messages are not sent via the notification server, only the fact that the message is available and where it can be received from (the latter information is encrypted, so that the notification server cannot observe it). 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
#### 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 limits this additional technical information to the minimum required to operate the Services.
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.
#### SimpleX Directory Service
#### SimpleX Directory
[SimpleX directory service](./docs/DIRECTORY.md) stores: your search requests, the messages and the members profiles in the group. You can connect to SimpleX Directory Service 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).
[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.
#### User Support
If you contact SimpleX Chat any personal data you may 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.
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.
### Information we may share
### Information we may share
We operate our Services using third parties. While we do not share any user data, these third party may access the encrypted user data as it is stored or transmitted via our servers.
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.
We use a third party for email services - if you ask for support via email, your and SimpleX Chat email providers may access these emails according to their privacy policies and terms of service.
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).
The cases when SimpleX Chat may need to share the data we temporarily store on the servers:
The cases when SimpleX Chat Ltd may share the data temporarily stored on the servers:
- To meet any applicable law, regulation, legal process or enforceable governmental request.
- To meet any applicable law, or enforceable governmental request or court order.
- To enforce applicable Terms, including investigation of potential violations.
- To enforce applicable terms, including investigation of potential violations.
- To detect, prevent, or otherwise address fraud, security, or technical issues.
- To detect, prevent, or otherwise address fraud, security, or technical issues.
- To protect against harm to the rights, property, or safety of SimpleX Chat, our users, or the public as required or permitted by law.
- 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.
At the time of updating this document, we have never provided or have been requested the access to our servers or any information from our servers by any third parties. If we are ever requested to provide such access or information, we will follow the due legal process.
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.
We will publish information we are legally allowed to share about such requests in the [Transparency reports](./docs/TRANSPARENCY.md).
### Updates
### 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 Services confirms your acceptance of our updated Privacy Policy.
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.
Please also read our Terms of Service below.
Please also read our Conditions of Use of Software and Infrastructure below.
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).
If you have questions about our Privacy Policy please contact us 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).
## Terms of Service
## Conditions of Use of Software and Infrastructure
You accept our Terms of Service ("Terms") by installing or using any of our apps or services ("Services").
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.
**Minimal age**. You must be at least 13 years old to use our Services. The minimum age to use our Services without parental approval may be higher in your country.
**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.
**Accessing the servers**. For the efficiency of the network access, the apps access all queues you create on any server via the same network (TCP/IP) connection. Our servers do not collect information about which queues were accessed via the same connection, so we cannot establish which queues belong to the same users. Whoever might observe your network traffic would know which 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. 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.
**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.
**Privacy of user data**. We do not retain any data we transmit for any longer than necessary to provide the Services. We only collect aggregate statistics across all users, not per user - we do not have information about how many people use SimpleX Chat (we only know an approximate number of app installations and the aggregate traffic through our servers). In any case, we do not and will not sell or in any way monetize user data.
**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.
**Operating our services**. For the purpose of operating our Services, you agree that your end-to-end encrypted messages are transferred via our servers in the United Kingdom, the United States and other countries where we have or use facilities and service providers or partners.
**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.
**Software**. You agree to downloading and installing updates to our Services when they are available; they would only be automatic if you configure your devices in this way.
**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.
**Traffic and device costs**. You are solely responsible for the traffic and device costs on which you use our Services, and any associated taxes.
**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.
**Legal and acceptable usage**. You agree to use our Services only for legal and acceptable purposes. You will not use (or assist others in using) our Services in ways that: 1) violate or infringe the rights of SimpleX Chat, our users, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal or impermissible communications, e.g. spam.
**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.
**Damage to SimpleX Chat**. You must not (or assist others to) access, use, modify, distribute, transfer, or exploit our Services in unauthorized manners, or in ways that harm SimpleX Chat, our Services, or systems. For example, you must not 1) access our Services or systems without authorization, other than by using the apps; 2) disrupt the integrity or performance of our Services; 3) collect information about our users in any manner; or 4) sell, rent, or charge for our Services.
**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.
**Keeping your data secure**. SimpleX Chat is the first messaging platform that is 100% private by design - we neither have ability to access your messages, nor we have information about who you communicate with. That means that you are solely responsible for keeping your device and your user profile safe and secure. If you lose your phone or remove the app, you will not be able to recover the lost data, unless you made a back up.
**Legal usage**. You agree to use our Applications only for legal 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 communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal 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.
**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 application you use. Legacy databases created prior to 2023 or in CLI (terminal) app may remain unencrypted, and it will be indicated in the app. In this case, if you make a backup of the app data and store it unencrypted, the backup provider may be able to access the messages. Please note, that the beta version of desktop app currently stores the database passphrase in the configuration file in plaintext, so you may need to remove passphrase from the device via the app configuration.
**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.
**Storing the files on the device**. The files are stored on your device unencrypted. If you make a backup of the app data and store it unencrypted, the backup provider will be able to access the files.
**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.
**No Access to Emergency Services**. Our Services 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.
**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.
**Third-party services**. Our Services may allow you to access, use, or interact with 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.
**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.
**Your Rights**. You own the messages and the information you transmit through our Services. Your recipients are able to retain the messages you 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 app.
**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.
**License**. SimpleX Chat grants you a limited, revocable, non-exclusive, and non-transferable license to use our Services in accordance with these Terms. The source-code of services is available and can be used under [AGPL v3 license](https://github.com/simplex-chat/simplex-chat/blob/stable/LICENSE)
**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.
**SimpleX Chat Rights**. We own all copyrights, trademarks, domains, logos, trade secrets, and other intellectual property rights associated with our Services. 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.
**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.
**Disclaimers**. YOU USE OUR SERVICES AT YOUR OWN RISK AND SUBJECT TO THE FOLLOWING DISCLAIMERS. WE PROVIDE OUR SERVICES 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 DOES NOT WARRANT THAT ANY INFORMATION PROVIDED BY US IS ACCURATE, COMPLETE, OR USEFUL, THAT OUR SERVICES WILL BE OPERATIONAL, ERROR-FREE, SECURE, OR SAFE, OR THAT OUR SERVICES WILL FUNCTION WITHOUT DISRUPTIONS, DELAYS, OR IMPERFECTIONS. WE DO NOT CONTROL, AND ARE NOT RESPONSIBLE FOR, CONTROLLING HOW OR WHEN OUR USERS USE OUR SERVICES. 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.
**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).
**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 TERMS, US, OR OUR SERVICES, 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 TERMS, US, OR OUR SERVICES 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 TERMS, IN SUCH CASES, THE LIABILITY OF THE SIMPLEX PARTIES WILL BE LIMITED TO THE EXTENT PERMITTED BY APPLICABLE LAW.
**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.
**Availability**. Our Services may be interrupted, including for maintenance, upgrades, or network or equipment failures. We may discontinue some or all of our Services, including certain features and the support for certain devices and platforms, at any time.
**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.
**Resolving disputes**. You agree to resolve any Claim you have with us relating to or arising from our Terms, us, or our Services 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 Terms, as well as any disputes, whether in court or arbitration, which might arise between SimpleX Chat and you, without regard to conflict of law provisions.
**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.
**Changes to the terms**. SimpleX Chat may update the Terms from time to time. Your continued use of our Services confirms your acceptance of our updated Terms and supersedes any prior Terms. You will comply with all applicable export control and trade sanctions laws. Our Terms cover the entire agreement between you and SimpleX Chat regarding our Services. If you do not agree with our Terms, you should stop using our Services.
**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.
**Enforcing the terms**. If we fail to enforce any of our Terms, that does not mean we waive the right to enforce them. If any provision of the Terms is deemed unlawful, void, or unenforceable, that provision shall be deemed severable from our Terms and shall not affect the enforceability of the remaining provisions. Our Services 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 Services in any country. If you have specific questions about these Terms, please contact us at chat@simplex.chat.
**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.
**Ending these Terms**. You may end these Terms with SimpleX Chat at any time by deleting SimpleX Chat app(s) from your device and discontinuing use of our Services. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the terms, Enforcing the terms, and Ending these Terms will survive termination of your relationship with SimpleX Chat.
**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.
Updated August 17, 2023
**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.
**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.
[](https://www.reddit.com/r/SimpleXChat)
[](https://www.reddit.com/r/SimpleXChat)
<a rel="me" href="https://mastodon.social/@simplex"></a>
<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).
[Learn more about SimpleX Chat](#contents).
@@ -74,7 +74,7 @@ Messages not following these rules will be deleted, the right to send messages m
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=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)
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
- chat bots and automations
- integrations with other apps
- integrations with other apps
@@ -150,7 +150,7 @@ We would love to have you join the development! You can help us with:
- contributing to SimpleX Chat knowledge-base.
- contributing to SimpleX Chat knowledge-base.
- developing features - please connect to us via chat so we can help you get started.
- 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!
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.
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:
It is possible to donate via:
- [GitHub](https://github.com/sponsors/simplex-chat) - it is commission-free for us.
- [GitHub](https://github.com/sponsors/simplex-chat) (commission-free) or [OpenCollective](https://opencollective.com/simplex-chat) (~10% commission).
-[OpenCollective](https://opencollective.com/simplex-chat) - it charges a commission, and also accepts donations in crypto-currencies.
@@ -234,6 +233,16 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
Recent and important updates:
[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)
[Apr 26, 2024. SimpleX network: legally binding transparency, v5.7 released with better calls and messages.](./blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md)
[Mar 23, 2024. SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration.](./blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.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)
[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).
[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).
@@ -291,25 +300,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.
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.
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.
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).
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.Several levels of [content padding](./docs/GLOSSARY.md#message-padding) to frustrate message size attacks.
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.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.
6.Several levels of [content padding](./docs/GLOSSARY.md#message-padding) to frustrate message size attacks.
7.Only TLS 1.2/1.3 are allowed for client-server connections, limited to cryptographic algorithms: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448.
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.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.
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 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.
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.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.
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. Transport isolation - different TCP connections and Tor circuits are used for traffic of different user profiles, optionally - for different contacts and group member connections.
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.Manual messaging queue rotations to move conversation to another SMP relay.
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.Sending end-to-end encrypted files using [XFTP protocol](https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html).
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.Local files encryption.
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:
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.
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.Post-quantum resistant key exchange in double ratchet protocol.
2.Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
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).
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.Message "mixing" - adding latency to message delivery, to protect against traffic correlation by message time.
4.Recipients' XFTP relays to reduce traffic and conceal IP addresses from the relays chosen, and potentially controlled, by another party.
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.
## For developers
## For developers
@@ -375,10 +386,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.
- 🏗 Improve experience for the new users.
- 🏗 Post-quantum resistant key exchange in double ratchet protocol.
- 🏗 Large groups, communities and public channels.
- 🏗 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.
- Privacy & security slider - a simple way to set all settings at once.
- SMP queue redundancy and rotation (manual is supported).
- SMP queue redundancy and rotation (manual is supported).
- Include optional message into connection request sent via contact address.
- Include optional message into connection request sent via contact address.
@@ -407,13 +419,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.
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
## 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)")
?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.