* mobile: webrtc calls work on Android and iOS separately
* core: only send public key with offer if invitation/current call supports e2ee
* update npm module
* use simplex.chat relay
* update webrtc settings
* WebRTCView to use command/response types
* compress WebRTC session descriptions, simple web UI for calls
* update webrtc ui
* use webworked in desktop browser
* use RTCRtpScriptTransform in safari
* update android type
* refactor
* add await
* Managing battery optimization on Android 12+ via in-app UI
- in case of battery optimization is enabled a user will be asked to disable it if he wants to have a background service
- when the service is enabled but the user don't want to disable the battery optimization, the service will be disabled with an alert for the user
* update service notice conditions
* android: update notification service logic
* update translations
Co-authored-by: Avently <7953703+avently@users.noreply.github.com>
* simplex-chat server
* typescript types for chat commands and command serialization
* typescript ChatResponse type
* more types
* more types
* websocket chat client
* aligb ts/haskell types
* chat server & TS client via websockets - it works
* TS chat client test
* TS chat client test
* update test
* more api functions
* more api methods, refactor, readme
* squaring chat bot example, fixes
* update readme
* remove console.log
* npm version 0.1.0
* mobile: onboarding
* ios onboarding: create profile and make connection
* how SimpleX works
* connect via link
* remove separate view for connecting via link, fix bugs
* remove unused files
* fix help on small screens, update how it works page
* layout
* add About to settings, tidy up
* rename function
* update layout
* translations
* translation corrections
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* correction
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* corrections
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* fix translations/layout
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* mobile: webrtc calls state machine
* android: call api types
* android: call api methods
* ios: connect calls via chat UI (WIP)
* ios: webrtc call connects via UI
* core: update call duration/status when x.call.end is received
* improve call UX/UI
* audio calls
* different overlay for audio calls
* toggle video/audio in the call
* ios: notifications service extension
* create notifications in NSE (WIP)
* refactor notifications to use in NSE
* prepend team ID to shared defaults name to silence the warning
* remove whitespace
* mobile: webrtc calls in webview (typescript WIP)
* typsecript compiles
* fix error messages
* TS works in chrome
* include ICE candidates into offer/answer, report connection state changes to host, end call on disconnection
* refactor, readme for .js file
* initial UI framework
* limited javascrtipt interaction
* run some js
* try to resolve permissions issues
* some initial RTC javascript
* approaching a workable js file
* js fixes
* tidy up js
* add some ui to web call
* fixes
* ready to test
* typo
* refactor for readability
* tidy up before adding encryption
* add transform to video streams
* tidy a little, audio encoding works, video fails
* minor changes
* use variables consistently
* e2ee video calls
git push
* include IV in outgoing message, decrypt fails when trying to read back
* add different prefix retention for differing frame types
* e2ee video calls with iv passed in band
* enforce use of VP8 encoding
* allow plaintext chunk only for video frames
* tidy up kotlin. Android <> browser tested
* minor ios changes
* capture js logs in xcode
* typo
* linting
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* open source qr code scanner
* refined error localisation - todo moved
* tidy up to make picking back up easier
* better errors
* scan images one at a time and once per second to avoid multiple requests being sent
* more sophisticated avoidance of repeat contact requests
* remove format specifier
* refinements
* update QR scanner to use boofcv
* remove dependence on zxing
* attribution
* Update apps/android/app/src/main/java/chat/simplex/app/views/newchat/QRCodeScanner.kt
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* ios: started pending connections UI
* ios: UI for pending contact connections complete
* this has to be getter, or it would break JSON parsing
* ios: update "initiated" status of connection
* initial implementation of textbox
* paste to connect box implemented (and tested) in android
* first pass at pastebox in iOS
* clean up iOS implementation
* put paste link page in for groups in android
* initial inclusion in iOS UI
* refactor naming
* lint kotlin
* fix typo
* ios: update "connect via link" ui, refactor connecting via link to use the one function
* android: update paste link UI
* add russian translations
* update translations
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* update translations
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
Co-authored-by: JRoberts <8711996+jr-simplex@users.noreply.github.com>
* ios: get device token for push notifications
* ios: receive messages when background notification is received
* add notifications API, update simplexmq
* chat API to register and verify notification token
* update AppDelegate to recognize different notification types, update simplexmq
* core: api to enable periodic background notifications
* update simplexmq
* chat API to delete device notification token
* use base64url encoding in verification code
* update simplexmq for notifications
* update manifest
* autoverify domain
* add path prefix to intent filter
* support contact links
* add android app readme
* only allow a single simplex task at a time to avoid opening simplex 'on top' of app with link
* ios api
* ios wip
* android wip
* ios files folder
* ios get address on start
* android app files folder
* ios more backend
* android more backend
* translation
* ios image without text, remove preview
* android image without text, remove preview
* fix translation
* file name in previews and w/t text
* Revert "file name in previews and w/t text"
This reverts commit 0110570e55.
* ios filename in preview
* android filename in preview
* android wider images
* ios determine width on image for correct quote width
* ios images in previews wip
* ios square image in quote
* ios: update image layout
* android images in quotes
* android remove redundant modifier
* android clip to bounds
* android - image in right side of quote
* android refactor image view
* android - refactor, align quote text top
* android fix emoji view
* fix image layout
* full screen image view, fix quote layout
* android various size
* android fixed image width
* android meta on image
* ios: add drag gesture to hide full-screen image
* android: make image-only meta white
* refactor file.stored
* android: meta icon color
* android: open chat scrolled to last unread item
* copy/share image messages
* android: full screen image
* check file is loaded
* terminal: refactor view for messages with files
* android: change to onClick, only show stored file
* android: remove close sheet bar
* android: close image view on click
* translation
* android: pass showMenu to CIImageView to show menu on long click
* increase DropDown width
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* wire up api for link metadata parsing
* add getLinkPreview (synchonous for now)
* api wiring fix
* get network requests off main thread
* copy over state machine logic from iOS
* filter api parsing calls from logs
* refactor of image processing
* remove image deepcopy
* minor change to log filtering
* mobile: link previews
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* refactor image utils and initial link metadata tools
* remove LPMetadata conversion as we will build our own view to avoid network calls
* initial very basic preview outline, remove icon loading
* connect preview view to compose view
* v0.1 barely working
* minor refactor
* refactor
* collect images effectively
* link up to api for send/receive
* rework async get metadata logic
* show previews in chat
* refactor resizing logic
* checkpoint before view editing
* ui changes
* housekeeping
* ui tweaks
* typo
* improve link preview design/logic
* resize image to target data size
* fix link preview state machine
* tidy up
* fix typo
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* switch to PHPicker for photos. TODO add back camera functionality. [rough]
* add back camera selection option
* remove force unwrap of optional
* response to comments
* rerun tests
* refactor naming
* mobile: show group member images in the chat
* improve layout for group chat
* android: show member images in group chat
* do not repeat member name in group messages
* android: foreground service to receive messages
* android: fix duplicate chat (caused by persistent state of the service)
* option to turn off background service
* fix: foreground service failing to start when the new user is created
* remove unused background manager
* use relative sizing when scaling the QR code
* linting
* properly implement image scaling
* remove extra horizontal padding
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* android: parse/serialize unknown chat items
* ios: more resilient decoding of MsgContent
* core: preserve JSON of unknown message content type in MCUknown, so it can be parsed once it is supported by the client
* android: refactor modal views without navigation controller
* refactor navigation
* make alert manager global
* disable CRPendingSubSummary in terminal, hamburger menu instead of gear
* minimal implementation of notifications and broken framework for background check for messages
* linting and need different id to have multiple messages
* working notification on new messages
* add autocancel to notifications
* add rudimentary linking to chat from notification
* group notifications from the same chat
* clarify comment
* revert to working version
* refactor
* minors
* two channels, silent and shouty
* rudimentary state control for notifications
* check if running in foreground
* more elegant solution to don't notify if in chat
* tidy up DisposableEffect use
* change message notification priority to high
* nuke opt-ins
* navigation via notification occasionally works with race condition (WIP)
* notification navigation is working; remove chat list/view from navigation; refactor ChatListNavLinkView
* group all simplex notifications, only show the latest message per chat, notification icons
* increase time to 30 sec
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* try to add warning text if display name has whitespace
* simplify
* layout/error icon
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* bigger fonts, text entry layout
* resize scroll area when keyboard appears; automatically scroll on new messages
* fix message entry in dark mode
* imporove console layout
* fix chat info with dark mode
* fix typo
* clean up
* remove unused time formatter
* initial attempt -- not recomposing
* change to mutable state, still not working
* two state works, why not three?
* fix so we actually change state
* remove unnecessary brackets
* refactor
* using Boolean? for userCreated
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* android: update user profile view logic
* indentation
* format
* UserProfileView
* remove prints
* empty line
* undo format
* change by value
* separate layout
* layout
* unconditionally editProfile = false
* add header and close button to profile page, add links to "settings"
* use generic navigate in settings, remove terminal button from the list of chats
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* simple case
* version almost working with true links
* show alerts in imperative way, like they were meant to
* connecting via links works
* add error handling to connections
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* initial restyling:
* polish styling a little
* lint
* more linting
* add dependency
* add time to messages when they exist
* if no chat items show time from time chat created
* playing with colours
* rename shared colour
* flip title text colour in dark mode
* update model when messages arrive
* update chat in the list when message is added
* copy methods with optional parameters
* use data classes to have pre-defined copy methods
* view placeholders for chats list and chat views
* classes for chats
* set the user to the model
* use Long for IDs
* chats/messages API (not working yet)
* android api works
* line breaks
* add initial conditional routing -- create user not working
* only one nav controller
* user check on launch works (kind of)
* Apply suggestions from code review
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* initial rough ideas
* refactor and put in high level navigation
* refactor
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* new compose project
* classes for chat command and response
* use val with get() for commands and responses
* chat model
* initial jetpack compose set up
* wire it up with chat
* first ability to send and receive messages
* refactor model/controller interface
* JSON samples
* terminal view with items
* playing around with json
* JSON serialization works
* parsing API responses in the terminal
* add subclass for contactSubscribed reponse
* remove android-poc
* remove JSON example
Co-authored-by: IanRDavies <ian_davies_@hotmail.co.uk>
* light github image for dark mode
* show message received status, remove chevrons in chat list
* show unread message status
* add message send error mark
* refactor alerts to use AlertManager
* show alert message on tapping undelivered message, simplify text-only alerts
* receiving messages in the background and sending local notifications
* show notifications in foreground and background
* presentation logic for notification options when app is in the foreground
* background refresh works
* remove async dispatch
* updated text items
* update version
* fix JSON parsing in CIDirection, refactor data samples
* show group member in received messages and chat preview
* use profile displayName instead of localDisplayName, do not show fullName if it is the same as displayName
* started chat model
* refactor processing commands and UI events
* message chat event processing
* groups: delayed delivery of messages and introductions to announced members (#217)
* combine migrations, rename fields
* show all view messages vis ChatResponse type
* serialize chat response
* update C api
* remove unused extensions, fix typos
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com>
* initial mobile app design draft
* add proposals
* xcode project
* refactor function to send to view as parameter
* export C interface
* remove unused files
* run chat from chatInit
* split chatStart to a separate function
* replace file-embed with QQ
* add mobile views
* server using IP address
* pass dbFilePrefix as parameter to chatInit
* comment on enabling logging
* fix mobile db config
* update C API, make user non-optional in ChatController
* restore SMP server addresses
* revert the change in the tests
* flip dependency - now Controller depends on Terminal
* make ChatController independent of terminal package
* fix Main.hs
* add iOS .gitignore
* refactor Simplex.Chat.Terminal
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com>
* Add /version and /v flags
* Move version info from C Chat.Help to Chat.View
* Move version string, use it in Main startup
* use "SimpleX Chat" consistently
Co-authored-by: TheTaoOfSu <TheTaoOfSu@protonmail.com>
* remove group member
* leave group, fix remove member, tests for leave group/remove member
* delete group with test
* prevent contact deletion error when it is a group member
* support inviting the group member who left or was removed
* use small retry interval in the tests
* test multiline outputs
* establish connection using user profiles (TODO: delete contact and send message)
* delete contact and send message with the updated schema
* comment
* refactor, remove old code
* chat types, chat protocol syntax idea
* chat message syntax, raw message type
* chat message format and parsing
* raw chat message parsing test
* add message parsing tests
* interpret RawChatMessage
* use chat message format when sending messages
* save contacts and related connections to DB (WIP)
* use contacts in all chat commands (add, connect, send, delete)
* use contacts when receiving messages and notifications
* handle contact not found error
* automatically accept connection when CONF is received from the agent