* terminal: show version from .cabal file
* update welcome message
* terminal: helo on message quotes
* terminal: allow replies in groups without specifying a member
* core: update version to 1.3.3
* core: change quoted messages types/protocol
* remove comments and unused field
* rename CIQuote type
* change type for quote direction to allow unknown group member, use QuotedMsg to save received chat item
* change queries of quoted items when the sending group member is known
* refactor
* fix: make ciQuote polymorphic
* rfc for message replies and chat item references
* update replies rfc
* save received/sent shared message ids, migration and types for replies
* include reply/forward into MsgContent type
* add sharedMsgId to CIMeta
* save/get shared_msg_id to/from chat items table
* parameterize CIRef by chat type
* add CIRef to ChatItem when it is read from the db
* terminal command to send message replies
* include quoted content into chat items
* quoted message direction in direct chats (TODO test)
* test for replies with quotes to group messages - own and others
* split MsgContainer from MsgContent
* make quoting usable in the terminal
* add formattedText to quotes
* rename migration
* update JSON encoding for MsgContainer
* allow quoted replies to messages from clients not supporting it/not sending msg IDs
* update rfc
* fix group replies
* add APISendMessageQuote and use it for terminal commands
* change how quoted messages are shown in groups
* asynchronously subscribe to user connections
* send subscription status summaries to view/api
* refactor
* add help messages in summaries
* update simplexmq
* rename config field
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
* terminal: make input responsible for echo to keep commands synchronous (as in mobile) and avoid echo delays
* use echo
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@users.noreply.github.com>
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@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>
* groups when in status invited - list as invitations on /gs
* don't list on start
* test
* refactor
* getUserGroupDetails
* update simplexmq to 0.5.2, update resolver
Co-authored-by: Efim Poberezkin <8711996+efim-poberezkin@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 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)
* TMVar lock to avoid subscriber and client processing in parallel, fix the test
* run SMP server as part of the test
* stabilize tests
* update simplexmq
* test: stabilize getting invitation from terminal
* remove unused import
* simplify test
* 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
* 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