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
Evgeny
621b291da1
core: member mentions, types and rfc ( #5555 )
...
* core: member mentions, types and rfc
* update
* update rfc
* save/get mentions (WIP)
* markdown
* store received mentions and userMention flag
* sent mentions
* update message with mentions
* db queries
* CLI mentions, test passes
* use maps for mentions
* tests
* comment
* save mentions on sent messages
* postresql schema
* refactor
* M.empty
* include both displayName and localAlias into MentionedMemberInfo
* fix saving sent mentions
* include mentions in previews
* update plans
2025-01-29 13:04:48 +00:00
Evgeny
c9f6f3c053
core: api and protocol support for reporting messages to group moderators ( #5469 )
...
* core: api and protocol support for reporting messages to group moderators
* moderator role
* delete mode
* remove auto-accepting conditions for SimpleX Chat Ltd
* mark as deleted locally
* ui: delete mode type
* store msg_content_tag with chat items, support moderator option on receiving side
* report API
* send reports only to moderators that support them, fail if none support
* fix tests
* test
* remove comment
* revert version
* do not build ghc8107 in stable branch
* skip job
* fix condition
* remove condition
* condition
* exit
* update
2025-01-04 18:33:27 +00:00
Evgeny and spaced4ndy
5f01dc1a3f
core: support business addresses and chats ( #5272 )
...
* core: support business addresses and chats
* types
* connect plan, add link type
* ios: toggle on address UI
* make compile
* todo
* fix migration
* types
* comments
* fix
* remove
* fix schema
* comment
* simplify
* remove diff
* comment
* comment
* diff
* acceptBusinessJoinRequestAsync wip
* comment
* update
* simplify types
* remove business
* wip
* read/write columns
* createBusinessRequestGroup
* remove comments
* read/write business_address column
* validate that business address is not set to be incognito
* replace contact card
* update simplexmq
* refactor
* event when accepting business address request
* sendGroupAutoReply
* delete contact request earlier
* test, fix
* refactor
* refactor2
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-12-02 14:01:23 +00:00
Evgeny and spaced4ndy
97df069730
core: add support for server operators ( #4961 )
...
* core: add support for server operators
* migration
* update schema and queries, rfc
* add usage conditions tables
* core: server operators new apis draft
* update
* conditions
* update
* add get conditions api
* add get conditions API
* WIP
* compiles
* fix schema
* core: ui logic in types (#5139 )
* update
---------
Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com >
2024-11-04 13:28:57 +00:00
spaced4ndy
a9d2535292
core: differentiate inactive and forwarded group snd statuses ( #4420 )
...
* core: GroupSndStatus
* rfc
* encoding, db apis
* pending, forwarded statuses
* encoding
2024-07-09 18:29:36 +01:00
spaced4ndy and Evgeny Poberezkin
d951003191
core: servers summary api ( #4319 )
...
* core: servers summary api
* rework
* server known types
* set stats file path
* rename
* local simplexmq
* update
* rfc
* update
* update
* get servers
* compile summary
* remove sort
* rename
* rename, refactor
* refactor attempt
* refactor attempt 2
* refactor
* fix
* fix2
* remove space
* refactor xftp
* update
---------
Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com >
2024-06-25 09:51:55 +04:00
spaced4ndy
0596278e50
docs: flexible user records rfc ( #4205 )
2024-06-03 14:15:41 +04:00
Evgeny Poberezkin
19fc44efae
rfc: commercial model for infrastructure operators ( #4102 )
2024-04-30 07:53:27 +01:00
spaced4ndy
6c509027f7
docs: IP address protection rfc ( #4036 )
2024-04-17 13:53:45 +04:00
Evgeny Poberezkin
2968cd0460
rfc: protocol extensions for channels/super-peers ( #3980 )
2024-04-05 16:46:37 +01:00
Evgeny Poberezkin
e1a997877a
rfc: groups based on super-peers (WIP) ( #3917 )
2024-04-01 15:04:13 +01:00
spaced4ndy
1d698c114f
docs: communicate rejection rfc ( #3946 )
2024-03-26 11:29:28 +04:00
spaced4ndy
4b7458b58f
docs: PQ integration rfc ( #3847 )
2024-03-01 11:27:13 +04:00
spaced4ndy
ec8ae9febe
docs: inactive group members rfc (simplified) ( #3803 )
2024-02-26 15:05:25 +04:00
Evgeny Poberezkin and Alexander Bondarenko
e37654772f
core: api to save/get app settings to migrate them as part of the database ( #3824 )
...
* rfc: migrate app settings as part of export/import/migration
* export/import app settings
* test, fix
* chat: store app settings in db (#3834 )
* chat: store app settings in db
* add combining with app-defaults
* commit schema
* test with tweaked settings
* remove unused error
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
* remove app settings from export/import
* test, more settings
---------
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com >
2024-02-24 15:00:16 +00:00
Evgeny Poberezkin
2d643e8d29
rfc: amend PQ double ratchet RFC
2024-02-24 09:27:55 +00:00
Evgeny Poberezkin
73de74d7e9
rfc: UX for database migration and other actions ( #3810 )
...
* rfc: UX for database migration
* update
* update
2024-02-19 12:20:12 +00:00
spaced4ndy
dfa9775d7e
docs: add to inactive group members rfc ( #3798 )
2024-02-13 12:10:58 +04:00