Alain Brenzikofer
16c018a01e
short goal iterations
2026-09-24 16:49:57 +02:00
Alain Brenzikofer
7d71a58666
Merge remote-tracking branch 'origin/master' into ab/names-lookup-api
2026-09-24 15:36:32 +02:00
Alain Brenzikofer
a8235b9440
fixes EP review
2026-09-24 11:28:38 +02:00
Alain Brenzikofer
0a245c67cb
opuse 5.5 /goal iterations
2026-09-24 09:37:13 +02:00
Evgeny and Evgeny @ SimpleX Chat
9a9ce70b2f
core: fix connecting via prepared connection with contact card ( #7575 )
...
* core: fix connecting via prepared connection with contact card
* simplify
* merge transactions
* update query plans
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-24 08:11:29 +01:00
Alain Brenzikofer
ab61d51afd
review iterations
2026-09-24 09:09:50 +02:00
Alain Brenzikofer
d9d6acd97f
fix review comments
2026-09-24 08:48:29 +02:00
Alain Brenzikofer
75b59f4dec
Merge remote-tracking branch 'origin/master' into ab/names-lookup-api
2026-09-23 19:39:09 +02:00
Alain Brenzikofer
0dd4cea07c
shrink diff
2026-09-23 18:45:48 +02:00
Alain Brenzikofer
763048ac24
fix
2026-09-23 15:48:18 +02:00
Alain Brenzikofer
3df14c142d
implement UI
2026-09-23 12:50:11 +02:00
spaced4ndy
0b9ae4d6de
ui: open support SimpleX screen from badge and file alerts ( #7563 )
2026-09-23 09:34:47 +00:00
spaced4ndy
fae017d5b3
ui: show close button on badges banner only after it was opened ( #7560 )
2026-09-22 13:40:56 +00:00
spaced4ndy
150897d637
core, ui: alert the user when badge renewal is failing ( #7532 )
2026-09-22 12:55:08 +00:00
spaced4ndy
a3ac420e91
ui: one banner at a time in chat list ( #7554 )
2026-09-21 16:51:14 +00:00
spaced4ndy
9a583d394f
Merge branch 'stable'
2026-09-21 20:33:31 +04:00
spaced4ndy
fd16048598
ui: replace wefunder logo with simplex logo on crowdfunding banner ( #7555 )
2026-09-21 16:28:58 +00:00
spaced4ndy
45d674c067
Merge branch 'stable'
2026-09-21 18:17:36 +04:00
spaced4ndy
7e24ecb982
ui: add wefunder logo to crowdfunding banner ( #7553 )
2026-09-21 14:16:38 +00:00
spaced4ndy
f68bccecfb
Merge branch 'stable'
2026-09-21 17:31:29 +04:00
spaced4ndy
c8c05359b5
ui: crowdfunding banner on onboarding and in chat list ( #7552 )
2026-09-21 12:01:57 +00:00
Evgeny and Evgeny @ SimpleX Chat
0183a36058
ui: update text about badges ( #7544 )
...
* ui: update text about badges
* update
* update
* update
* update
* update
* update
* update kotlin
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-19 14:16:39 +01:00
Evgeny Poberezkin
25c5b3cdfd
Merge branch 'stable'
2026-09-19 12:21:53 +01:00
Narasimha-sc and Evgeny Poberezkin
ecb9d87157
android, desktop: fix Submit button not visible in passcode view in split screen ( #7497 )
...
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com >
2026-09-19 10:13:52 +01:00
Narasimha-sc
463761cc8e
ui: use backward compatible Java api in stripFormattedTextLink ( #7464 )
2026-09-19 08:31:52 +01:00
Narasimha-sc
6f85f1d4f0
android, desktop: offer key verification when member profile is opened from chat ( #7486 )
...
In channels members are usually connected via relays, so they are memberCurrent
but not memberActive, and #7255 widened the condition for requesting the member
security code to cover them. It updated GroupChatInfoView and
MemberSupportChatView, but not the same code in ChatView, so "Verify security
code" is not offered when the profile is opened by tapping member avatar in the
chat, while it is offered for the same member in the members list.
2026-09-19 08:13:05 +01:00
spaced4ndy
c7b3e362ec
core, ui: badge credential details in developer tools ( #7527 )
2026-09-17 16:18:04 +00:00
spaced4ndy
746d33ff6d
multiplatform: remove unused strings ( #7529 )
2026-09-17 15:12:14 +00:00
spaced4ndy
dd5c47d02d
ui: "how it works" link and card styling on badge screen ( #7524 )
2026-09-16 15:13:01 +00:00
spaced4ndy
c52044f3c3
ui: show progress spinner on redeeming code ( #7523 )
2026-09-16 14:43:28 +00:00
spaced4ndy
f38c7e0f2b
core, ui: badge redeem errors and fixes ( #7515 )
...
- redeem errors are typed (CEBadgeRedeemError) instead of matched by text in the apps
- service timeout (A_SERVICE) decodes in the apps and offers Retry via the existing retry alert
- unexpected redeem errors show the error itself instead of a generic message
- service error codes are a typed enum in the apps (BadgeServiceErrorCode)
- CRBadgeRedeemed returns badge state, so the apps skip a second round-trip after redeem
- setBadgeAlertAcked is scoped to user_id
- badgeChanged updates non-active profiles, so other profiles' badges don't go stale
- pitch banner is not shown to a profile that already has a badge
- one badgeTypeName per platform, used by the badge screen and the badge info alert
- BadgeAlertKind and BadgeAlertPrice decode via standard JSON, no custom decoders
- dead "Support ended" title branch removed from Your Badge view
- kotlin: users from badge responses carry remoteHostId
- kotlin: redeem code field keeps the IME's cursor and composition state
- kotlin: "Get your code" shown in all flavours
- kotlin: "Don't show again" -> "Dismiss", matching iOS
- kotlin: parseBadgeCode moved next to its FFI in platform/Core.kt
- kotlin: BadgesView no longer cross-fades on badge state updates
- kotlin: section title not uppercased
- ios: redeem code field parses once per change
- ios: A_SERVICE rejected reason is not decoded
- CLI: "cannot redeem badge code: ..." with the source of the error
- comments clarified
2026-09-16 14:15:11 +00:00
spaced4ndy
b0a7219db2
android: show "Get your code" button in all app flavours ( #7514 )
2026-09-15 15:32:10 +00:00
spaced4ndy
6a7eae2751
ui: redeem code ( #7482 )
2026-09-15 14:23:13 +00:00
spaced4ndy
bac8d187ba
Merge branch 'master' into badges
2026-09-14 17:13:58 +04:00
Evgeny and Evgeny @ SimpleX Chat
5ffbe733a8
core: attach badge proofs to files over size limit ( #7455 )
...
* core: attach badge proofs to files over size limit
* types
* more types
* implement file badge proofs
* tests
* move file limits to config, add tests
* more tests, work correctly in "send as group" case
* fix races in tests
* group badge tests
* query plans
* add history support, fixes
* simplify
* refactor
* refactor
* type
* restructure schema for proofs
* rename, refactor
* refactor
* fix, refactor
* refactor
* ui
* comments
* alerts
* update nix, ios library
* updare sharing
* update simplexmq
* update text
* improve messages
* api types
* postgres schema
* fix
* test
* query plans
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-12 14:33:52 +01:00
spaced4ndy
db4b73962d
Merge branch 'master' into badges
2026-09-10 13:23:28 +04:00
Narasimha-sc
6e3c668fb9
ios, android, desktop: do not add loaded items of another chat to the opened chat ( #7450 )
...
* 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]>
2026-09-05 15:28:00 +01:00
spaced4ndy
c623f4284c
Merge branch 'master' into badges
2026-09-02 13:53:35 +04:00
+6
dacbcb00e5
ui: translations ( #7446 )
...
* Translated using Weblate (Italian)
Currently translated at 100.0% (2904 of 2904 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% (2501 of 2501 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% (2903 of 2904 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 100.0% (2904 of 2904 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/
* Translated using Weblate (Slovak)
Currently translated at 29.6% (862 of 2904 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* Translated using Weblate (German)
Currently translated at 100.0% (2904 of 2904 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% (2501 of 2501 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 93.5% (2717 of 2904 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/
* Translated using Weblate (Arabic)
Currently translated at 100.0% (2904 of 2904 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2904 of 2904 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
* Translated using Weblate (Slovak)
Currently translated at 31.6% (918 of 2904 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* Translated using Weblate (German)
Currently translated at 100.0% (2905 of 2905 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2905 of 2905 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 99.9% (2904 of 2905 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Slovak)
Currently translated at 31.7% (921 of 2905 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* 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/
* Translated using Weblate (Spanish)
Currently translated at 100.0% (2905 of 2905 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/
* Translated using Weblate (Slovak)
Currently translated at 33.0% (960 of 2905 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* 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/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2905 of 2905 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/
* Translated using Weblate (French)
Currently translated at 97.0% (2827 of 2912 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/
* Translated using Weblate (Arabic)
Currently translated at 100.0% (2912 of 2912 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/
* Translated using Weblate (Slovak)
Currently translated at 34.4% (1003 of 2912 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* Translated using Weblate (French)
Currently translated at 100.0% (2912 of 2912 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/
* Translated using Weblate (Czech)
Currently translated at 93.4% (2722 of 2912 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2912 of 2912 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
* Translated using Weblate (Slovak)
Currently translated at 36.1% (1053 of 2912 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* 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/
* Translated using Weblate (Italian)
Currently translated at 100.0% (2917 of 2917 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 99.9% (2916 of 2917 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/
* Translated using Weblate (Slovak)
Currently translated at 36.6% (1068 of 2917 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* 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/
* Added translation using Weblate (Azerbaijani)
* Added translation using Weblate (Azerbaijani)
* Translated using Weblate (German)
Currently translated at 100.0% (2917 of 2917 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 100.0% (2917 of 2917 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 100.0% (2917 of 2917 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/
* Translated using Weblate (Hungarian)
Currently translated at 100.0% (2917 of 2917 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% (2501 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/
* Translated using Weblate (Slovak)
Currently translated at 37.4% (1091 of 2917 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 31.5% (789 of 2501 strings)
Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/az/
* Translated using Weblate (Slovak)
Currently translated at 37.5% (1094 of 2917 strings)
Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/sk/
* ui: process translations
* ui: fix translation errors found in review (de, es, fr, hu)
de: "you removed %1$s" was translated as an agentless passive
("%1$s wurde aus der Gruppe entfernt"), so your own removal of a member
rendered identically to a removal by someone else. The UI prepends the
member name only for rcv group events, so snd events must name the actor
themselves, as every other snd_group_event_* string does
("Sie haben %s blockiert", "Sie haben dieses Mitglied angenommen").
fr: "Unblock members for all?" was translated as "Débloquer tous les
membres ?" ("unblock ALL members"), dropping the for-all moderation scope
and mis-stating the target set. Aligned with its sibling
block_members_for_all_question ("Bloquer ces membres pour tous ?").
fr: member_info_status was left untranslated as "Status"; the file uses
"Statut" for the other InfoRow status labels.
fr: restore_passphrase_can_not_be_read_desc called the Keystore
"coffre-fort" while its near-identical sibling
restore_passphrase_can_not_be_read_enter_manually_desc called it
"Keystore".
es: "registar" -> "registrar".
hu: "[kapcsolattal] (https://...)" had a space between ] and (, so the
transport-isolation link did not render as a markdown link on iOS.
---------
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: Martin Kozempel <rado2012mir@gmail.com >
Co-authored-by: mlanp <github@lang.xyz >
Co-authored-by: Ranakan <ranakan.dev@protonmail.ch >
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org >
Co-authored-by: summoner001 <summoner@disroot.org >
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: No name <usir.alerts@onionmail.org >
Co-authored-by: Pablo <pyg@duck.com >
Co-authored-by: Evgeny Poberezkin <e.poberezkin@me.com >
Co-authored-by: Weblate <noreply@weblate.org >
Co-authored-by: Mireli5656 <miraliseyidli5656@gmail.com >
Co-authored-by: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com >
2026-09-02 10:26:52 +01:00
Evgeny and Evgeny @ SimpleX Chat
735662902f
core, ui: make badge expiration non-optional ( #7445 )
...
* core, ui: make badge expiration non-optional
* update
* update bot types
* fix to use non-optional badge expiry
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-02 08:14:09 +01:00
Evgeny and Evgeny @ SimpleX Chat
f99c474ca6
core: send badge ZK-proofs to XFTP servers, add file expiry time ( #7430 )
...
* core: send badge ZK-proofs to XFTP servers
* update simplexmq, use keys and header from simplexmq
* core: add file expiry time
* refactor
* remove posix module
* rename migrations
* bot api
* update UI
* import
* show item from loaded information
* ios: update core library
* text
* send entitlements in handshake
* simplexmq
* query plans
* update simplexmq
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-09-01 23:16:15 +01:00
Evgeny Poberezkin
ed2cf1d98f
Merge branch 'master' into badges
2026-08-29 19:14:04 +01:00
Evgeny Poberezkin
070cb366b0
Merge branch 'stable'
2026-08-29 19:13:15 +01:00
Evgeny Poberezkin
2961fecc35
ui: update strings
2026-08-29 19:12:40 +01:00
Evgeny Poberezkin
498d7da837
Merge branch 'stable'
2026-08-29 18:59:49 +01:00
Evgeny and Evgeny @ SimpleX Chat
d1c6a5717a
ui: show countdown until SimpleX domains sale launch ( #7434 )
...
* ui: show countdown until SimpleX domains sale launch
* list
* ios: update
* update kotlin, ios countdown
* kotlin countdown
* fix formats
* padding
* update
---------
Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com >
2026-08-29 18:59:12 +01:00
Evgeny Poberezkin
9c77703017
Merge branch 'master' into badges
2026-08-28 19:37:10 +01:00
spaced4ndy
e80a174f13
core: badge codes schema, plan ( #7427 )
2026-08-28 09:31:24 +00:00
Narasimha-sc
d7e0f85976
desktop: fix rotated video squashed on playback and preview rotated twice ( #7413 )
...
* 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.
2026-08-27 11:08:05 +01:00
Evgeny Poberezkin
78332d0c73
Merge branch 'master' into badges
2026-08-27 07:59:57 +01:00