Commit Graph
1634 Commits
Author SHA1 Message Date
Alain Brenzikofer 3f537d726e use labelhash for name queries instead of plaintext 2026-08-31 14:34:06 +02:00
Alain Brenzikofer 25e3bcbef3 another round of review 2026-08-31 08:32:46 +02:00
Alain Brenzikofer 3de738e9bf another adversarial review's fixes 2026-08-31 08:10:19 +02:00
Alain BrenzikoferandClaude Opus 5 52afb09711 names: fix API docs lists, route signing through signSnrcIntent
The 12 new /name commands and 8 responses were in none of the docs
  lists, and APINameAddress/CRNameAddress outlived their constructors.
  Added alongside APINameRegister, which set the precedent. Also
  regenerates TYPES.md and the TS/Python types, stale since
  CENameRegistrationFailed gained nameRegRetryAfter.

  APINameSetLink now signs through signSnrcIntent, so "the only bridge
  to the wallet" is enforced rather than documented. tokenId is dropped
  and setTextTypeString unexported, both without callers.

  nameKeyOf no longer reads the bound account: the path is literal, so
  the binding never affected which key came back. The mock's idempotent
  is one transaction, and a buy with no link stores no link rather than
  an empty one.

  ownedNames stays device-wide, now with the reason on it.

  Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-30 21:39:24 +02:00
Alain Brenzikofer 2f0f8a7499 show name derivation index as well in list 2026-08-29 15:53:15 +02:00
Alain Brenzikofer 0f10cf30b0 names: wire key selection into derivation, restore marks on rescan
/name keys use never reached deriveNameOwner, so it did not change where a
  purchase went. Pass the selection through.

  Nothing restored the derivation marks after an import, so import + rescan +
  buy derived the recovered name's own key, failing after the code was spent.
  A scan now raises both marks; a purchase re-checks the path first.

  Also from review: three Haddock blocks moved onto their bindings, the
  hardcoded "of 10" dropped, scanSeed's fan-out documented, unused user
  bindings removed.
