* add chat items migration
* chat and chat items types
* queries draft
* ChatInfo with optional ChatItem
* schema adjustments
* flat schema and queries
* refactor ChatResponse using ChatItem types
* schema adjustments
* refactor GroupInfo to include GroupMember of the user
* remove Message
* createNewChatItem, sendDirectChatItem
* refactor to use GroupInfo in Chat type and all ChatResponses
* replace ContactName with Contact in some ChatResponse constructors
* remove Group selectors
* minor correction
* refactor
* refactor 2
* nullable created_by_msg_id
* remove normalized schema and queries
* ON DELETE CASCADE / SET NULL
* CIContent to Text
* files chat_item_id
* fix
* apply ciContentToText
* queries folder
* refactor
* moar refactor
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* 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>
* started chat protocol
* text message example
* events json
* same style comments
* jsonc
* num for rendering
* try to fix comment rendering
* revert num
* chat protocol: make msg params closer to types
* AppMessage type
* combine new and old simplexmq dependencies
* json parsers
* version-compatible types for connection requests
* more parsers
* remove import
* decode/encode from/to AppMessage
* make group invitation a property in params
* switch chat to the new agent
* remove "compatibility" attempt
* new JSON encoding for chat messages
* simplexmq from github
* update MsgContent name
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com>
* naming; full names on start for groups
* allow to re-add member
* save and reuse connection request
* TODO
* wording
* index
* user id
* revert to listToMaybe . map fromOnly
* add to test
* fix null conversion
* Update src/Simplex/Chat.hs
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* Update src/Simplex/Chat.hs
* fix
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* update for ConectionMode parameters
* update with CONF notification and different ConnectionRequest types
* high level flow for contact requests, add x.con to chat protocol
* store functions for user contact links and contact requests
* contact links work
* subscribe to user contact link connection
* subscribe to user contact address: messages
* send rejectContact to the agents when rejected in chat
* user contact link (address) test
* Update src/Simplex/Chat/View.hs
* Update tests/ChatTests.hs
* user address help, fix tests
* delete connection requests when contact link deleted
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>
* add sender/recipient info to file types
* send file to group (WIP)
* send file to group, test
* show file status when sending file to group
* notification when cancelled sending to group, remove chunks when file complete or canceleld
* schema for sending files
* send file "invitation"
* receive file "invitation"
* send/receive file flow (with stubs)
* update simplexmq
* send and receive the file (WIP - only the first chunk)
* sending and receiving file works (but it is slow)
* use correct terminal output for file sending/receiving
* improve file transfer, support cancellation
* command to show file transfer status and progress
* file transfer tests
* resume file transfer on restart (WIP)
* stabilize test of recipient cancelling file transfer
* trying to improve file transfer on restart
* update SMP block size and file chunk size
* acquire agent lock before chat lock to test whether it avoids deadlock
* fix resuming sending file on client restart
* manual message ACK (prevents losing messages between agent and chat client and stabilizes resuming file reception after restart)
* do NOT send file chunk after receiving it before it is appended to the file
* update file chunk size for SMP block size 8192 (set in smpDefaultConfig)
* save received files to ~/Downloads folder by default; create empty file when file is accepted
* keep file handle used to create empty file
* check message integrity
* fix trying to resume sending file when it was not yet accepted
* fix subscribing to pending connections on start
* update simplexmq (fixes smp-server syntax parser)
* 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
* chat commands to list members and to quit chat
* merge profiles using probe
* merge contacts connected to the same user based on successful profile probe
* delete display name after merging contacts
* probe: rename "existing" contacts to "matching"
* add category and local display name to group members, extend member status
* additional chat commands, serialization
* parse all chat messages
* draft group protocol implementation
* group protocol: connect new member to existing members (TODO fix race condition with contact connection)
* send/receive group messages (race condition still there - the 3rd member cannot send either group or direct messages to the 2nd member - CONN SIMPLEX)
* send x.grp.mem.info and x.ok in SMP confirmation
* fix host user adding new member, update simplexmq to fix sqlite concurrency, remove logs, make # optional in chat commands
* more precise view messages about members joining and connecting
* track connection status; only send messages to active members (TODO change to current members); group name autocomplete after joining the group
* track via which group the contact was added; show only one message when a contact fully connected; group tests
* test sending messages to the new direct contacts created via the group
* update simplexmq to include .cabal file
* remove unused import
* create group after invitation
* add group invitation to db, show sent and received group invitations
* test creating group and sending invitation
* establish group connections (WIP)
* connect user to the inviter, notification, member classification
* test adding same contact, add display_names table and functions
* rename display_name -> full_name
* use shared namespace for usernames, contact names and group names
* create group
* add user as member, store methods to get group and to create group member
* add group member and send member invitation
* fix ci: use simplexmq from github
* chat protocol: create SMP agent connection when inviting member
* update protocol, started group invitation receiving