Commit Graph
125 Commits
Author SHA1 Message Date
Evgeny @ SimpleX Chat 1c296bf552 Merge branch 'master' into ab/wallet 2026-10-11 10:17:45 +00:00
EvgenyandEvgeny @ SimpleX Chat 07c363849b core, ui: invite member of one group to another group (#7682)
* rfc: invite member of one group to another group

* update

* update

* implement

* version

* update

* do not show error if contact was removed when joining group

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-10-11 09:50:42 +01:00
Evgeny @ SimpleX Chat 1e6fedf5c9 Merge branch 'master' into ab/wallet 2026-10-11 07:48:53 +00:00
Alain Brenzikofer 61f9c51f2c doc cosmetics 2026-10-05 10:42:18 +02:00
Alain Brenzikofer a277c021ea reduce explicit types 2026-10-05 10:36:58 +02:00
Alain Brenzikofer 3141902a53 treat hidden profiles same as normal ones. they can hold accounts now 2026-10-05 10:19:56 +02:00
Alain Brenzikofer 58efa813e2 fable review fixes 2026-09-30 13:22:47 +02:00
Alain Brenzikofer 4936e29a39 add down migration for db and drop redundant masterkey field in db 2026-09-30 12:30:29 +02:00
Alain Brenzikofer cfe6a69acd repin to mq, derivation fallible again 2026-09-28 15:31:46 +02:00
Alain Brenzikofer 7b4ac1bb8b review iterations 2026-09-26 14:29:40 +02:00
Alain Brenzikofer 143d073980 infallibel wallet and account derivation 2026-09-26 12:34:06 +02:00
Alain Brenzikofer 5db99e96b9 refactor WalletSeed type, see mq wip 2026-09-25 12:12:37 +02:00
Alain Brenzikofer ab88104dbd self-review iteration 10 2026-09-25 08:31:31 +02:00
Alain Brenzikofer c3c3d8e3c9 self-review iteration 9 2026-09-25 08:12:51 +02:00
Alain Brenzikofer 22c3e5d067 iteration 6 2026-09-24 17:05:14 +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
Alain Brenzikofer 7445e685b7 minimize diff and align style even more 2026-09-22 09:29:47 +02:00
Alain Brenzikofer 522f5dbd90 Merge remote-tracking branch 'origin/master' into ab/wallet 2026-09-21 17:11:02 +02:00
Alain Brenzikofer 768a230f21 /goal iteration 5 - unconfirmed 2026-09-21 17:03:54 +02:00
Alain Brenzikofer bfc4e1fbaa /goal iteration 4 - unconfirmed 2026-09-21 14:42:34 +02:00
Alain Brenzikofer 4f21e68972 drop BIP85 and flattenhierarche. no keyrings 2026-09-21 11:30:05 +02:00
Alain Brenzikofer 59b5a6182a shorten 2026-09-21 11:13:34 +02:00
Alain Brenzikofer 0dc0c963bf restructure RFC 2026-09-21 09:55:21 +02:00
Alain Brenzikofer b0185f2029 introduce keyring as the thing a profile binds to 2026-09-21 09:16:48 +02:00
Alain Brenzikofer 805f68ca94 change RFC wallet architecture to BIP-85 per profile and hardened paths for names 2026-09-21 08:05:05 +02:00
Alain Brenzikofer 4255b46c04 let remote use wallet, but filter logs to avoid leaking secrets 2026-09-14 15:01:47 +02:00
Alain Brenzikofer 1b33002ee7 disencourage hidden profiles using names 2026-09-14 14:06:48 +02:00
Alain BrenzikoferandClaude Opus 5 ba673f95bf core: export says which kind of secret, so other kinds can follow
/_wallet export name <k> rather than an index straight after export. The
bare form stays the seed mnemonic, and a profile's key can be added beside
the name one without the argument having to be guessed from its shape.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-14 08:09:04 +00:00
Alain BrenzikoferandClaude Opus 5 8fcfd87b6b docs: the export argument is an index, not a name
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 15:33:54 +00:00
Alain BrenzikoferandClaude Opus 5 a5730b6210 docs: 24 words is a choice, not a default
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 15:19:34 +00:00
Alain BrenzikoferandClaude Opus 5 899d5c3a41 core: the column holds entropy, so name it entropy
The mnemonic comes back from the entropy exactly, which is what export
returns, and the seed PBKDF2 derives from the mnemonic is computed when a
key is needed and never stored. The column was the one thing called seed
that is not the seed, which is why it needed a comment saying so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 14:19:31 +00:00
Alain BrenzikoferandClaude Opus 5 da20a039ae core: the argument is a mnemonic, so name it one
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 14:06:26 +00:00
Alain BrenzikoferandClaude Opus 5 443fd43545 core: one command for the seed, whichever way it arrives
create and import differed only in where the entropy came from and already
shared one store function, so they are one command with the source named:
/_wallet create new, or /_wallet create seed=<phrase>. Naming it means no
seed is generated by typing a prefix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 12:28:46 +00:00
Alain BrenzikoferandClaude Opus 5 bfa510cdb1 docs: rfc for names counted per device
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 12:13:20 +00:00
Alain BrenzikoferandClaude Opus 5 05508c0edd docs: give the reason for the counter before what it costs
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 07:35:39 +00:00
Alain BrenzikoferandClaude Opus 5 af1349160e docs: the reason for a key per name is that owners are public
One address owning several names links them: whoever knows one name can read
its owner and find the others. That is the reason, not the narrower export.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 07:33:29 +00:00
Alain BrenzikoferandClaude Opus 5 bf5b9d5af4 docs: the wallet is not only for names
The seed, the accounts and the derivation are a wallet. Owning a name is the
first thing it is used for, not what it is, and the title and the problem it
solves now say so.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 07:16:20 +00:00
Alain BrenzikoferandClaude Opus 5 bcfa74ed9c docs: what the stealth meta address is for
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 07:09:56 +00:00
Alain BrenzikoferandClaude Opus 5 044e0fc0d6 docs: cut the rfc to what stands on its own
Drops the references to other documents and to what is or is not in a pull
request, so the design reads without them, and the list of tests, which
restated their names and would drift. 164 lines to 134, against a median of
117 for the rfcs here that define schema.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-11 06:51:10 +00:00
Alain BrenzikoferandClaude Opus 5 472ee5ef10 core: refuse an account index BIP-32 cannot harden, whichever way it arrives
The counter path checked it, the explicit one did not, and the parser is not
the only caller: processChatCommand takes APIWalletBind from library callers
too. hardened leaves an index at or above 2^31 alone, so account i and
i + 2^31 are the same key while the duplicate check compares the stored
integers, and two profiles could hold one account's names.

The rfc now says what hiding a profile from /_wallet does and does not
protect: the seed is one per device, so whoever unlocks any profile can
derive every account.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-10 16:44:15 +00:00
Alain BrenzikoferandClaude Opus 5 81fd2415a5 docs: rfc for the keys that own names
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rvc3HbiWBTqbAvRT45G5oX
2026-09-10 14:59:55 +00:00
Narasimha-scandEvgeny 486c2abf26 ui: connect when a SimpleX link is pasted as a markdown hyperlink (#7348)
* ui: connect when a SimpleX link is pasted as a markdown hyperlink

* remove comments

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

---------

Co-authored-by: Evgeny <evgeny@poberezkin.com>
2026-08-12 14:54:45 +01:00
68abd805d4 rfc: namespace (#7001)
* rfc: namespace

* update rfc

* markdown for names

* record type, app "upgrade" alerts

* update api types

* rfc: change namespace syntax - now it is the usual namespace

* update bot types

* move types to simplexmq

* core: refactore markdown

* update simplexmq

* better names

* new names

* update nix content hashes

* fix

* change valid name function

* update simplexq, update valid name conditions

* fixes

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

* update simplexmq

* fix localization

* simpler

* refactor

* refactor

* fix

---------

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-05-28 08:44:43 +01:00
1e042718a3 core: shared group ID in group profile for relayed groups (#6716)
* rfc: add shared group ID to profile (the same as linkEntityId and sha256(rootKey))

* implement group ID

* fix

* update simplexmq

* line

* toGroupKeys

* fix test

* fix bot api

* check group ID in other cases

* fix

---------

Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2026-03-30 08:25:54 +00:00
2db92ff6ed core: group member/owner keys for signing important messages (#6597)
* rfc: member keys

* update plan

* new encoding for message batches

* send new batch encoding in relay-based groups

* mvp launch plan

* update plan

* core: verify group member keys (#6669)

* core: verify group member keys

* refactor, process forwards

* refactor parsing

* refactor parsing 2

* refactor parser 3

* update rfc

* simplify

* simplify

* log tag

* refactor tag logging

* refactor withVerifiedSig

* simplify

* refactor more

* comment

* fix encoding

* fix sending as group for the new binary batch encoding

* unify types

* update api docs

* clean up

---------

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

* core: signing messages with member keys (#6675)

* core: signing messages with member keys (types)

* sign messages

* refactor batching

* better

* refactor

* remove unused Eq

---------

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

* core: forward signed messages as unchanged binary strings (#6678)

* core: forward signed messages as unchanged binary strings

* refactor

* consolidate types

* refactor VerifiedMsg

* refactor more

* undo rename

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

* update schema and plans

* add signed status to chat items and events

* test signed chat items

* unify parser

* PostgreSQL fix, remove unused fields, option to send inline files in the tests

* change inline files config

* revert inline config change

* use different characters in batch encoding, to avoid conflict with inline files

* fix test, api docs, query plans

---------

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

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
2026-03-16 10:46:35 +00:00
spaced4ndy dedc57d328 Merge branch 'master' into chat-relays 2026-02-19 15:29:18 +04:00