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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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 Brenzikofer and Claude 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-sc and Evgeny
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
sh
764fb27f1c
core, directory: allow voice messages during member approval phase to allow audio captchas in groups that prohibit voice messages ( #6624 )
...
* rfcs: add member-support-voice rfc
* update based on the feedback
* implement RFC
* add new tests
* fix protocol tests and update plans
* restrict voice captcha exemption to host approval phase
* update agent_query_plans.txt
2026-02-14 09:26:18 +00:00
spaced4ndy and Evgeny Poberezkin
bd8ba4d5c6
core: chat relays protocol ( #6383 )
...
* core: chat relays protocol wip
* types, notes
* remove file
* removal protocol
* schema
* status
* update
* recovery
* update
* formatting
* rename
* more types
* comment
* more docs
* decrease number of steps
* format
* correct
* update
* update protocol
* update
* typo
* todo
* update doc
* update
* update
* remove added
* update
* update
* XGrpRelayReady
* link to chat relays
* update
* remove from protocol
* update
* json
* wip
* remove comment
* wip
* update
* wip
* wip
* update
* wip
* wip
* plans
* better view
* fix
* fix
* relay acceptance
* rework api
* add relays to link
* comment
* active on con, fix send
* comments
* direct in group plan
* prepare
* member connection wip
* comments
* member connection wip
* fix forwarding
* introduce moderators to new member
* enable relay tests
* plans
* security objectives
* refactor
* add to threat model
* stress test wip
* stress test wip
* Revert "stress test wip"
This reverts commit acde8a1fb3 .
* Revert "stress test wip"
This reverts commit 6435808438 .
* remove stress test
* improve output
* invert relay fkey
* postgres schema
* comments
* group in progress, remove auto-select relays commented code
* comments
* corrections
* comment
* lint
* redundant import
* core: chat relay request worker (#6509 )
* update plans
* strict tables
* core: update group link asynchronously with relay link (#6548 )
* update simplexmq
* docs: connection to chat relays rfc (#6554 )
* add test for 2 relays (doesn't pass)
* create unknown member in same transaction as checking
* fix relays choosing different memberId (XContactRelay)
* plans, api
* use same incognito profile for relays, connect concurrently, save correct link for plan
* test
* don't duplicate items on group connection
* check relay record exists when joining
* use mapConcurrently when adding relays, update schemas
* fix multi-relay join for postgres (savepoint)
* core: async retry connection to chat relays (#6584 )
* update simplexmq
* fix api tests
* prefer throwing temp error on connection
* check group relays when deleting from configuration
* relay_request_err_reason
* relay role
* rename, fix syntax
* plans
* rename, style
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2026-01-21 13:19:06 +00:00
Evgeny
c9137cb015
rfc: simplified community vouchers ( #6498 )
...
* rfc: simplified community vouchers
* update
2025-12-29 20:47:13 +00:00
Evgeny
889b5ac2f5
website: update community vouchers page ( #6481 )
...
* website: update community vouchers page
* update doc
* old FAQ
2025-12-18 08:58:27 +00:00
spaced4ndy and Evgeny Poberezkin
f76e994034
core: forward based on relations vector ( #6464 )
...
* core: forward based on relations vector wip
* fix introductions
* fix forwarding tests
* fix forwarding inside support scope
* fix deduplication test
* fix more tests
* plans, api
* live migration wip
* enable tests
* member locks
* api
* plans
* fix for postgres
* fix for postgres
* rename predicate
* rename predicate
* optimize
* refactor
* fix
* check
* move part of migration to sql
* plans
* core: preserve detailed information in relation vectors (#6484 )
* core: relations vector live migrations; stage 2 migration sql (#6472 )
* rework forwarding in support scope
* move operations inside transactions
* set_member_vector_new_relation function
* read vector ad-hoc
* partition in transaction
* fix postgres
* postgres schema
* api
* plans
* remove comment
* lock before migration computation
* refactor
* simplify set relations
* retreive only support scope members
* fix
* refactor
* fix comment
* enable tests
* 1 second
* for update
* locks
* fix mask
* plans
* fix
* postgres
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2025-12-09 14:48:32 +00:00
spaced4ndy
594a74e337
docs: relations vector rfc ( #6463 )
2025-11-25 07:31:35 +00:00
spaced4ndy
1101588c8b
docs: acknowledgements for async command responses rfc ( #6444 )
2025-11-18 07:26:25 +00:00
Evgeny
1c684ae654
rfc: unlinkable infrastructure (community) vouchers ( #6402 )
2025-10-23 21:49:12 +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