Commit Graph
577 Commits
Author SHA1 Message Date
Evgeny @ SimpleX Chat 1e6fedf5c9 Merge branch 'master' into ab/wallet 2026-10-11 07:48:53 +00:00
EvgenyandEvgeny @ SimpleX Chat 1053e9fb5c core: use simpler agent api (#7685)
* core: use simpler agent api

* simplexmq

* simplexmq, plan

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-10 23:30:31 +01:00
Evgeny @ SimpleX Chat ad0eb25620 Merge branch 'master' into ab/wallet 2026-10-10 16:51:52 +00:00
EvgenyandEvgeny @ SimpleX Chat 2e56d32b52 core: badge presentations in profiles (#7573)
* badge presentation in groups

* fix tests

* badge presentations in profiles

* update simplexmq

* change types

* badge profile presentations

* improvements

* remove proof from cards, send owner public key for channel to relay

* add test

* merge migrations

* update

* prevent fallback to PHTest

* fixes

* many fixes

* fixes

* fixes

* cleanup

* improve

* query plans

* fix test

* diff

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-10 17:48:45 +01:00
EvgenyandEvgeny @ SimpleX Chat 96970373b0 core: add status when switching queue (#7664)
* core: add status when switching queue

* fix

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-08 16:31:29 +01:00
EvgenyandEvgeny @ SimpleX Chat df95de8a2c tests, fix: execute in parallel, send connected events after creating chat items, fix race when merging multiple members to one contact (#7500)
* tests: execute in parallel

* remove race in terminal

* fix some tests

* stop chat controller on exit

* fix more tests

* fix tests

* query plans

* update simplexmq

* update direct-sqlcipher

* fix tests

* query plans

* ios: update core

* fix tests

* update simplexmq and direct-sqlcipher, fixes

* simplexmq

* update simplexmq

* parallel channel tests

* update tests

* fix tests

* fix tests

* query plans

* fix test

* more tests in CI

* use ram drive in CI

* fix tests, fix directory deleting voice file before it is uploaded

* fix query

* fix query to use index

* link contact and channel owner profile when connecting via a signed link

* update simplexmq, fix ghc 8.10.7

* fix tests

* avoid double stop

* query plans

* fix more test races

* more test fixes

* fix queries

* fixes

* more fixes

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-07 08:12:02 +01:00
Evgeny Poberezkin 680790695e core: update simplexmq 2026-10-05 11:45:16 +01:00
Alain Brenzikofer 9eef6d706d repin mq 2026-10-05 10:39:38 +02:00
Evgeny Poberezkin 93910b80e9 core: 7.1.0.9 (simplexmq 7.1.0.10) 2026-09-30 14:09:11 +01:00
Alain Brenzikofer ebac1c9c11 repin to simplexmq PR 2026-09-30 12:55:02 +02:00
Evgeny @ SimpleX Chat f41a582b88 simplexmq 2026-09-29 10:25:52 +00:00
Evgeny @ SimpleX Chat d739fe3c1a use deriveAddress, update simplexmq 2026-09-29 08:52:00 +00:00
Alain Brenzikofer 03499c92fe repin 2026-09-28 16:03:31 +02:00
Alain Brenzikofer cfe6a69acd repin to mq, derivation fallible again 2026-09-28 15:31:46 +02:00
Evgeny Poberezkin 800f76cd6c core: 7.1.0.8 (simplexmq: 7.1.0.9) 2026-09-26 13:48:22 +01:00
Alain Brenzikofer 7b4ac1bb8b review iterations 2026-09-26 14:29:40 +02:00
Evgeny Poberezkin 3ed4511e80 core: update simplexmq 2026-09-26 12:53:17 +01:00
Alain Brenzikofer 143d073980 infallibel wallet and account derivation 2026-09-26 12:34:06 +02:00
Alain Brenzikofer 41d06dd4ea repin 2026-09-26 08:26:39 +02:00
EvgenyandEvgeny @ SimpleX Chat 0ef0db8ad7 core: fix races when sending and receiving files (in tests, or when server is very fast) (#7584)
* core: fix races when sending and receiving files (in tests, or when server is very fast)

* update simplexmq

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-09-25 15:12:31 +01:00
Alain Brenzikofer 3130a7c556 repin 2026-09-25 08:34:31 +02:00
Alain Brenzikofer ab88104dbd self-review iteration 10 2026-09-25 08:31:31 +02:00
Alain Brenzikofer 0c0a9ec57b self-review iteration 5 2026-09-24 16:39:17 +02:00
Alain Brenzikofer 24ef8bf1f5 self-review iteration 3 2026-09-24 15:47:36 +02:00
Alain Brenzikofer 68c84a9e75 self-review iteration 2 2026-09-24 11:37:21 +02:00
Alain Brenzikofer 74e724fe41 Merge remote-tracking branch 'origin/master' into ab/wallet 2026-09-24 10:26:59 +02:00
Alain Brenzikofer 04b1992f94 fix review comments 2026-09-24 10:14:37 +02:00
EvgenyandEvgeny @ SimpleX Chat 23136f1cd5 core: update agent API for connections (#7574)
* core: update agent API for connections

* update simplexmq

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-09-23 21:29:41 +01:00
Alain Brenzikofer 7445e685b7 minimize diff and align style even more 2026-09-22 09:29:47 +02:00
Alain Brenzikofer ac98973598 repin 2026-09-21 17:24:57 +02:00
Simplex Operations faedb0328e core: 7.1.0.7 (simplexmq 7.1.0.8) 2026-09-19 11:39:26 +00:00
brenzi 9af6fb00e6 minimal adjustment to make client compile against SMP-v22 PR (#7520)
* minimal adjustment to make client compile against SMP-v22 PR

* repin after upstream merge
2026-09-16 10:07:18 +01:00
Evgeny Poberezkin ebabcc4053 core: 7.1.0.5 (simplexmq 7.1.0.6) 2026-09-15 10:13:10 +01:00
EvgenyandEvgeny @ SimpleX Chat 5ffbe733a8 core: attach badge proofs to files over size limit (#7455)
* core: attach badge proofs to files over size limit

* types

* more types

* implement file badge proofs

* tests

* move file limits to config, add tests

* more tests, work correctly in "send as group" case

* fix races in tests

* group badge tests

* query plans

* add history support, fixes

* simplify

* refactor

* refactor

* type

* restructure schema for proofs

* rename, refactor

* refactor

* fix, refactor

* refactor

* ui

* comments

* alerts

* update nix, ios library

* updare sharing

* update simplexmq

* update text

* improve messages

* api types

* postgres schema

* fix

* test

* query plans

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-09-12 14:33:52 +01:00
Alain BrenzikoferandClaude Opus 5 f45647e113 core: pin simplexmq with the wordlist embedded from the upstream file
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-10 17:15:38 +00:00
Alain BrenzikoferandClaude Opus 5 3ad17ca477 core: pin simplexmq for the BIP-44 path, and use it
ethereumPath now takes the address index, so the path a name key sits at is
built once in the library rather than again here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-10 16:29:06 +00:00
Alain BrenzikoferandClaude Opus 5 257cdc02c8 core: pin simplexmq with eth crypto merged into master
ab/eth-crypto forked before Crypto.Entitlement, which Chat.Badges imports,
so the branch had to be merged with simplexmq master before it could be
pinned here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-08 15:47:40 +00:00
Alain BrenzikoferandClaude Opus 5 c11d0318c4 core: wallet key for name ownership (CLI only)
A name has to be owned by an address the client can still derive after a
restart or on a new device. This adds that key and nothing else.

/wallet create makes one BIP-39 key per device and one BIP-44 account per
chat profile under it, /wallet shows the address that would own the next
name that profile buys, /wallet import and /wallet export move the key with
its recovery phrase.

A name key sits at m/44'/60'/<profile>'/0/<name>, which is ordinary BIP-44,
so the phrase reaches the same addresses in other wallets. No signing, so
nothing can be bought or edited yet.

Split out of #7390 / #7425.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-08 15:30:13 +00:00
Evgeny Poberezkin 4bb7e0f1bf core: 7.1.0.4 (simplexmq 7.1.0.5) 2026-09-02 11:08:06 +01:00
EvgenyandEvgeny @ SimpleX Chat f99c474ca6 core: send badge ZK-proofs to XFTP servers, add file expiry time (#7430)
* core: send badge ZK-proofs to XFTP servers

* update simplexmq, use keys and header from simplexmq

* core: add file expiry time

* refactor

* remove posix module

* rename migrations

* bot api

* update UI

* import

* show item from loaded information

* ios: update core library

* text

* send entitlements in handshake

* simplexmq

* query plans

* update simplexmq

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-09-01 23:16:15 +01:00
shandEvgeny Poberezkin b9d38ec05d core: fast queue rotation not requiring the current server to be online (#7397)
* core: fast queue rotation not requiring the current server to be online

* simplexmq

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2026-08-20 10:39:02 +01:00
shandEvgeny Poberezkin cbfdf63f4b core: drop agent versions in simplexmq (#7360)
* core: adapt to dropped agent versions

* refactor

* remove comments

* api types, protocol tests

* fix test

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2026-08-18 22:50:59 +01:00
sh 3d0fa806a9 core: 7.1.0.2 (simplexmq 7.1.0.2) (#7367) 2026-08-12 11:28:19 +01:00
sh 398c777c93 core: 7.1.0.1 (simplexmq 7.1.0.1) (#7366) 2026-08-12 09:33:46 +01:00
EvgenyandEd Asriyan 24816b66fe core: enhance server test result handling with additional server info (#7357)
* core: enhance server test result handling with additional server info

* simpler

* nix

---------

Co-authored-by: Ed Asriyan <service.github@asriyan.me>
2026-08-09 16:09:29 +01:00
Evgeny Poberezkin cbae9c5e87 core: 7.1.0.0 (simplexmq 7.1.0.0) 2026-08-01 13:13:40 +01:00
EvgenyandEvgeny @ SimpleX Chat e1a349b90f core: support contact addresses with DR keys, service requests (#7310)
* core: use double ratchet keys in contact address (#7278)

* core: use double ratchet keys in contact address

* use PQ from the first message

* query plans

* update simplexmq

* api to rotate keys, option to show full links in CLI

* shorter description

* ui: add error parameters

* disable DR in addresses

* core: parameter for create address command to configure ratchet keys

* add pqRatchet param to address-related commands

* query plan

* fix parser

* fix kotlin

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>

* core: contact request rejection and service requests (#7292)

* update simplexmq

* implement service requests and rejections

* tests

* migration

* fix migration

* add api event and response

* bot api, postgres migration

* nix shas

* bot types, rename property

* update bot type

* sign service requests

* update bots api

* query plan

* update plan

* update simplexmq

* fix test, update bot api

* fix bot api

* resolve name for service request

* refactor

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>

* update simplexmq

* update simplexmq

* test delays

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-08-01 12:51:03 +01:00
Evgeny Poberezkin cdef9f51e6 core: 7.0.0.11 (simplexmq 7.0.0.6) 2026-07-25 12:22:49 +01:00
Evgeny Poberezkin 79660e1dc6 core: 7.0.0.9 (simplexmq 7.0.0.5) 2026-07-18 08:09:23 +01:00
sh 6e2995cab6 cli: add name, image and relay server address flags (#6944)
* cli: add --relay-address-server option for chat relay

New CLI flag --relay-address-server SERVER selects the SMP server used
for the chat relay address link created at startup. Only valid together
with --relay; errors out otherwise.

Threads Maybe SMPServerWithAuth through APICreateMyAddress to the new
agent createConnection parameter.

* cli: add --user-display-name option

Selects or creates the active user non-interactively:
- no active user: create one with the given display name
- active user with matching localDisplayName: continue
- active user with different name: exit with error

Mutually exclusive with --create-bot-display-name.

* cli: add --user-image-file option

Sets the active user's profile image from a .png/.jpg/.jpeg file at
startup. Reads file, base64-encodes as data URL, and updates the user
profile directly in the DB - no notification is sent to existing
contacts. Skips the update if the stored image already matches.

Requires --user-display-name.

* cli: address PR review comments

- rename APICreateMyAddress field srv_ to server_
- extract repeated `loop` and putStrLn from createActiveUser via
  prompt where-clause
- fuse u_ inspection: validate active user display name in the same
  case that creates the user when missing

* cli: enforce profile image size limit in --user-image-file

Reject the file if the encoded data URL exceeds 12500 bytes - matches
the cap mobile and desktop UIs pass to resizeImageToStrSize for profile
images. Without this, oversized images would be silently set on the
user profile.

* core: validate profile image size in chat commands

Enforced in CreateActiveUser, updateProfile_, newGroup, runUpdateGroupProfile
via checkProfileImageSize; max 12500 bytes (matches mobile UIs).

* fix: thread new ChatOpts/CoreChatOpts fields through bot/test constructors

* bots/docs: filter hidden params before type introspection

Hide APICreateMyAddress server_ field so the bot doc generator does not
try to introspect SMPServerWithAuth (an unregistered type).

* core: validate full encoded profile size

Add checkProfileSize / checkGroupProfileSize that encode the full
ChatMessage and check against maxEncodedInfoLength, so a long
displayName/bio combined with a near-max image is also caught at
command time instead of failing later at send time with CEException.

Run alongside the existing checkProfileImageSize (image-only cap of
12500 bytes, matching mobile UIs) in CreateActiveUser, updateProfile_,
newGroup, runUpdateGroupProfile. Update genProfileImg to fit the cap.

* cli: add --headless option for chat relay

Skips interactive prompts (relay address creation, display name) so the
chat relay can run non-interactively as a service. Requires --relay;
creating a new profile also requires --user-display-name.

* test: cover profile image size limit and address server

Adds tests for two new capabilities:
- profile image size validation rejects oversized images
- /_address with a server pins the address to the requested SMP server

* core: update simplexmq (pass optional SMP server to prepareConnectionLink)

* cli: add /set profile image file, fix image flag

Add "/set profile image file <path>" command to set the profile image
from a .png/.jpg/.jpeg file in a running session.

Make --user-image-file create-only: for an existing user it now no-ops
with a note instead of failing with "chat not started" (the update ran
before the chat controller was started).

* core: unify image loading and profile size checks

- loadImageFile (CLI) and readProfileImageFile (command) now share one
  loadImageData; removes the duplicated mime/base64 encoding and its
  decodeUtf8/safeDecodeUtf8 divergence. A missing --user-image-file no
  longer crashes with an uncaught IOException, and empty files are rejected.
- checkProfileSize/checkGroupProfileSize share checkInfoSize.
- --relay-address-server/--headless requires-relay checks use
  errorWithoutStackTrace, matching the adjacent validation (no callstack dump).

* bots/docs: document UpdateProfileImageFromFile as a CLI command
2026-07-15 09:31:19 +01:00