Narasimha-sc
b48b86f37d
plans: profile unread count: resume re-read races
2026-10-19 19:37:40 +00:00
Narasimha-sc
377e656e50
plans: profile unread count: pending members' support items
2026-10-19 19:23:45 +00:00
Narasimha-sc
9f8224af56
plans: profile unread count: iOS app badge
2026-10-19 19:02:43 +00:00
Narasimha-sc
879c490d67
plans: profile unread count: picker refresh conditions, iOS resume race
2026-10-19 18:51:06 +00:00
Narasimha-sc
8a6fc06c4a
plans: profile unread count: support-chat seed, stacked PR, test rows
2026-10-19 18:38:44 +00:00
Narasimha-sc
c4973033fe
plans: profile unread count: Kotlin picker refresh
2026-10-19 17:52:13 +00:00
Narasimha-sc
5f2b3dbe9b
plans: profile unread count: which builds were compared
2026-10-19 17:38:37 +00:00
Narasimha-sc
d12aa56a90
plans: profile unread count: test results
2026-10-19 16:50:17 +00:00
Narasimha-sc
0958204291
plans: profile unread count: residual races
2026-10-19 15:32:51 +00:00
Narasimha-sc
db971ed986
plans: profile unread count
2026-10-19 15:23:38 +00:00
Narasimha-sc
9519650447
ios: take unread contributions from the listed chat
...
updateChatSettings read the contribution before and after from the chat it
was passed, after the API call. After a resume SimpleXApp.updateChats lists
new Chat objects while an open ChatView keeps the old one, so the stats it
read could be stale and its settings never changed by updateContact/
updateGroup. And an item event processed during the call can already carry
the new settings (addChatItem -> updateChatInfo), so reading the settings
after the call gave before == after. The contribution before is now the
listed chat's stats with the listed chat's settings from before the call,
and after is the listed chat's, as the Kotlin updateChatSettings does.
The "keep conversation" re-add in deleteContactChat likewise carries over
the listed chat's stats, taken before removeChat, rather than the passed
chat's.
2026-10-19 15:07:08 +00:00
Narasimha-sc
522c27f1f9
fix: compute the settings change's unread contribution from the settings before the call
...
updateChatSettings read the chat's contribution and unread tag before the
change from the listed chat after apiSetSettings returned. An item event
processed during the call can already carry the new settings (addChatItem
-> updateChatInfo), so before equalled after: the count and the unread tags
kept the chat's old contribution. Before is now the listed chat's stats
with the listed chat's settings from before the call.
2026-10-19 15:07:08 +00:00
Narasimha-sc
9c74c54f3c
fix: lower the profile unread count when a loaded chat has fewer unread
...
Opening a chat replaces its chatStats with the server's on Android and
desktop. When the chat was already listed and the server reports fewer
unread items than the list had (e.g. items expired or were read on
another path), the count now drops by the chat's contribution
difference, like every other stats writer.
A content-filtered initial load of a group returns zero stats when no
unread item matches the filter (otherwise the full counts), so a load
with a content filter doesn't move the count (statsFiltered). A search
never reaches this branch: the core rejects initial pagination with a
search.
It only moves down. A chat from outside the 5000-chat window can be
listed with empty stats before it is opened, while the seed already
counted its unread items; moving up on its first open would count them
twice. Chats the load adds come with the server's stats, which the seed
already counted, so the count stays as it is for them. Upward drift
corrects itself at the next reseed: resume on Android and iOS, a profile
switch, opening the profile picker, or changing the chat item TTL.
If a new item arrives between the load's query and its stats
replacement, the downward move can drop the count below the database
until the next reseed.
iOS keeps the listed chat's stats on load, so there is nothing to move there.
2026-10-19 15:06:31 +00:00
Narasimha-sc
787827c16a
Merge branch 'master' into nd/fix-profile-unread-count
2026-10-19 14:54:58 +00:00
Narasimha-sc
8050fc1e9b
fix: maintain the profile unread count by the same rule that seeds it
...
The count is seeded by getUsersInfo, which counts RcvNew items where ntfsEnabled
holds - every item for an unmuted chat, only mentions for a mentions-only one,
none for a muted one. The deltas that maintain it afterwards did not follow that
rule for the active profile: addChatItem incremented for every item regardless
of the chat's notification setting; on Android and desktop the mark-read helpers
subtracted the full unread count, while on iOS Mark read and Clear followed the
mentions-only setting but subtracted the full count for muted chats, and
per-item reads forwarded the raw delta; removeChat left a deleted chat's unread
behind; and changing the setting moved a chat between rules without moving the
count.
Chat.userUnreadCount names what a chat contributes, and it is not a new rule:
totalUnreadCountForAllUsers already computed exactly this inline for the app
badge, and now calls it. The sites that change a chat's stats, its settings or
its presence report the contribution before and after, and the count moves by
the difference - apart from the exceptions noted at the end.
For that to hold the stats it reads have to be maintained, so on Android and
desktop decreaseCounterInPrimaryContext now decrements unreadMentions alongside
unreadCount when the item was a mention. Without it a mentions-only chat's
contribution never moved on any of that function's three paths - a deleted item,
a moderated member item, or an item going from New to Read. iOS already passed
the mention delta on its deletion paths.
This is visible beyond the profile picker, which badges only other profiles: the
desktop tray dot sums the count across profiles including the active one, and on
iOS these same deltas drive the app icon badge. So on iOS, muting a chat with
unread now drops the badge by its contribution, deleting a chat drops it, and a
message in a muted chat no longer raises it - each of which now agrees with
totalUnreadCountForAllUsers, which the badge is also set from.
addChat is deliberately not the mirror of removeChat: adding a chat means it is
being loaded into view, and its items were already counted by the seed, so
counting them again on ChatItemsLoader's addChat would double them. The one
place that removes and re-adds a chat while keeping its items - deleting a
contact in "keep conversation" mode on iOS - now carries its stats across and
restores the contribution explicitly, since the core keeps both the contact row
and its items there and the seed still counts them.
Wherever the chat list is re-read wholesale the counts are re-read with it: both
resume paths, and setting a chat item TTL, which deletes the active profile's
items without per-item events and so leaves its count stale. They are assigned
before the chats, which matters on iOS because updateChats recomputes the app
badge from users there. Reading users is best effort on both
platforms - losing them must not cost us the chats already fetched.
This does not make the count exact. getUsersInfo has no group_scope_tag filter
where the query behind chatStats.unreadCount does, so the seed counts
support-scope items that no client-side rule can, and the count steps up by the
outstanding support unread on each reseed. replaceChat also installs a whole
chatStats without moving the count: on Android and desktop from a snapshot taken
before the API call, in ChatListNavLinkView's markChatRead and markChatUnread
and ChatView's markUnreadChatAsRead, and on iOS from the server in the
receivedContactRequest handler in SimpleXAPI. Settings changes that arrive in
events through updateChatInfo do not move it either.
2026-10-19 14:54:58 +00:00
Evgeny and Evgeny @ SimpleX Chat
03d789aed7
website: add link relations, update spec ( #7773 )
...
* website: add link relations, update spec
* wellknown
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 14:28:35 +01:00
Evgeny and Evgeny @ SimpleX Chat
e41ee3a851
docs: web discovery and LLM agent protocols ( #7769 )
...
* docs: web discovery and LLM agent protocols
* update
* update
* update
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 13:49:56 +01:00
Evgeny Poberezkin
5a02b906e6
core: 7.1.0.14 (simplexmq 7.1.0.14)
2026-10-19 13:25:55 +01:00
bddbe5afaf
website: translations ( #7771 )
...
* website: disable badge page temporarily (#7516 )
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
* Translated using Weblate (Czech)
Currently translated at 99.2% (376 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/cs/
* Translated using Weblate (Indonesian)
Currently translated at 95.5% (362 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/id/
* website: remove duplicate index-hero-invest key in Indonesian translation
---------
Co-authored-by: Evgeny <evgeny@poberezkin.com >
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
Co-authored-by: zenobit <zenobit@disroot.org >
Co-authored-by: Arif Budiman <arifpedia@gmail.com >
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com >
2026-10-19 12:25:00 +00:00
+9
5b61fd5c99
ui: translations ( #7770 )
...
* website: disable badge page temporarily (#7516 )
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
* Translated using Weblate (German)
Currently translated at 100.0% (2921 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
* Translated using Weblate (German)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/
* Translated using Weblate (French)
Currently translated at 100.0% (2921 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
* Translated using Weblate (French)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2921 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (2920 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 99.6% (2911 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2921 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
* Translated using Weblate (Azerbaijani)
Currently translated at 32.9% (827 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Kurdish)
Currently translated at 29.3% (858 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ku/
* Translated using Weblate (Kurdish)
Currently translated at 32.8% (961 of 2921 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ku/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (2929 of 2930 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2930 of 2930 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2930 of 2930 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
* Translated using Weblate (Kurdish)
Currently translated at 38.3% (1123 of 2930 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ku/
* Translated using Weblate (German)
Currently translated at 100.0% (2930 of 2930 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
* Translated using Weblate (Azerbaijani)
Currently translated at 33.2% (835 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2903 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.8% (2909 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
* Translated using Weblate (Italian)
Currently translated at 98.0% (2913 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.9% (2911 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (German)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
* Translated using Weblate (French)
Currently translated at 99.3% (2952 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/
* Translated using Weblate (Arabic)
Currently translated at 97.1% (2888 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
* Translated using Weblate (French)
Currently translated at 99.8% (2967 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
* Translated using Weblate (Spanish)
Currently translated at 99.0% (2943 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.9% (2971 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 97.1% (2886 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
* Translated using Weblate (Azerbaijani)
Currently translated at 37.4% (942 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (French)
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
* Translated using Weblate (Czech)
Currently translated at 90.8% (2701 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/
* Translated using Weblate (Azerbaijani)
Currently translated at 42.6% (1071 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Czech)
Currently translated at 91.0% (2705 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/
* Translated using Weblate (Czech)
Currently translated at 50.2% (1264 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/cs/
* Translated using Weblate (Azerbaijani)
Currently translated at 45.2% (1136 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Azerbaijani)
Currently translated at 45.3% (1140 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (2972 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
* Translated using Weblate (Azerbaijani)
Currently translated at 46.2% (1162 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Portuguese)
Currently translated at 37.2% (1108 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt/
* Translated using Weblate (Portuguese)
Currently translated at 40.1% (1193 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt/
* Translated using Weblate (Portuguese)
Currently translated at 40.2% (1195 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt/
* Translated using Weblate (Slovak)
Currently translated at 36.6% (1089 of 2972 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* Translated using Weblate (Azerbaijani)
Currently translated at 47.0% (1183 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* android, desktop: remove unused translations
* ui: fix translations (stale badge texts, missing placeholder, inverted and verbless strings)
- de, es, fr, hu, it, pt-BR, zh-Hans: re-translate badge strings from the current English (#7544 rewrote them after they were translated), restore the %1$s detail in badges_error_bad_service_response
- es, pt-BR: badges_savings is a discount, not "store"
- zh-Hans: Legend badge tier is 传奇, not a chart legend
- ku: "removed you" read as "you removed"; removed status is derxistî
- pt: verb buttons (Open, Archive, Save address settings, Paste link / Scan), link vs address in onboarding, accepted/removed %1$s events
- az (iOS): Mark deleted/verified/read, Keep conversation, Forward, Lock after, broken bold
- pt-BR: Monthly badge period, "shown on your profile" caption
- de: Support SimpleX as an action (it is also an alert button)
- cs (iOS): %d day singular, Test relay caption grammar
---------
Co-authored-by: Evgeny <evgeny@poberezkin.com >
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
Co-authored-by: mlanp <github@lang.xyz >
Co-authored-by: Ranakan <ranakan.dev@protonmail.ch >
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org >
Co-authored-by: Hosted Weblate user 54392 <hamburger2048@users.noreply.hosted.weblate.org >
Co-authored-by: SanctumSaturn <oraculogithub@gmail.com >
Co-authored-by: summoner001 <summoner@disroot.org >
Co-authored-by: Mireli5656 <miraliseyidli5656@gmail.com >
Co-authored-by: Terciman <ter.distant121@passinbox.com >
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org >
Co-authored-by: No name <usir.alerts@onionmail.org >
Co-authored-by: zenobit <zenobit@disroot.org >
Co-authored-by: Fábio Pereira (Serzedo) <fpereira-84@users.noreply.hosted.weblate.org >
Co-authored-by: Martin Kozempel <martin1928@users.noreply.hosted.weblate.org >
Co-authored-by: Mireli5656 <mireli5656@users.noreply.hosted.weblate.org >
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com >
2026-10-19 12:24:24 +00:00
Evgeny and Evgeny @ SimpleX Chat
3e6fd3836b
core: round down time of sent messages to prevent replies showing above if they are within one second ( #7695 )
...
* core: round down time of sent messages to prevent replies showing above if they are within one second
* fix item timestamps
* query plans
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 12:47:25 +01:00
spaced4ndy
d04510f66f
ci: add a placeholder for the Android app test workflow, so it can be started by hand on its branch ( #7772 )
2026-10-19 11:26:22 +00:00
sh
58bc94bc74
core: carry ICE restart session in call extra info ( #7718 )
2026-10-19 12:22:10 +01:00
2ea1ec0d50
ui: reconnect call ( #7711 )
...
* Update Call.hs
* Update Internal.hs
* add reconnecting string
* Update WebRTC.kt
* desktop: show reconnecting state, keep call duration
* android keep connection time correct wiith adding reconnecting
* Update CallTypes.swift add reconnecting status on IOS
* Update WebRTC.swift add reconnecting
* add reconnecting and make sure call duration is correct
* Update call.ts
* core: regenerate call.js from call.ts
* Update Call.hs revert call status change
minimization
* Update Internal.hs rever to minimize changes
* Update CallTypes.swift minimize changes
* Update WebRTC.kt minimize changes
* Update CallView.desktop.kt desktop shows reconnecting without sending to core
* Update CallView.android.kt show reconnecting without sending it to the core
* Update ActiveCallView.swift show reconnecting to ui without sending to core
* Update CallView.desktop.kt add reconnecting sound on reconnect
* Update CallView.android.kt add reconnecting sound
* Update ActiveCallView.swift play reconnecting sound when reconnecting
* Update RecAndPlay.desktop.kt
* rebuild
* refactor
* build
* android, desktop: restart ICE to reconnect calls
* ios: restart ICE to reconnect calls
* webrtc: add call reconnection e2e tests
* android, desktop: fix lost call commands
---------
Co-authored-by: GuavaGoat <320862384+GuavaGoat@users.noreply.github.com >
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 12:17:16 +01:00
Evgeny and Evgeny @ SimpleX Chat
634fa5ecff
core: autoincrement database IDs ( #7766 )
...
* core: autoincrement database IDs
* migration
* update simplexmq
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 12:14:19 +01:00
Evgeny and Evgeny @ SimpleX Chat
1cbbe82517
ci: fix mac library build to sign and notarize library ( #7765 )
...
* ci: fix mac library build to sign and notarize library
* script
* sign and notarize to test
* remove test build
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 11:59:43 +01:00
spaced4ndy
7ac7d00025
ci: start the app tests from run tags only on f/ branches ( #7768 )
2026-10-19 10:25:26 +00:00
spaced4ndy
35bc0b66d9
ci: app test workflows save no caches, reuse their builds as artifacts, and run Claude in its own job ( #7767 )
2026-10-19 09:31:38 +00:00
spaced4ndy
0eeac1bb92
docs: normalize badge in-app checkout wireframe
2026-10-19 13:00:31 +04:00
sh
bdc4edc524
nix: build armv7a from master with ghc 8.10.7 ( #7763 )
2026-10-19 09:07:52 +01:00
Evgeny and Evgeny @ SimpleX Chat
924f2b9644
api: fix python code generation ( #7764 )
...
* api: fix python code generation
* fix python types
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 08:32:09 +01:00
Evgeny and Evgeny @ SimpleX Chat
a766d0af0f
ci: package releases with drafts in simplex-chat-libs ( #7754 )
...
* ci: package releases with drafts in simplex-chat-libs
* test release
* core: 7.1.0.12
* packages: release nodejs and python libraries
* fixes
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 07:50:09 +01:00
Evgeny and Evgeny @ SimpleX Chat
0563460204
core, ui: support block markdown ( #7734 )
...
* plan: support block markdown
* update plans
* core, ui: markdown plans and implementation
* better
* simplify
* markdown tests and fixes
* implement
* fixes
* fix test
* bold
* block markdown rendering
* fix selection and rtl
* fixes
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-18 22:44:33 +01:00
Evgeny and Evgeny @ SimpleX Chat
5a5a927821
ci: reduce the number of runners ( #7750 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-18 11:40:08 +01:00
Evgeny and Evgeny @ SimpleX Chat
1d0247b7dd
core: preserve profile peer type when connecting incognito ( #7751 )
...
* core: preserve profile peer type when connecting incognito
* Apply batched suggestions from code review
Co-authored-by: Evgeny <evgeny@poberezkin.com >
* fix
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-18 08:51:33 +01:00
Evgeny and Evgeny @ SimpleX Chat
139ce5f8cc
core: fix profile creation and update in channels ( #7740 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-17 19:49:30 +01:00
Evgeny and Evgeny @ SimpleX Chat
77f9f4a464
core: add peer type "agent" ( #7738 )
...
* add agent peer type
* bot types
* agent app icons
* refactor
* smaller image
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-17 19:23:53 +01:00
Evgeny and Evgeny @ SimpleX Chat
9a90d8e230
ci: cache build artifacts for faster builds ( #7730 )
...
* ci: cache build artifacts for faster builds
* test build
* compression
* fix macos-latest
* debug build
* better caching
* test cache
* update build
* test cache
* ci: check toolchain restore
* ci: remove Windows toolchain cache
* ci: skip tests on macOS Intel
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-17 17:12:08 +01:00
spaced4ndy
a932c8298a
buying a badge in the app ( #7587 )
2026-10-16 18:10:25 +00:00
spaced4ndy
a356512645
Merge branch 'master' into badge-in-app-checkout
2026-10-16 22:07:28 +04:00
spaced4ndy
a1529cd33f
core: update postgres schema
2026-10-16 21:40:13 +04:00
spaced4ndy
5a80713699
ci: test the desktop app on Linux runners on request, with an optional Claude session ( #7736 )
2026-10-16 17:34:43 +00:00
spaced4ndy
7c5b6bb3d7
ci: test the iOS app in the simulator on request, with an optional Claude session ( #7737 )
2026-10-16 17:33:50 +00:00
spaced4ndy
c998eb1fee
ios, android, desktop: use the production badge page
2026-10-16 21:30:55 +04:00
spaced4ndy
898c6f1266
ios, android, desktop: choose a badge on the website
2026-10-16 21:07:45 +04:00
sh
aaa388e570
desktop: add emoji picker ( #7708 )
...
* desktop: add emoji picker data and generator
* desktop: emoji picker in compose field
* desktop: document compose emoji picker
2026-10-16 14:34:04 +01:00
spacedandy-agents-simplex
e3324c6828
Merge branch 'master' into badge-in-app-checkout
...
# Conflicts:
# simplex-chat.cabal
# src/Simplex/Chat/Store/Postgres/Migrations.hs
# src/Simplex/Chat/Store/SQLite/Migrations.hs
# src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt
# src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql
2026-10-16 09:40:53 +00:00
sh
fba65d98ee
nodejs: ignore local libs directory ( #7731 )
2026-10-16 09:01:13 +00:00
Evgeny and Evgeny @ SimpleX Chat
5dfe7c1f0e
website: downloads page ( #7728 )
...
* website: downloads page
* bigger headings
* translations
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-15 22:10:59 +01:00
Evgeny and Evgeny @ SimpleX Chat
41f0c429b3
website: update home page ( #7724 )
...
* website: update home page
* update
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-15 12:50:38 +01:00