spaced4ndy
d3e2157dca
Merge branch 'master' into f/badge-subscriptions
2026-10-27 12:08:14 +04:00
Evgeny @ SimpleX Chat
91675ec5ab
docs: Swift functions inside types, extensions only where required ( #7901 )
2026-10-27 07:46:01 +00:00
Evgeny @ SimpleX Chat
b72379c640
desktop: ask before replacing a file, do not suggest hidden file names ( #7877 )
...
* desktop: ask before replacing a file, do not suggest hidden file names
* desktop: test the file name suggested by the Save dialog
2026-10-26 20:19:21 +00:00
Evgeny @ SimpleX Chat
c3b709a807
docs: CLAUDE.md importing the contributing and CI guides ( #7871 )
2026-10-26 10:34:31 +00:00
spacedandy-agents-simplex
2d2d3abeda
Merge branch 'master' into f/badge-subscriptions
...
# Conflicts:
# simplex-chat.cabal
# src/Simplex/Chat/Store/Postgres/Migrations.hs
# src/Simplex/Chat/Store/SQLite/Migrations.hs
2026-10-26 07:20:22 +00:00
Evgeny @ SimpleX Chat and Evgeny Poberezkin
7810fc4752
core, ui: terminal chat layout for LLM and service bot chats ( #7811 )
...
* plan: UI improvements to improve LLM usage via SimpleX
* core, ui: types for chat layout
* core, ui: settings for alternative terminal-like chat layout for managing LLMs or other service bots
* plan: message priority
* fixes
* query plan
* update plans
* remove silent messages plan
* rename migrations
* implement layout
* amend
* fix
* fix
* fix
* improve
* time on the right, sender name in blue
* no avatar in direct chats
* better previews
* update, fixes
* update
* time gap
* changes
* ui: terminal layout line heights, gaps and time placement
* ui: simplify terminal meta layout, correct its docs and tests
* ui: right-to-left emoji edge in terminal rows, time placement tests
* android, desktop: raise Kotlin compiler memory to 4 GB
* ui: terminal captions as follow-up text, classic event separators
* ui: terminal media edge and overlay time, plan decisions
* ui: simplify terminal row separation, correct doc line references
* ui: keep the media time inside terminal rows, restore caption conditions
* ui: terminal heading capitals at large font scales, idle live message time
* ui: rename the classic voice-with-text flag, correct the meta copy docs
* ui: smaller terminal layout diff, sender gap and meta names
* ui: terminal row as tall as the media time
* docs: remove the chat layout section from the bots readme
* docs: shorten the terminal layout section of the chat view
* core: address settings API as on master, /auto_accept reads the stored layout
* ui: smaller terminal headings
* ui: classic sender rows and avatar rule as on master
* ui: classic reply quote text colour as on master
* ios: keep the chat layout setting with other UI settings
* ui: go-to button at the end of terminal rows, no gutter in direct chats
* ui: forwarded arrow on the header line of terminal rows, above the time
* ui: forwarded arrow centred above the time line of terminal rows
---------
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2026-10-25 18:03:11 +00:00
Evgeny @ SimpleX Chat
a5cf718b3c
core, tests: fix flaky tests; use simplexmq with one thread per agent worker ( #7812 )
...
* tests: fix group tests
* fix test
* fix
* fix delivery worker fix
* watch ci
* debug
* fix delivery worker not forwarding to moderators during host acceptance
* add script, update simplexmq
* debug lines
* more debug
* rerun
* debug
* fix, debug
* simplexmq
* simplexmq
* fix
* debug: log member-not-found call sites, restore hang diagnostics, use simplexmq fork
* tests: do not prompt for migration confirmation in strict tables test
* ci: run tests with one capability; simplexmq: end inactive sessions without closing under readers
* ci: run tests on all capabilities
* remote: close the HTTP2 client before its TLS connection
* cabal: use warp that kills timed out connection threads without closing their sockets
* remove diagnostics: member-not-found log, thread dump, CI watchdog; update simplexmq
* badge-service: prevent interleaving of concurrent log lines
* tests: wait for badge group broadcasts before closing members
* tests: log contact connected events received twice
* tests: log member connected events received twice
* core: use simplexmq that logs connections emitting CON twice
* core: keep the team contact above notes in a new user's chat list
* ci: skip macOS and Windows builds while hunting a Linux-only flake
* core: use simplexmq that logs the history of connections emitting CON twice
* tests: remove the logging of connected events received twice
* ci: run macOS and Windows builds again
* core: use simplexmq that runs one thread per agent worker
* core: use the merged simplex-chat/wai warp and the updated simplexmq
* core: use the merged simplexmq
* core: update simplexmq
* core, badge service: comment single writes of terminal segments and log lines
2026-10-25 15:37:06 +00:00
Narasimha-sc
d5bab6d9d7
desktop: stop the gsettings theme monitor when the app exits ( #7747 )
...
* desktop: stop the gsettings theme monitor when the app exits
On Linux the theme detector library starts `gsettings monitor` to
follow the system theme and never stops it. The process outlived the
app, one per run, each holding a D-Bus connection until the next
theme change. A shutdown hook now stops it.
* plans: gsettings theme monitor left running after the app exits
* desktop: install the gsettings shutdown hook on Linux only
* plans: correct the Ctrl-C note for the gsettings monitor
* plans: gsettings ignores SIGPIPE; the monitor lives until killed or logout
2026-10-24 22:56:23 +01:00
sh
31c4b68189
ui: don't reconnect calls with peers before v22 ( #7785 )
2026-10-23 10:06:33 +01:00
spaced4ndy
8cdfed8f27
update badge subscriptions docs ( #7802 )
2026-10-23 06:59:32 +00:00
spaced4ndy
3fc72af5e8
badge subscription review fixes ( #7799 )
2026-10-23 06:15:58 +00:00
Narasimha-sc
cfcce1b43c
ui: create one group on a double click of Create group ( #7759 )
...
* desktop: open a pending connection's "Learn more" and "Incognito" pages once
On desktop the connection view stays clickable in the center pane, so each
click on these rows pushed another modal onto the right pane. Close the
right-pane modals first, as ChatView does when the connection opens. The page
is closed and shown again in one event, so its content is keyed by its
ModalData to start fresh.
Desktop only: on Android the view can itself be the open modal of the shared
manager ("Set contact name"), and the new page already covers the row.
Fixes #6270
* ui: open a modal once when its button is double-clicked
A modal slides in over 250 ms, and until it covers the button that opened it the button still takes clicks, so a double click opened two copies (left-pane pages and most stacked center and right-pane pages on desktop, animated modals on Android). When a modal opens, the page it covers draws an empty pointerInput box over itself while it slides out; when a pane's first modal slides in, the empty page sliding out covers the view under the pane. The page sliding in already takes clicks, and nothing is blocked when a page closes.
* ui: add isTopModalOpen, which ignores modals that are sliding out
A modal closed with animation stays in modalViews until it has slid out, and isLastModalOpen counts it. A check-then-closeModal() on it would close the modal under it. Uses the same index as isLastModal; isLastModalOpen and its callers are unchanged.
* desktop: don't open a second badges page or profile form
These buttons stay clickable on desktop while their page is shown in another pane, so each click opened another copy:
- "Support SimpleX" in the chat's large-file and badge alerts (Badges on the right): the alerts skip while Badges is open, on desktop only, as on Android the page covers the button;
- "+ Add profile" in Your chat profiles and "Create chat profile" in the picker (form in the center): skip while the form is on top, keeping what was typed, before asking for authentication; the picker row still hides the picker.
* desktop: replace a page of the same kind on top instead of stacking another
These buttons stay clickable on desktop while their page is shown in another pane, so each click pushed another copy:
- the chat banner's bio "Read more" (right pane);
- a markdown file clicked in a support chat (viewer in the center);
- message "Info" in the main chat while a support or reports chat is open on the right.
Their content depends on what was clicked and the pane can hold other pages (a support chat), so a page of the same kind on top is replaced. The new page is drawn where the old one was, so its content is keyed by its ModalData to start fresh. The markdown file and Info load on a background thread; their close and show now run on the main thread. The markdown check is desktop only, as on Android the viewer covers its file once it has loaded.
* plans: a page opens again on every click of its button (#6270 )
* ui: create one group on a double click of Create group
"Create group" creates the group, opens it and only then closes its
page, and the core does not deduplicate, so a double click created two
groups. The page now ignores a click while its create is in progress,
on desktop and Android.
* plans: a double click on "create group" creates two groups
* plans: D2 is valid at 80 ms only
* ui: ignore a click on Create group until its page has closed after a create
2026-10-22 18:48:32 +01:00
spacedandy-agents-simplex
8017631dec
badge-service: break a tie between issuances by their period, so both databases agree
2026-10-22 17:37:20 +00:00
spacedandy-agents-simplex
814b98bb4d
ios: choose a badge on the site, not in the app
2026-10-22 17:09:40 +00:00
spacedandy-agents-simplex
eb2ed9d078
ios, android, desktop: open the badge page on the site again
2026-10-22 17:07:33 +00:00
spacedandy-agents-simplex
0ac50cd4c3
fixup! docs: describe badge tier changes and restore as the service handles them
2026-10-22 20:39:05 +04:00
spacedandy-agents-simplex
e9f859759d
fixup! docs: describe badge tier changes and restore as the service handles them
2026-10-22 20:39:05 +04:00
spacedandy-agents-simplex
a43a44f2ee
docs: describe badge tier changes and restore as the service handles them
...
The RPC document splits a store tier change by store and direction: the
app never starts one, an App Store raise seen within a day of its charge
is sent as upgradeBadgeSubscription, every other change waits for the
renewal check, and a Play plan change is a new token, a new purchase.
transferBadge and its limits are checked against the handlers, and the
upgrades that are not built are marked so.
The overview admits what Restore discloses: the service links the two
purchase keys, a store receipt moves its subscription to whoever presents
it within the move limit, and a new badge or tier is shown as soon as it
is issued. The Android gap names what remains of Restore.
2026-10-22 20:39:05 +04:00
spaced4ndy
7a93b63385
badge-service: let a restore ask the store without waiting for the purchase's own check
2026-10-22 20:00:25 +04:00
Narasimha-sc
cc3f49f794
android, desktop: fix chat preview and unread counter updating wrong chat ( #7072 )
...
* android, desktop: fix chat preview and unread counter updating wrong chat
While "Chat with admins", a member support chat or the reports view was
open, ChatsContext.addChatItem in the secondary context looked up the
chat's index in its own list but read and wrote the main chat list at
that index (chatsContext.chats[i]), so an unrelated chat in the main
list got the message as its preview and its unread count went up.
Use the context's own list at all four sites again. The main-list
qualifier had also made a pending invitee's sent support messages reach
the group's preview in the main list (at a secondary-list index), so
send that update to the main list explicitly: addSentChatItem passes a
sent item to the main chat list context as well when it is sent from a
secondary view and belongs in the main list (inMainChatList, the same
rule addChatItem uses for previews). Count unread stats only in the
main chat list context, so the revert does not make the open secondary
view count main-list messages in its own list.
* plans: wrong-chat preview and unread fix
2026-10-21 22:36:34 +01:00
Narasimha-sc
87e3f8c3f6
ui: open a page once when its button is clicked again or double-clicked ( #7725 )
...
* desktop: open a pending connection's "Learn more" and "Incognito" pages once
On desktop the connection view stays clickable in the center pane, so each
click on these rows pushed another modal onto the right pane. Close the
right-pane modals first, as ChatView does when the connection opens. The page
is closed and shown again in one event, so its content is keyed by its
ModalData to start fresh.
Desktop only: on Android the view can itself be the open modal of the shared
manager ("Set contact name"), and the new page already covers the row.
Fixes #6270
* ui: open a modal once when its button is double-clicked
A modal slides in over 250 ms, and until it covers the button that opened it the button still takes clicks, so a double click opened two copies (left-pane pages and most stacked center and right-pane pages on desktop, animated modals on Android). When a modal opens, the page it covers draws an empty pointerInput box over itself while it slides out; when a pane's first modal slides in, the empty page sliding out covers the view under the pane. The page sliding in already takes clicks, and nothing is blocked when a page closes.
* ui: add isTopModalOpen, which ignores modals that are sliding out
A modal closed with animation stays in modalViews until it has slid out, and isLastModalOpen counts it. A check-then-closeModal() on it would close the modal under it. Uses the same index as isLastModal; isLastModalOpen and its callers are unchanged.
* desktop: don't open a second badges page or profile form
These buttons stay clickable on desktop while their page is shown in another pane, so each click opened another copy:
- "Support SimpleX" in the chat's large-file and badge alerts (Badges on the right): the alerts skip while Badges is open, on desktop only, as on Android the page covers the button;
- "+ Add profile" in Your chat profiles and "Create chat profile" in the picker (form in the center): skip while the form is on top, keeping what was typed, before asking for authentication; the picker row still hides the picker.
* desktop: replace a page of the same kind on top instead of stacking another
These buttons stay clickable on desktop while their page is shown in another pane, so each click pushed another copy:
- the chat banner's bio "Read more" (right pane);
- a markdown file clicked in a support chat (viewer in the center);
- message "Info" in the main chat while a support or reports chat is open on the right.
Their content depends on what was clicked and the pane can hold other pages (a support chat), so a page of the same kind on top is replaced. The new page is drawn where the old one was, so its content is keyed by its ModalData to start fresh. The markdown file and Info load on a background thread; their close and show now run on the main thread. The markdown check is desktop only, as on Android the viewer covers its file once it has loaded.
* plans: a page opens again on every click of its button (#6270 )
* plans: D2 is valid at 80 ms only
2026-10-21 22:35:29 +01:00
spacedandy-agents-simplex
03cc98f4db
Merge branch 'master' into f/badge-subscriptions
...
# Conflicts:
# apps/ios/SimpleX.xcodeproj/project.pbxproj
# simplex-chat.cabal
# src/Simplex/Chat/Store/SQLite/Migrations.hs
2026-10-21 18:24:09 +00:00
spaced4ndy
1bbbad99cb
core, badge-service, ios, android: change badge tier in the store, and restore a subscription on another device ( #7795 )
2026-10-21 16:53:15 +00:00
Evgeny and Evgeny @ SimpleX Chat
3126d9b544
ios: set default proxy mode ( #7790 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-21 14:35:41 +01:00
spaced4ndy
f8f64a3047
core, ios, android: explain a failed badge renewal and stop retrying a subscription the store forgot; tests ( #7788 )
2026-10-21 07:44:20 +00:00
spaced4ndy
6cef6b9e60
badge-service: name the purchase each request came from in the log
2026-10-20 20:32:04 +04:00
spaced4ndy
696abf13ab
badge-service: name the purchase each request came from in the log
2026-10-20 20:19:01 +04:00
spaced4ndy
b6376b90c7
fix compilation
2026-10-20 19:26:06 +04:00
spaced4ndy
a68eb91da1
badge-service: log each request's command and each store check's outcome
2026-10-20 19:16:36 +04:00
spaced4ndy
3c61a3ced4
badge-service: credit test purchases and check the store during coverage in a dev deployment
2026-10-20 18:50:52 +04:00
SimpleX Chat
fcef2ad008
7.1-beta.7: android 387, desktop 168, ios 363
2026-10-20 12:34:51 +00:00
spacedandy-agents-simplex
038f50ac30
core, ios, android, desktop: let a lapsed iOS subscriber subscribe again to the badge the profile retired
...
The iOS app refused any subscription to an Apple ID that ever subscribed, so a lapsed subscriber could never subscribe again in the app. Core now tells the apps each subscription's store reference (BadgeSubscription.transactionRef, optional in JSON), and the iOS gate opens a subscription card only when every earlier subscription of the Apple ID is the active profile's newest purchase, retired, of the card's badge: the one charge core resumes. Kotlin gets the model field only, as Play gives a resubscription a new token and needs no gate.
Run: 011-subscription-resume, slice S2b
2026-10-20 16:33:12 +04:00
spacedandy-agents-simplex
c0619385e9
fixup! badge-service: let a dev deployment ask its mock store while coverage runs
2026-10-20 15:37:53 +04:00
spacedandy-agents-simplex
e570748206
fixup! badge-service: let a dev deployment ask its mock store while coverage runs
2026-10-20 15:37:53 +04:00
spacedandy-agents-simplex
e116987e5b
badge-service: let a dev deployment ask its mock store while coverage runs
...
[dev] check_store_during_coverage = on makes every issueBadge for a
subscription ask the dev mock, during paid coverage too, and bank the
month of a charge it can grant, issued once coverage reaches it. So a
renewal can be watched by hand without waiting a month, and a mock that
forgot the plan after a restart answers ended at once.
Off by default, and refused unless accept_unverified_store_receipts is
on, which is itself refused beside a real store: a real store has not
started its next charge while coverage runs, and asking spends the
quota every subscriber shares.
Run: 011-subscription-tools, slice S3a
2026-10-20 15:37:53 +04:00
+104
8af38dc33e
ui: translations ( #7782 )
...
* 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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* Translated using Weblate (Russian)
Currently translated at 99.5% (2501 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/
* 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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/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 (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 (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 (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 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 97.6% (2453 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/
* Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 96.4% (2424 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hant/
* 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% (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% (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% (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% (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% (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% (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% (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% (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% (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% (2513 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/
* Translated using Weblate (Dutch)
Currently translated at 81.3% (2044 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/
* Translated using Weblate (Dutch)
Currently translated at 81.3% (2044 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/
* Translated using Weblate (Dutch)
Currently translated at 81.3% (2044 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/
* Translated using Weblate (Dutch)
Currently translated at 81.3% (2044 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/
* Translated using Weblate (Dutch)
Currently translated at 81.3% (2044 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* Translated using Weblate (Japanese)
Currently translated at 48.7% (1224 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/
* 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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (Portuguese (Brazil))
Currently translated at 35.6% (896 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt_BR/
* Translated using Weblate (Croatian)
Currently translated at 1.8% (47 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hr/
* Translated using Weblate (Arabic)
Currently translated at 29.2% (735 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ar/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Ukrainian)
Currently translated at 85.6% (2152 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/
* Translated using Weblate (Lithuanian)
Currently translated at 1.5% (38 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/lt/
* Translated using Weblate (Finnish)
Currently translated at 44.2% (1113 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fi/
* Translated using Weblate (Finnish)
Currently translated at 44.2% (1113 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fi/
* Translated using Weblate (Finnish)
Currently translated at 44.2% (1113 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fi/
* Translated using Weblate (Korean)
Currently translated at 17.5% (441 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ko/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Polish)
Currently translated at 86.2% (2168 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/
* Translated using Weblate (Portuguese)
Currently translated at 6.0% (153 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/
* Translated using Weblate (Greek)
Currently translated at 1.0% (27 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/el/
* Translated using Weblate (Hebrew)
Currently translated at 26.3% (661 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/he/
* Translated using Weblate (Thai)
Currently translated at 42.9% (1079 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/th/
* Translated using Weblate (Thai)
Currently translated at 42.9% (1079 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/th/
* Translated using Weblate (Bengali)
Currently translated at 0.1% (3 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bn/
* Translated using Weblate (Bulgarian)
Currently translated at 61.4% (1544 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/
* Translated using Weblate (Bulgarian)
Currently translated at 61.4% (1544 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/
* Translated using Weblate (Bulgarian)
Currently translated at 61.4% (1544 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* Translated using Weblate (Turkish)
Currently translated at 85.4% (2147 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/
* 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 (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 (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 (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 47.0% (1183 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 47.0% (1183 of 2513 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Bulgarian)
Currently translated at 80.9% (2430 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/
* Translated using Weblate (Russian)
Currently translated at 93.9% (2820 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/
* Translated using Weblate (German)
Currently translated at 96.5% (2898 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
* Translated using Weblate (Lithuanian)
Currently translated at 56.6% (1701 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/
* Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 92.0% (2763 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hant/
* Translated using Weblate (Thai)
Currently translated at 42.2% (1269 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/th/
* Translated using Weblate (Polish)
Currently translated at 82.0% (2463 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/
* Translated using Weblate (Greek)
Currently translated at 81.7% (2454 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/el/
* Translated using Weblate (Croatian)
Currently translated at 48.5% (1457 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hr/
* Translated using Weblate (Czech)
Currently translated at 89.4% (2685 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/
* Translated using Weblate (Portuguese (Brazil))
Currently translated at 96.5% (2898 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
* Translated using Weblate (Hebrew)
Currently translated at 69.1% (2074 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/he/
* Translated using Weblate (Persian)
Currently translated at 81.1% (2434 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/
* Translated using Weblate (Dutch)
Currently translated at 78.0% (2342 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/
* Translated using Weblate (Indonesian)
Currently translated at 88.3% (2650 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/id/
* Translated using Weblate (Bengali)
Currently translated at 1.7% (53 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bn/
* Translated using Weblate (Arabic)
Currently translated at 94.2% (2827 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
* Translated using Weblate (Korean)
Currently translated at 49.5% (1488 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ko/
* Translated using Weblate (Italian)
Currently translated at 96.5% (2898 of 3001 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 96.5% (2898 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
* Translated using Weblate (Finnish)
Currently translated at 47.9% (1438 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fi/
* Translated using Weblate (French)
Currently translated at 96.5% (2898 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/
* Translated using Weblate (Romanian)
Currently translated at 82.0% (2463 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/
* Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 96.5% (2897 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Azerbaijani)
Currently translated at 0.3% (10 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/az/
* Translated using Weblate (Ukrainian)
Currently translated at 86.3% (2590 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/
* Translated using Weblate (Japanese)
Currently translated at 91.1% (2735 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/
* Translated using Weblate (Turkish)
Currently translated at 92.8% (2787 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/
* Translated using Weblate (Spanish)
Currently translated at 96.5% (2898 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
* Translated using Weblate (Portuguese)
Currently translated at 39.3% (1180 of 3001 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt/
* Update translation files
Updated by "Remove blank strings" hook in Weblate.
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/
* ios: remove empty targets, restore az/cs strings
* ios: import and export localizations
* ios: fix broken placeholders in translations
* ios: restore cs draft translations
* ios: fix more broken placeholders and link
---------
Co-authored-by: mlanp <mlanp@users.noreply.hosted.weblate.org >
Co-authored-by: Anonymous <anonymous@users.noreply.hosted.weblate.org >
Co-authored-by: Pixelcode <{pixelcode|git}@pgp.forgoodeyesonly.eu >
Co-authored-by: Evgeny Poberezkin <epoberezkin@users.noreply.hosted.weblate.org >
Co-authored-by: tn <tr4jan@users.noreply.hosted.weblate.org >
Co-authored-by: J. Lavoie <edanas@users.noreply.hosted.weblate.org >
Co-authored-by: J R <jrs@users.noreply.hosted.weblate.org >
Co-authored-by: Sarfaraz Ahmed <sahmed@users.noreply.hosted.weblate.org >
Co-authored-by: sith-on-mars <sith-on-mars@users.noreply.hosted.weblate.org >
Co-authored-by: TheFirstMonster <thefirstmonster@users.noreply.hosted.weblate.org >
Co-authored-by: khalidbelk <khalidbelk@users.noreply.hosted.weblate.org >
Co-authored-by: Near <near8954@users.noreply.hosted.weblate.org >
Co-authored-by: thedmdim <thedmdim@users.noreply.hosted.weblate.org >
Co-authored-by: Hosted Weblate user 107176 <zhuk2@users.noreply.hosted.weblate.org >
Co-authored-by: Artem Vorotnikov <vorot93@users.noreply.hosted.weblate.org >
Co-authored-by: Paul <acornacre@users.noreply.hosted.weblate.org >
Co-authored-by: А О <twofish85@users.noreply.hosted.weblate.org >
Co-authored-by: whoami11 <whoami021992@users.noreply.hosted.weblate.org >
Co-authored-by: Skyward Copied <skywardcopied@users.noreply.hosted.weblate.org >
Co-authored-by: Evgeny <esp@users.noreply.hosted.weblate.org >
Co-authored-by: Игорь Линчевский <insrtnqme@users.noreply.hosted.weblate.org >
Co-authored-by: Name Lastname <simplex-edit0r@users.noreply.hosted.weblate.org >
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com >
Co-authored-by: Mqlx <mqlx@users.noreply.hosted.weblate.org >
Co-authored-by: Ranakan <ranak4n@users.noreply.hosted.weblate.org >
Co-authored-by: Karl Rinneberg <hundertwasser@users.noreply.hosted.weblate.org >
Co-authored-by: indiandoc <indiandoc@users.noreply.hosted.weblate.org >
Co-authored-by: cedev-1 <121963179+cedev-1@users.noreply.github.com >
Co-authored-by: Deleted User <deleted-6980@users.noreply.hosted.weblate.org >
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org >
Co-authored-by: Float <float@users.noreply.hosted.weblate.org >
Co-authored-by: Deleted User <dnstxqet@users.noreply.hosted.weblate.org >
Co-authored-by: BlacAmDK <blacamdk@users.noreply.hosted.weblate.org >
Co-authored-by: re me <jisizhang001@users.noreply.hosted.weblate.org >
Co-authored-by: Aaron H <chieferino@users.noreply.hosted.weblate.org >
Co-authored-by: Loping151 <loping151@users.noreply.hosted.weblate.org >
Co-authored-by: cllih <cllih@users.noreply.hosted.weblate.org >
Co-authored-by: Zhiyounihao <zhiyouni@users.noreply.hosted.weblate.org >
Co-authored-by: M Sarmad Qadeer <msarmadqadeer@users.noreply.hosted.weblate.org >
Co-authored-by: Albert Bob <vicdorke@users.noreply.hosted.weblate.org >
Co-authored-by: 小连招 <onecombo666@users.noreply.hosted.weblate.org >
Co-authored-by: Yay <yay9hbx5otn5@users.noreply.hosted.weblate.org >
Co-authored-by: Frank Yang <frankyang96@users.noreply.hosted.weblate.org >
Co-authored-by: Citrus <citrus@users.noreply.hosted.weblate.org >
Co-authored-by: Ross Li <ross89223@users.noreply.hosted.weblate.org >
Co-authored-by: No name <certainbot@users.noreply.hosted.weblate.org >
Co-authored-by: Luis Morillo Najarro <lsmor@users.noreply.hosted.weblate.org >
Co-authored-by: Darío Hereñú <kant@users.noreply.hosted.weblate.org >
Co-authored-by: Víctor <vzamanillo@users.noreply.hosted.weblate.org >
Co-authored-by: kudebug <kudebug@users.noreply.hosted.weblate.org >
Co-authored-by: Carlos Perez <charlieper@users.noreply.hosted.weblate.org >
Co-authored-by: Isaac ALejandro Lopez <justanormalguy@users.noreply.hosted.weblate.org >
Co-authored-by: gacarel <gacarel@users.noreply.hosted.weblate.org >
Co-authored-by: John m <jvanmanen@users.noreply.hosted.weblate.org >
Co-authored-by: M1K4 <mika-nl@users.noreply.hosted.weblate.org >
Co-authored-by: a4318 <a4318@users.noreply.hosted.weblate.org >
Co-authored-by: Miyu Sakatsuki <miyu-dev@users.noreply.hosted.weblate.org >
Co-authored-by: ikyhtr <ikyhtr@users.noreply.hosted.weblate.org >
Co-authored-by: 小林照幸 <koba-ninkigumi@users.noreply.hosted.weblate.org >
Co-authored-by: proudmuslim-dev <proudmuslim-dev@users.noreply.hosted.weblate.org >
Co-authored-by: Ikko Eltociear Ashimine <eltociear@gmail.com >
Co-authored-by: Rei <rei_@users.noreply.hosted.weblate.org >
Co-authored-by: yokoba0413 <yokoba0413@users.noreply.hosted.weblate.org >
Co-authored-by: ryokky3 <ryokky3@users.noreply.hosted.weblate.org >
Co-authored-by: koreirozzu <koreirozzu@users.noreply.hosted.weblate.org >
Co-authored-by: daydreamer-json <daydreamer-json@users.noreply.hosted.weblate.org >
Co-authored-by: acevif <acevif@users.noreply.hosted.weblate.org >
Co-authored-by: ActiveTK. <webmaster@activetk.jp >
Co-authored-by: Dima Sivan <dimasivan@users.noreply.hosted.weblate.org >
Co-authored-by: zenobit <zenobit@disroot.org >
Co-authored-by: Mehmed <don43@users.noreply.hosted.weblate.org >
Co-authored-by: mslr8 <hosted.weblate.org.poncho089@passmail.net >
Co-authored-by: Pluto <offplutonium@users.noreply.hosted.weblate.org >
Co-authored-by: idk <ciganzelezo@users.noreply.hosted.weblate.org >
Co-authored-by: Nenad <nenadmirkovic00@gmail.com >
Co-authored-by: Magorak Magorov <magorakmagorov@users.noreply.hosted.weblate.org >
Co-authored-by: Maksym Lukashenko <prototypem995@users.noreply.hosted.weblate.org >
Co-authored-by: Max <prototypem95@users.noreply.hosted.weblate.org >
Co-authored-by: ghost <ghosthamster@users.noreply.hosted.weblate.org >
Co-authored-by: rider of the storm <passat-b6-tdi@users.noreply.hosted.weblate.org >
Co-authored-by: Deleted User <mgorpinic2005@gmail.com >
Co-authored-by: Hotripak <hotr1pak@users.noreply.hosted.weblate.org >
Co-authored-by: Groovy394 <groovy394@users.noreply.hosted.weblate.org >
Co-authored-by: aquaticexpectancy <aquaticexpectancy@users.noreply.hosted.weblate.org >
Co-authored-by: Andrii Sudak <andrii-sudak@users.noreply.hosted.weblate.org >
Co-authored-by: sr sr <sr1919os@users.noreply.hosted.weblate.org >
Co-authored-by: petri <petrik@users.noreply.hosted.weblate.org >
Co-authored-by: Jiri Grönroos <artnay@users.noreply.hosted.weblate.org >
Co-authored-by: B.O.S.S <BxOxSxS@protonmail.com >
Co-authored-by: Jester Hodl <jesterhodl@users.noreply.hosted.weblate.org >
Co-authored-by: Kszyche <hostedweblate001user@users.noreply.hosted.weblate.org >
Co-authored-by: Wiesław Fijołek <percival@users.noreply.hosted.weblate.org >
Co-authored-by: Arturro43 <arturro43@users.noreply.hosted.weblate.org >
Co-authored-by: Omikorin <git@omikor.in >
Co-authored-by: Titapa (PunPun) Chaiyakiturajai <titapapunne@users.noreply.hosted.weblate.org >
Co-authored-by: elgratea <flantito@users.noreply.hosted.weblate.org >
Co-authored-by: 109247019824 <109247019824@users.noreply.hosted.weblate.org >
Co-authored-by: Kaanito <kaanito@users.noreply.hosted.weblate.org >
Co-authored-by: Abdullah Koyuncu <wiseweb-works@users.noreply.hosted.weblate.org >
Co-authored-by: goknarbahceli <goknarbahceli@users.noreply.hosted.weblate.org >
Co-authored-by: Dennis <dennnis@users.noreply.hosted.weblate.org >
Co-authored-by: cervezagua <cervezagua@users.noreply.hosted.weblate.org >
Co-authored-by: Deleted User <deleted-65564@users.noreply.hosted.weblate.org >
Co-authored-by: Egehan KAHRAMAN <vastsea0@users.noreply.hosted.weblate.org >
Co-authored-by: Omer <abulomer@users.noreply.hosted.weblate.org >
Co-authored-by: xe1st <xe1st@users.noreply.hosted.weblate.org >
Co-authored-by: echoloji <echoloji@users.noreply.hosted.weblate.org >
Co-authored-by: U.S. <usnetiz@users.noreply.hosted.weblate.org >
Co-authored-by: summoner001 <summoner@disroot.org >
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me >
Co-authored-by: d4f5409d <d4f5409d@users.noreply.hosted.weblate.org >
Co-authored-by: Mireli5656 <mireli5656@users.noreply.hosted.weblate.org >
Co-authored-by: Hosted Weblate <hosted@weblate.org >
2026-10-20 09:27:01 +01:00
spacedandy-agents-simplex
5dc5da61b2
docs: record that a badge subscription cannot be restored or bought again
...
Restoring a subscription on a new device or under another profile fails for two independent reasons, the client's restore reading only unfinished transactions on iOS and the service answering any key but the one it credited receipt_used, and a lapsed iOS subscriber cannot subscribe again on the same install either. Both gaps files record it in their own format, and both restorePurchases() say why reading the store's entitlements alone would not help.
Run: 010-subscription-lifecycle, slice S2c
2026-10-20 03:29:19 +00:00
spacedandy-agents-simplex
55d69781e8
core: retire a subscription badge as soon as its store says it ended
...
A subscription badge retired only on an ended answer to a request that was due, and only once the ledger's paidThrough had passed, so an ended answer while the ledger still covered, or the iOS app's report of StoreKit's expired or revoked state, left the badge shown, Support SimpleX unreachable and every purchase refused until a later request. Now an answered ended state is stored even while coverage runs (the service writes it only from a store check, after which it grants nothing), and every pass retires a subscription whose state, from this pass's answer or else as stored, is ended, whatever the ledger covers. The paidThrough guard stays at the prepaid call site, its only remaining user.
Run: 010-subscription-lifecycle, slice S1
2026-10-20 03:10:59 +00:00
spaced4ndy
2d093d8c0a
ui wip
2026-10-19 20:58:34 +04:00
Evgeny and Evgeny @ SimpleX Chat
ba9269a3ad
desktop: fix race condition when searching for address ( #7776 )
...
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-10-19 17:54:57 +01:00
spaced4ndy
2058daf700
ui
2026-10-19 19:29:21 +04:00
spaced4ndy
a1392e2713
ios: no alert when a badge purchase is cancelled
2026-10-19 18:29:49 +04:00
spaced4ndy
b5b9b664dd
ios, android, desktop: smaller Restore purchases label
2026-10-19 18:23:32 +04:00
spaced4ndy
9e62d09941
ios, android, desktop: show the badge privacy policy in the app
2026-10-19 18:13:09 +04:00
spaced4ndy
e2119cef14
ios, android, desktop: restore purchases on the Support SimpleX screen
2026-10-19 18:08:36 +04:00
spaced4ndy
140db8db88
ios, android: hide Restore purchases on the order screen
2026-10-19 17:57:51 +04:00
spaced4ndy
da39d8923a
update ios lib
2026-10-19 16:53:47 +04: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
spacedandy-agents-simplex
a2e9456e6d
ios, android, desktop: use the dev badge page for testing (don't merge)
2026-10-19 11:19:14 +00:00
spacedandy-agents-simplex
ea359edb66
ios, android, desktop: choose a badge in the app
2026-10-19 11:18:25 +00:00