2026-08-29 15:17:21 +02:00
Alain Brenzikofer 977ffbc3e1 remove blinded codes which will become a separate PR 2026-08-27 17:32:43 +02:00
Alain Brenzikofer e0dbb4f12f first round implementation of cli ready for investor presale with redemption codes 2026-08-27 16:06:00 +02:00
Alain Brenzikofer 8a62fc49c1 names: derive one key per name at m/44'/60'/i'/0/k 2026-08-26 20:40:23 +02:00
Alain Brenzikofer 5fc7215f3b test postgres build and update migration 2026-08-18 18:22:40 +02:00
Alain Brenzikofer 2015b501db re-pin simplexmq and auto-derive josn encoding of address 2026-08-18 18:05:42 +02:00
Alain Brenzikofer a445166fe2 stricter house conventions 2026-08-18 17:40:53 +02:00
Alain Brenzikofer 46a80c6c55 add /name address getter and more tests 2026-08-18 17:30:21 +02:00
Alain Brenzikofer 31909213b4 add proper error types 2026-08-18 17:12:17 +02:00
Alain Brenzikofer 58916c0303 redate migration 2026-08-18 16:54:51 +02:00
Alain Brenzikofer 29f612225a fix review comment 2026-08-18 16:49:24 +02:00
Alain Brenzikofer 75d093e79a add help for names 2026-08-18 16:21:28 +02:00
Alain Brenzikofer 4f75f832af cosmetics 2026-08-18 15:12:04 +02:00
Alain Brenzikofer cee76fe787 add changelog and shrink diff 2026-08-18 15:02:14 +02:00
Alain Brenzikofer d85da0647b implement names purchase MVP integrating with the badges service 2026-08-18 14:06:21 +02:00
EvgenyandEvgeny @ SimpleX Chat 352550089f core: client and service schema for badge purchases (#7358)
* core: client and service schema for badge purchases

* simplify api, receipt is payment type

* split invoice

* update

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-08-17 19:25:18 +01:00
spaced4ndy 4217c9ee84 Merge branch 'master' into badges 2026-08-14 11:31:01 +04:00
spaced4ndy 6fcfbd54c5 core: enforce allowRemoteCommand on the host (#7370) 2026-08-13 11:56:22 +00:00
spaced4ndy 493fb9cee8 core: limit the number of messages in a batch (#7364) 2026-08-13 10:04:21 +00: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
spaced4ndyandEvgeny Poberezkin 7ce2e6583e core: simplex-badge-service scaffolding (#7353)
* core: simplex-badge-service scaffolding

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* clean-up

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2026-08-08 21:00:23 +01:00
spaced4ndy e04e080a3d core: prevent remote controller from writing files outside files folder (#7352) 2026-08-07 13:26:48 +00:00
EvgenyandEvgeny @ SimpleX Chat 9c7128d547 core: plan for supporter badges (#7325)
* core: plan for supporter badges

* ledger maths

* update plan

* language

* lines

* lists

* redeem

* badge rpc protocol and draft service schema/plan

* update badge service protocol to support upgrades

* badge purchase ledger types and schema

* type, mvp plan

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-08-06 09:37:10 +01:00
spaced4ndy 8c9c0211f9 core: prohibit admission review in channels, don't send history to pending members (#7347) 2026-08-05 14:52:45 +00: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
EvgenyandEvgeny @ SimpleX Chat 61012d208e core, ui: extend profile peer type (#7277)
* core, ui: extend profile peer type

* remove comments

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

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-07-31 23:53:12 +01:00
EvgenyandEvgeny @ SimpleX Chat f1418f9e55 core: drop support of chat versions older than 08/2024 (#7319)
* core: drop support of chat versions older than 08/2024

* fix encoding tests

* skip failing tests

* rename

* fix

* query plans

* remove unused legacy code

* remove more unused

* remove unused

* remove unused names

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-07-29 19:06:20 +01:00
EvgenyandEvgeny @ SimpleX Chat 64bf358040 core: fix version update on binary chunks (#7320)
* core: fix version update on binary chunks

* pass chat event

* pass encoding

* revert

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-07-28 17:51:01 +01:00
Narasimha-sc 3726040d84 core: ignore mentions and replies of blocked members (#7303)
Messages of blocked members are hidden, but they still marked chat item
as user mention, showing mention badge and counting group as unread in
"mentions only" notification mode:
- createNonLive passed mentions unfiltered, allowing members blocked by
  admin to mention user - it is the default path, as it is only used
  when full delete is not allowed;
- userReply was set for replies to user messages from blocked members.
2026-07-25 10:42:34 +01:00
Evgeny 8320730440 core: prohibit image previews when images are prohibited (#7296) 2026-07-24 10:50:46 +01:00
Narasimha-sc dc3c106bda core: remove SimpleX Status preset contact (#7231)
* core: remove SimpleX Status preset contact

Preset contact cards are only created at user record creation
(createPresetContactCards), so this affects new profiles only;
existing profiles keep their stored SimpleX Status contact.

Removing the card shifts contact ids allocated after /create user
down by one, hence the test id updates.

* plans: justify SimpleX Status preset contact removal
2026-07-24 09:05:12 +01:00
Narasimha-sc 177a591466 core: fix member support chats staying marked unread after they're read (#7281)
* core: don't mark member support chat items read when reading group without scope

Reading a group without a scope marked support-scope items read without
decrementing the per-member support_chat_items_* counters, so members stayed
unread in the support list even after their chat was fully read. Restrict the
no-scope group read and its timed-items query to main-scope items.

* plans: support chat unread on no-scope group read

* core: update query plans for group scope read

The main-scope read and timed-items queries now filter on group_scope_tag
and group_scope_group_member_id, so they seek via idx_chat_items_group_scope_stats_all
(5-column) instead of idx_chat_items_groups_user_mention (3-column).

* plans: document query-plan and benchmark performance results

* tests: fix unreliable support item id capture in no-scope group read test

lastItemId returns the latest item by item_ts, which right after createGroup2
can be the group "connected" event rather than the just-sent support message.
The per-item read then targeted the wrong (already-read, main-scope) item and
never decremented the support counters, so the test failed regardless of the
fix (consistently in CI, flakily locally depending on item ordering).

Capture the support item id directly from the member-support scope instead,
keeping the change contained to this test. Verified: the test passes with the
fix and fails when the fix is reverted.

* tests: fix name-shadowing build error in no-scope group read test

The local pattern binding `itemId` shadowed the `itemId` helper imported
from ChatTests.Utils, which -Wname-shadowing (Werror) rejects. Rename the
local binding to `iId`.
2026-07-23 10:17:27 +01:00
spaced4ndy 8ec4b424cb core: prohibit to change or assign relay role (#7284) 2026-07-22 19:39:05 +00:00
spaced4ndy 49a8664331 core: reject group message forwards from unexpected admins (#7289) 2026-07-22 19:26:28 +00:00
Narasimha-sc 9586c97439 ui: show XFTP servers used for a file in message info (#7088)
Surface the XFTP servers that hosted a file's chunks in the message info
screen (Android, desktop, iOS), so a user can see which servers they are
downloading from (or, for sent files, uploading to) whenever they want to know.

APIGetChatItemInfo now returns fileXftpServers, derived from the stored file
description (private snd descr for sent items, rcv descr for received items);
extraction is best-effort and never fails the call.
2026-07-22 08:28:54 +01:00
sh 451bb5148f core: fix missing ": " in CLI display name prompt (#7280) 2026-07-21 09:25:22 +01:00
Evgeny Poberezkin 52f1f7403d core: update query plans 2026-07-20 17:50:22 +01:00
shandEvgeny Poberezkin 2ea5940e81 core, ui: per-server roles for self-hosted servers (#7254)
* core, ui: plan per-server roles for self-hosted servers

* core: add per-server roles field to UserServer

* core: add nullable role columns to protocol_servers

* core: persist per-server roles

* core: validate server coverage using per-server roles

* test: cover per-server roles resolution and coverage

* multiplatform: per-server role toggles for self-hosted servers

* ios: per-server role toggles for self-hosted servers

* core: per-server role overrides with per-role defaults

* test: cover three-state per-server role resolution

* fix: derive Eq for ServerRolesOverride

* multiplatform: three-state role dropdowns on saved servers

* ios: three-state role pickers on saved servers

* test: per-server roles independent across two servers

* test: enable names role in name-resolution tests

* style: trim comments in per-server roles code

* chore: rename server_roles migration to 20260716 (last)

* core: per-server roles override operator roles, inherit when unset

* multiplatform: per-server role default inherits from operator

* ios: per-server role default inherits from operator

* refactor(servers): tidy per-server roles per review

- dedup no-operator default into ServerRoles.noOperatorDefault (Kotlin/Swift)
- iOS: move roles-section control flow to the call site via a named gate,
  and parse the server address once instead of up to three times
- Kotlin: collapse redundant derivedState; revert defaultOn->default rename
  for cross-platform parity
- drop unused Hashable conformance on Swift ServerRoles
- add agentServerCfgs test for names inheritance from an operator
- remove no-op enableNamesRole calls from dormant DirectoryTests
- fix ChatClient import ordering

* chore(migration): date server_roles migration 20260720

* only show roles when server is enabled, move section above QR code

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2026-07-20 16:35:13 +01:00
spaced4ndy 966c9f7947 core: fail compilation on name shadowing (#7283) 2026-07-20 13:20:37 +00:00
spaced4ndy ba6f5386c8 core: allow moderators to change member <-> observer roles in groups (#7279) 2026-07-20 12:56:23 +00:00
spaced4ndy 93831a0f24 core: signed history in channels, auto-sign based on preference (#7257) 2026-07-17 19:44:51 +00:00
shandEvgeny a81baebed5 docs: add Hosting your own Chat Relay guide (#7272)
* docs: add Hosting your own Chat Relay guide

* cli: run headless relay without a terminal

--headless (no -e) now runs via simplexChatCore instead of the terminal
UI, so the relay runs as a systemd service without a TTY (withTerminal
requires one). Drains the event queue logging only errors, and sets
stdout to line-buffering so logs reach the journal.

* docs/chat-relay: debounce service

* Apply suggestions from code review

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

---------

Co-authored-by: Evgeny <evgeny@poberezkin.com>
2026-07-17 17:09:38 +01:00
6375457685 core: add optional profile description (#7256)
* core: add optional profile description

* bot types

* kotlin ui

* query plans

* postgres schema

* fix ui

* fix UI

* refactor

* description in business chats

* share address

* sign address card when shared by owner

* from owner string

* remove unused string

* refactor

* fix

* ProfileDescriptionText

* refactor modals

* ios ui

* nix config

* correction

Co-authored-by: simplex-chat-agent[bot] <287173099+simplex-chat-agent[bot]@users.noreply.github.com>

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
Co-authored-by: simplex-chat-agent[bot] <287173099+simplex-chat-agent[bot]@users.noreply.github.com>
2026-07-15 17:54:21 +01:00
spaced4ndy 0fef34914d core, ui: security code verification in channels (verify member key) (#7255) 2026-07-15 10:46:31 +00:00