The French section had a heading and a list but no way to reach the team,
and the Czech readme had no such section at all. Both now also say that
questions are answered by hand, as the main and the Polish readme do.
The address is embedded in the translatable string
simplex-unique-overlay-card-4-p-3, which renders the "get in touch" link
on every locale of the home page.
Two locale copies of that link were broken as well: the Hebrew URL had an
embedded space and a mangled payload, and the Czech anchor had an
unterminated target attribute, which swallowed the link text on render.
The Czech contents entries for the user groups, developers and donations
sections, the first of which was also still in English, and the Polish
link to the team section pointed at the English anchors. The other dead
anchors in these files are left alone.
The issue template link was malformed - two URLs concatenated into one
href - and used the old team address. It now uses the current address and
says that it is the team address, instead of calling it the official
group.
The F-Droid listing description used an older #SimpleX users group link.
Neither file had it. It goes in the user groups section, with the list of
what the group is for, as in the main and the Polish readme, and in the
developers section, as in the main readme.
The address replaced in the main readme by da02bae85 was still used in the
Polish readme, docs/ABOUT.md, the app settings guide and the /connect-team
redirect.
- remove the language groups block (#SimpleX-DE/ES/FR/RU/IT): it was
removed from the main readme in #6293, in favour of SimpleX Directory.
Its links were last updated in #6153, and are not in the tree any more
- add the SimpleX Directory paragraph that replaced it to the Czech and
French readmes, and point the Polish readme to SimpleX Directory too,
instead of the old directory service contact link
- the sentences about how to join referred to the removed list; they now
refer to these and other groups, as the main readme does
* ios, android, desktop: do not add loaded items of another chat to the opened chat
apiLoadMessages could apply a loaded page to a chat it was not loaded for,
mixing messages of two chats in one list:
- the chat id was not checked at all for .last pagination, and the loading
coroutine is not cancelled when the chat is closed (PreloadItems wraps it
into NonCancellable, apiFindMessages runs in a scope of its own), so a .last
page loaded for the previously opened chat was appended to the items of the
chat opened while it was loading;
- for the other paginations the chat id was checked before the items were
loaded, but they are applied on the main thread after a dispatch, so the chat
could be switched in between.
Check the chat id (and the remote host id in kotlin) right before the items are
applied, in every pagination except .initial and opening around item that set
chat id themselves. Empty chatItems remain allowed for .last that is used for
searching.
* android, desktop: test that loaded items of another chat are not added to the opened chat
Reproduces the bug deterministically, without depending on the timing of the
race: processLoadedChat is called with a page loaded for another chat while the
opened chat has its own items.
Without the fix the items of the two chats end up in one list:
lastPageLoadedForAnotherChatIsNotAddedToOpenedChat
expected:<[101, 102]> but was:<[101, 102, 201, 202]>
beforePageLoadedForAnotherChatIsNotAddedToOpenedChat
expected:<[101, 102]> but was:<[201, 202, 101, 102]>
aroundPageLoadedForAnotherChatIsNotAddedToOpenedChat
expected:<[101, 102]> but was:<[101, 102, 201, 202]>
* Translated using Weblate (French)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fr/
* Translated using Weblate (Italian)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/es/
* Translated using Weblate (French)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fr/
* Translated using Weblate (Italian)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/es/
* Added translation using Weblate (Azerbaijani)
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (379 of 379 strings)
Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/hu/
* website: fix translation review findings (fr, es, it, hu)
Adversarial review of the translations on this branch.
Blocking corrections:
- fr tap-the-connect-button-in-the-app named a button that does not exist.
The French app label is "Se connecter" (MR/fr/strings.xml connect_button);
the branch had dropped "se".
- it index-token-p2-cf rendered "equity crowdfunding" as "raccolta fondi",
the Italian term for a charitable fundraiser, on a string describing a
securities offering. It also contradicted its own neighbour
index-token-cta-cf ("Investi in SimpleX Chat").
- es index-hero-invest used an infinitive where the hero is otherwise
tu-imperative, and index-hero-invest-cta turned "learn more on Wefunder"
into "learn more about Wefunder".
- hu more-info moved to "tudnivalok" while its show/hide partner hide-info
still said "informacio"; both labels belong to one button, so hide-info
is realigned.
French quality:
- "ratchet steps" had become "chaine de cles" (keychain). Every other locale
keeps "ratchet", as does the sibling string in the same table.
- Five Wikipedia links had been de-localised to en.wikipedia.org while
simplex-network-overlay-card-1-p-1 still pointed at fr.wikipedia.org.
Restored the French targets (es and it localise these too) along with the
French release title of The Mauritanian.
- "each node is discoverable" had become "identifiable", contradicting the
same sentence's "ne permet pas de decouvrir les serveurs".
- "relais de messagerie" reads as an SMTP mail relay; docs-dropdown-16 now
says "relais de chat" and matches the nominal pattern of docs-dropdown-4/5.
- Realigned terminology against untouched strings: base de donnees des chats,
chatbot, files d'attente, code QR, annuaire, and the infinitive used in the
comparison table.
- Removed a dangling feminine pronoun in the-instructions--source-code.
- Unified apostrophes, em dashes and non-breaking spaces across the 92 strings
this branch touches.
No keys added or removed; all four files stay complete against en.json.
Not addressed here, pre-existing and not introduced by this branch: fr
hero-overlay-card-3-p-3 has lost its "Read more" anchor, hu
hero-overlay-card-3-p-3 describes the July 2024 Trail of Bits review as a
repeat audit of cryptographic and networking components rather than a review
of cryptographic design, and es docs-dropdown-4/5 read as noun phrases rather
than "Host an SMP/XFTP server".
---------
Co-authored-by: Ranakan <ranakan.dev@protonmail.ch>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: No name <usir.alerts@onionmail.org>
Co-authored-by: Evgeny Poberezkin <e.poberezkin@me.com>
Co-authored-by: summoner001 <summoner@disroot.org>
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com>
* desktop: fix rotated video squashed on playback and preview rotated twice
vlc applies the display matrix before a frame reaches the vmem callback, so the
buffer has to be requested with the sides swapped for the transposed orientations,
and the snapshot must not be rotated again by hand. Read the snapshot on the event
thread, where the render callback writes it, and draw the inline playback surface
with FillWidth so a video narrower than the item fills it like its preview does.
Bound the requested buffer: the size comes from a received file, so it is capped by
area, cannot be zero, and a frame that does not fill the bitmap is dropped.
* desktop: harden the video frame path against crafted files
Only transpose the buffer for the track's own sides - the size libvlc passes is
already rotated, so swapping it would recreate the squash for a file declaring a
rotation with a zero-sized track. Copy the frame inside the render callback, on
vlc's thread, where the native buffer is guaranteed to exist, and hand only the
copy to the event thread. Drop a frame rendered with a format the bitmap was not
sized by, or arriving before any buffer was allocated. Divide the pixel budget by
a side pinned at 1 instead of scaling both sides, so a 2000000000x1 declaration
cannot take 45 times the budget. Publish the bitmap only when skia took the
pixels, size the copy after a rewind, and log a failed snapshot conversion
instead of throwing it into callers that have no handler for it.
* ui: show role (if exists) and remove "new" in open channel/group alerts
* restore removed strings
* info color
* docs
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>