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
Evgeny and Narasimha-sc
a66cad494d
rfc: chat widgets and activities approach ( #6169 )
...
* rfc: chat widgets and activities approach
* Narasimha sc patch 17 (#6171 )
* docs: Update FAQ
* Update FAQ.md
* update
---------
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com >
* widget syntax/examples
* update
---------
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com >
2025-08-28 07:13:52 +01:00
Evgeny
e7909ff813
rfc: channels MVP scope ( #6131 )
...
* rfc: channels MVP scope
* update
* split mvp
2025-08-09 20:29:25 +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
dd4ec6008d
docs: super-peer groups MVP rfc ( #5625 )
...
* docs: super-peer groups MVP rfc
* protocol
* schema
* remove super-peer
* accounting
* wording
* add
* fix
* fix
* fix
2025-07-30 17:09:00 +01:00
Evgeny and spaced4ndy
fb46c07fbf
rfc: group message and profile signing in chat protocol ( #5835 )
...
* rfc: group message and profile signing in chat protocol
* typo
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2025-07-30 17:04:15 +01:00
spaced4ndy and Evgeny Poberezkin
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
spaced4ndy
704bab171d
docs: member limits rfc ( #5635 )
2025-02-17 17:41:27 +04:00