Commit Graph

116 Commits

Author SHA1 Message Date
spaced4ndy 717bdec972 wip 2025-10-31 16:17:09 +04:00
spaced4ndy 1c93967e57 wip 2025-10-29 20:36:35 +04:00
spaced4ndy 7073d2f19d wip 2025-10-29 17:07:02 +04:00
spaced4ndy ac40e56e44 wip 2025-10-29 13:10:22 +04:00
spaced4ndy 67461d6971 core: manage chat relays initial (#6369) 2025-10-20 08:12:45 +00:00
spaced4ndy 17a0c1b53d core: delivery in channels (#6278)
* core: channels delivery (#6274)

* core: optimize member retrieval query for postgres (#6280)

* core: optimize reading only relays for sending in channels (#6282)

* fixes

* plans
2025-10-01 15:53:27 +00:00
Evgeny eca2937be1 core: backward compatible JSON decoding (#6322) 2025-09-30 23:05:12 +01:00
spaced4ndy c782e6762b feature branch: optimize subscriptions (#6297)
* core: remove contact merge, obsolete group code (#6292)

* core: remove file connections (#6298)

* core: rename migration

* corre: remove unused contacts merged event (#6308)

* core: optimize subscriptions (#6304)

* core: remove conn ids map from subscriptions (#6309)

* rename migration (#6316)

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-09-28 21:31:59 +01:00
Evgeny 015d5de364 directory: move all storage to the database, optimize performance (#6287)
* core: add custom indexed columns to groups and contacts

* directory: use database (TODO search/listing)

* triggers to maintain current member count

* update simplexmq, fix tests, use summary from GroupInfo

* fix all directory tests

* remove acceptance fields from group reg

* enable all tests

* clean up

* postgres migrations, fixes

* query plans

* use function in postgres triggers, improve sqlite query

* fix export/import

* update schema

* prevent admins from promoting groups when approving

* update listing every 5 minutes
2025-09-28 15:11:49 +01:00
spaced4ndy 382241fe3e core: rework synchronous group forwarding in receive loop into asynchronous delivery tasks (#6178) 2025-09-12 13:22:34 +00:00
Evgeny f6c699f3a5 core: update simplexmq (error handling) (#6231)
* core: update simplexmq (error handling)

* update simplexmq
2025-08-29 10:05:20 +01:00
Evgeny 4811d663e6 rfc: bot messages and buttons, core: command markdown, supported commands in profile preferences, chat sessions preference, peer type field in profile to identify bots (#5360)
* rfc: bot messages and buttons

* update

* update bot rfc

* core: add bot commands to chat preferences and peer type to profile

* update postgresql schema

* update query plans

* chat sessions preference

* markdown for bot commands

* schema

* core: file preference, options to create bot from CLI

* core: different command type

* ios: commands menu

* update types

* update ios

* improve command markdown

* core, ios: update types

* android, desktop: clickable commands in messages in chats with bots

* android, desktop: commands menu

* command menu button, bot icon

* ios: connect flow for bots

* android, desktop: connect flow for bots

* icon

* CLI commands to view and set commands, remove "hidden" property of command, bot api docs

* corrections

* fix inheriting profile preferences to business groups

* note on business address

* ios: export localizations

* fix test

* commands to set file preference on user/contact, tidy up layout and display of command and attachment buttons
2025-08-07 11:13:35 +01:00
spaced4ndy 18a00511a7 core: set via_group_link_uri for groups (#6137)
* core: set via_group_link_uri for groups

* schema

* plans

* schema

* add to type

* plans, api
2025-08-01 16:23:52 +01:00
spaced4ndy f42a6751b1 core: allow to manually accept member contact requests (#6129)
* core: allow to manually accept member contact requests

* response

* comment

* comment

* add fields

* fix

* field in request

* compiles

* fix tests

* test

* plans

* fix mobile tests

* fix doc tests

* renames

* group name in event

* fix renames

* tests

* plans

* rename selector

* ios wip

* fix

* ios wip

* move

* fix backend bug, ui

* reject dialogue

* update plans

* kotlin

* delete swipe

* should accept text

* rename

* postgres migration

* ios: pass chat as binding

* rename module

* fix queries

* schema

* update plans, api docs

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-08-01 10:18:29 +01:00
spaced4ndy 7b7926a73e core, ui: allow to choose disappearing messages ttl in user profile (#6097) 2025-07-24 14:52:48 +00:00
Evgeny a5768e903d core, ui: short bio/description for contact and group profiles (#6055)
* core: short bio/description for contact and group profiles

* use short description in commands

* fix tests

* query plans

* ios: show contact and group profile descriptions

* android, desktop: short description/bio

* ui: layout for chat info, correct copy

* comment out fields to add/edit short descriptions

* remove short description from events

* postgres schema
2025-07-11 21:28:10 +01:00
spaced4ndy 2dd54c6697 core, ui: prohibit changing profile for prepared entity when first attempt to connect failed (#6037)
* core: prohibit changing profile for prepared entity when first attempt to connect failed

* reuse incognito

* schema

* ios

* postgres schema

* ios

* reenable tests

* kotlin

* update alert

* rename predicate, combine queries

* send the correct incognito mode, fail on attempt to change mode for prepared connection

* query plans

* ui: show group connecting status

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-07-05 11:09:10 +01:00
spaced4ndy fc98558a37 core: refactor connectViaContact (#6034)
* core: refactor connectViaContact

* true, comment

* optimize connectViaContact for prepared entities

* refactor Connection

* refactor pcc

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-07-04 09:47:40 +00:00
spaced4ndy 79041390f1 core: allow to accept contact requests after address is deleted (#6032)
* core: allow to accept contact requests after address is deleted

* update

* update

* plans

* ios, postgres migration

* schema

* request lock, refactor

* update simplexmq

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-07-03 10:34:11 +00:00
Evgeny d8636953d3 core: connection plans for short links recognize prepared contacts/groups (#6019)
* core: connection plans for short links recognize prepared contacts/groups

* query plans
2025-06-30 16:12:07 +01:00
Evgeny 524de4067a core: add/send contact address and request messages, ios: use auto-reply as welcome message (#6017)
* core: add/send contact address and request messages, ios: use auto-reply as welcome message

* revert event type change

* fix test, type

* multiplatform: update type

* fix query

* ios: hide keyboard when sending the message

* failing test for business chat with a welcome message

* retry joining via contact address

* query plans

* do not send history to the first member (the original customer) of business chat

* correctly handle retries when joining groups, do not create a new connection on retry

* failing test for group welcome message and feature items

* do not send history item if member saw it during joining (based on welcomeSharedMsgId in join request)

* correct fields in PendingContactConnection, update plans

* prevent duplicate group description created in chat, while ensuring that it is created

* fix query
2025-06-30 11:54:13 +01:00
spaced4ndy cc643e5aeb core: rework contact requests so that they are always created with entity (#6011)
* core: rework contact requests so that they are always created with entity

* remove group requests (revert)

* fix schema

* remove accepted, set xcontactId

* enable tests

* fix deduplication, fix address deletion

* fix business ldn

* disable, add tests

* comments, schema

* cleanup

* fix

* plans
2025-06-26 11:05:23 +01:00
Evgeny c0b704f846 core: store welcome and request message IDs, ios: fix sending request without messages, trim sent messages (#6009)
* core: store welcome and request message IDs, ios: fix sending request without messages, trim sent messages

* remove comments

* rename, fix tests

* simplexmq

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2025-06-25 16:59:32 +01:00
Evgeny fc04872c91 core: chat item content types for chat initiation (#5998)
* core: chat item content types for chat initiation

* connection mode for ui

* padding

* simplexmq

* initial items

* update content items

* core: feature and e2e items

* refactor

* chat items

* ios types

* fix condition for PQ encryption of link
2025-06-20 11:54:21 +01:00
spaced4ndy 94d866e2c0 core: fix connecting to prepared group incognito; test connecting to prepared contact incognito (#5994) 2025-06-17 14:20:47 +00:00
spaced4ndy 2bc4836338 core, ios: create contact requests with attached contact (#5967) 2025-06-09 16:18:01 +00:00
spaced4ndy 56c8d8696e core: prepare and connect to group (#5964) 2025-06-05 13:16:04 +00:00
spaced4ndy 8a4760a2cb core: set short links data, prepare entity, etc.; ios: connect to prepared contact (#5951) 2025-06-04 07:47:10 +00:00
spaced4ndy ace7278190 core: short link connection plans wip; short links implementation comments (#5947) 2025-05-27 13:00:52 +00:00
spaced4ndy 9190c2a772 core: reset unanswered counter for support chats with members only if moderator message is newer (#5889) 2025-05-12 12:19:20 +00:00
spaced4ndy 79991e84c9 core: member requires attention counter (#5881) 2025-05-09 15:36:06 +00:00
spaced4ndy 3095b980cb Merge branch 'master' into group-knocking 2025-04-15 19:27:36 +04:00
Evgeny 45e395d35a core, ui: short connection links with stored data (#5824)
* core, ui: optionally use short links (#5799)

* core: optionally use short links

* update test

* update simplexmq, short group links

* fix query

* fix parser for _connect

* ios: use short links

* shorten links to remove fingerprint and onion hosts from known servers

* fix parser

* tests

* nix

* update query plans

* update simplexmq, simplex: schema for short links

* simplexmq

* update ios

* fix short links in ios

* android: use short links

* fix short group links, test short link connection plans

* core: fix connection plan to recognize own short links

* update simplexmq

* space

* all tests

* relative symlinks in simplexmq to fix windows build

* core: improve connection plan for short links (#5825)

* core: improve connection plan for short links

* improve connection plans

* update UI

* update simplexmq

* ios: add preset server domains to entitlements, add short link paths to .well-known/apple-app-site-association

* update simplexmq

* fix group short link in iOS, fix simplex:/ scheme saved to database or used for connection plans

* update simplexmq

* ios: delay opening URI from outside until the app is started

* update simplexmq
2025-04-14 21:25:32 +01:00
spaced4ndy d85ac4af04 core: member support chat stats (#5803)
* core: member support chat stats

* schema

* update counts

* mark read wip

* dec counts on read

* rename

* plans

* test, fixes

* plans

* refactor

* rename

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-04-05 12:25:45 +01:00
spaced4ndy 9654e193af core: member admission (#5798) 2025-04-03 08:55:32 +00:00
spaced4ndy be1c4018cc core: group knocking main functionality (#5726)
* docs: knocking rfc

* types, schema wip

* more comments

* rename

* more types

* change types

* wip compiles

* construct snd scope

* fix tests

* hide output

* sending

* fix member filtration

* plans

* conversations store/api model draft

* xgrpmemnew

* rework types wip

* wip

* wip

* remove tag

* wip (compiles)

* fix parsing

* fix query

* fixes, tests

* plans, comments

* fix member filtration

* wip

* protocol wip

* protocol wip

* fix

* fix tests

* fixes, test

* fix (remove NotInHistory)

* fix

* fix tests

* fix

* output

* fix tests

* tests

* gcsi in view

* fix tests

* plans

* refactor, make scopes Maybe

* remove groupChatFilter

* fix test

* change schema

* refactor

* rename

* rename

* rename

* refactor

* rename

* remove scope from item direction

* rework view

* change apis

* make api for cli

* change text

* refactor

* fixes

* comment

* rename

* refactor fmap/mapM

* refactor includeInHistory

* query plans

* knocking: patch scope (#5796)

* knocking: patch scope wip

* more patches

* schema

* remove space

* plans

* fix test

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-04-02 07:57:18 +00:00
Evgeny 511ff1d35c cli: remove multiple members (#5656)
* cli: remove multiple members

* accept all members joining via link as observers (do NOT release)

* blocked words

* blocked words

* XGrpLinkReject

* core: 6.3.0.6 (simplexmq 6.3.0.6)

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2025-02-26 09:25:54 +00:00
spaced4ndy 9e000d6bce core: optimize group deletion (#5565)
* core: optimize group deletion

* withFastStore

* fix indexes

* updated plans

* remove prints

* remove print

* undo diff

* core: optimize group delete - delayed group cleanup, delete unused contacts before deleting group (#5579)

* core: delete unused group contacts, don't create new ones

* remove from exceptions

* plans

* fix tests

* remove fixtures

* update plans

* update plans

* fix test

* remove unused functino

* update plans

* remove withFastStore

* core: time group deletion (#5596)

* core: time group deletion

* queries

* works, test fails

* fix

* update plans

* update migration, queries

* not null

* remove deleted

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>

* cleanup

* remove unused field

* fix

* fix

* plans

* fix plan save

* plans

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-01-31 18:47:59 +04:00
spaced4ndy 5d18a49726 core: delete unused group contacts, don't create new ones (#5590)
* core: delete unused group contacts, don't create new ones

* remove from exceptions

* plans

* fix tests

* remove fixtures

* update plans

* update migration

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-01-31 10:32:07 +04:00
Evgeny 621b291da1 core: member mentions, types and rfc (#5555)
* core: member mentions, types and rfc

* update

* update rfc

* save/get mentions (WIP)

* markdown

* store received mentions and userMention flag

* sent mentions

* update message with mentions

* db queries

* CLI mentions, test passes

* use maps for mentions

* tests

* comment

* save mentions on sent messages

* postresql schema

* refactor

* M.empty

* include both displayName and localAlias into MentionedMemberInfo

* fix saving sent mentions

* include mentions in previews

* update plans
2025-01-29 13:04:48 +00:00
Evgeny 7e864f9178 core, ui: support chat item TTL per chat and group aliases (#5415)
* core: support chat item TTL per chat

* ios: UI mockup

* core: chat time to live and group local alias support (#5533)

* functions and type placeholders

* simplify

* queries to make tests pass

* set chat queries

* fetch queries

* get local aliases for groups

* local alias support for groups

* simplify

* fix tests

* fix

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>

* migration

* add test for expiration

* expireChatItems

* refactor queries, read objects inside the loop

* add groupId to query

* fix updateGroupAlias

* ios group alias

* ttl

* changes

* fixes and test

* new types for ttl

* chat and groups ttl in ios

* accurate alert

* label

* progress indicator, disable interactions while api running

* just call expire chat items

* android, desktop: add local alias to groups (#5544)

* android, desktop: add local alias to groups

* different placeholder for chats vs contacts

* improvements and fixes

* only expire chat items, not all items, when chat ttl changes

* refactor, fix conditions

* refactor

* refactor ChatTTLOption

* text

* fix

* make ttl state

* fix crash/remove warnings

* fix for current?

---------

Co-authored-by: Diogo <diogofncunha@gmail.com>
2025-01-20 18:06:00 +00:00
spaced4ndy e05a35e26e core: support postgres backend (#5403)
* postgres: modules structure (#5401)

* postgres: schema, field conversions (#5430)

* postgres: rework chat list pagination query (#5441)

* prepare cabal for merge

* restore cabal changes

* simplexmq

* postgres: implementation wip (tests don't pass) (#5481)

* restore ios file

* postgres: implementation - tests pass (#5487)

* refactor DB options

* refactor

* line

* style

* style

* refactor

* $

* update simplexmq

* constraintError

* handleDBErrors

* fix

* remove param

* Ok

* case

* case

* case

* comment

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2025-01-10 11:27:29 +00:00
Evgeny d37d309f85 core: update simplemq (with PostgreSQL support) (#5444) 2024-12-28 12:35:34 +00:00
Diogo fcb2d1dbac core, ios: chat tags (#5367)
* types and db

* migration module

* chat tag

* store method proposal

* profiles build

* update type

* update return type

* building

* working api

* update

* refactor

* attach tags to contact

* simplify

* attach chat tags to group info

* get chat tags with supplied user id

* get tags fix

* ios: chat tags poc (#5370)

* ios: chat tags poc

* updates to sheet

* temporary display for other option on swipe

* sheet height

* only show preset when it has matches

* changes

* worst emoji picker ever

* simplify tag casts and collapse

* open on create tag if no tags

* simple emoji text field

* nice emoji picker

* dismiss sheets on tag/untag

* semibold selection

* all preset tag and change collapsed icon on selection

* default selected tag (all)

* only apply tag filters on empty search

* + button when no custom lists

* reset selection of tag filter on profile changes

* edit tag (broken menu inside swiftui list)

* create list to end of list

* swipe changes

* remove context menu

* delete and edit on swipe actions

* tap unread filter deselects other filters

* remove delete tag if empty

* show tag creation sheet when + button pressed

* in memory tag edit

* color, size

* frame

* layout

* refactor

* remove code

* add unread to same unit

* fraction on long press

* nav fixes

* in memory list

* emoji picker improvements

* remove diff

* secondary plus

* stop flickering on chat tags load

* reuse string

* fix reset glitches

* delete destructive

* simplify?

* changes

* api updates

* fix styles on list via swipe

* fixed untag

* update schema

* move user tags loading to get users chat data

* move presets to model

* update preset tags when chats are updated

* style fixes and locate getPresetTags near tags model

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>

* deleted contacts and card should not match contact preset

* fix update presets on chat remove

* update migration indices

* fix migration

* not used chat model

* disable button on repeated list name or emoji

* no chats message for search fix

* fix edits and trim

* error in footer, not in alert

* styling fixes due to wrong place to attach sheet

* update library

* remove log

* idea for dynamic sheet height

* max fraction 62%

* minor fixes

* disable save button when no changes and while saving

* disable preset filter if it is no longer shown

* remove comments from schema

* fix emoji

* remove apiChatTagsResponse

* always read chat tags

* fix

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-12-19 10:48:26 +00:00
Evgeny 60e0e454e8 core: only update business chat preferences (#5325)
* core: only update business chat preferences

* rework

* migration

* test, bump protocol version

* fix tests
2024-12-05 18:32:00 +00:00
Evgeny 9d992735f4 core, ios: improve business address (connection plan, repeat requests, feature items) (#5303)
* core, ios: connection plan for business address

* core: store xcontact_id on business groups to prevent duplicate contact requests

* core: create feature items in new groups and in business groups

* fix tests

* error message
2024-12-03 12:11:38 +00:00
Evgeny d42cab8e22 core: preset operators and servers (#5142)
* core: preset servers and operators (WIP)

* usageConditionsToAdd

* simplify

* WIP

* database entity IDs

* preset operators and servers (compiles)

* update (most tests pass)

* remove imports

* fix

* update

* make preset servers lists potentially empty in some operators, as long as the combined list is not empty

* CLI API in progress, validateUserServers

* make servers of disabled operators "unknown", consider only enabled servers when switching profile links

* exclude disabled operators when receiving files

* fix TH in ghc 8.10.7

* add type for ghc 8.10.7

* pattern match for ghc 8.10.7

* ghc 8.10.7 fix attempt

* remove additional pattern, update servers

* do not strip title from conditions

* remove space

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-11-14 17:43:34 +00:00
spaced4ndy bdaec30fa0 core: getServerOperators, getUserServers, getUsageConditions apis wip (#5141) 2024-11-04 21:11:03 +04:00
spaced4ndy 9a87f344b5 core: do not regenerate key when accepting connection to avoid invalidating invitation link on bad networks (#5018)
* core: prepare conn (plan)

* update

* group join

* comment

* comment

* wip

* Revert "wip"

This reverts commit 0849f43377.

* accept

* save contact_id, reuse contact

* refactor

* simplexmq

* set contactUsed

* support retrying join

* exclude prepared connections from API responses

* avoid race with events

* avoid race better

* fix UI

* update library

* tmp

* update

* display error details on ios cmd prohibited

* underscore instead of empty

* Update apps/ios/Shared/Model/SimpleXAPI.swift

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>

* test

* update simplexmq

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: Diogo <diogofncunha@gmail.com>
2024-10-11 15:37:38 +01:00
Evgeny c849f5356d core: save the time user profile was opened at to order in ui (#4920)
* core: save the time user profile was opened at to order in ui

* replace timestamp with order
2024-09-21 13:07:27 +01:00