Release 2.38.0#20630
Open
alaibe wants to merge 81 commits into
Open
Conversation
Member
Jenkins BuildsClick to see older builds (383)
|
- fix the overall layout, respecting the modal width - fix the pre-selected color (color vs color-string mismatch) - add the modal to Storybook Fixes #19325
- Deleted constants and UI elements related to Polygon zkEVM from wallet_constants.nim, Constants.qml, and Utils.qml. - Removed SVG icons for Polygon zkEVM from the assets directory. - Updated translation files to eliminate references to Polygon zkEVM Explorer in multiple languages.
… are missing For the tokens that are not in any of the list that the app operates with "Unknown token" should be used for the name, and raw value for crypto value instead of the token key.
- add the view to Storybook Fixes #20645
- lower the `portraitBreakpoint` to 640x480, and make the portrait/landscape criteria switch depend on `width` only - let the PrimaryNavSidebar follow the same logic - update TS files Fixes #20318
- when switching to portrait mode
- similar to setting it to `visible`
On Android 15, taking a screenshot and invoking sharing dialog was triggering full-screen mode, not restored when sharing is finished. Closes: #20612
* perf: Async start messenger The startMessenger backend call is a lengthy process, blocking the main thread for a few seconds. Moving it to async tasks gives the main thread the chance advance on the login work until the messenger starts successfully. Perf improvement on my heavy account: Before: 17 sec warm start-up After: 14 sec warm start-up - Added `onMessengerStarted` method to `AccessInterface` to handle messenger start errors. - Implemented `onMessengerStarted` method in `Module` to emit error notifications. - Introduced `SIGNAL_MESSENGER_STARTED` constant for signaling messenger start events. - Created `asyncStartMessengerTask` to manage asynchronous messenger start operations. - Updated `startMessenger` method in `Service` to utilize the new async task and handle responses. * fix: Trim StartMessenger async task output * fix: review coment - remove dead code * perf(qml): Drop the file selectors * fix(webviewLoader): log on error * perf: seed contacts with community members Iterates: #20228 Resolving community members creates a high frequency RPC flood at start-up when the app tries to eagerly resolve every community members. On Android Status community adds around 2 sec in CPU time on warm start-up. The solution implements an enriched community member type and contact type returned from status-go. The app will receive this extra data and seed the contacts cache (instead of creating the contacts cache using 4 separate RPCs for each member/contact). * perf: enhance contact seeding with MemberSeed structure and optimize duplicate handling * feat: Migrate android binder from files to shared memory This commit aligns the client-server communication with standard Android solutions - direct binder calls and shared memory. This is done both for perf reasons (has a big impact on high frequency callse) and security concerns (no unencrypted data is touching the disk). There are two main changes in this commit: 1. Direct communication between client and service when the payload is below 64KB. This is for high frequency and ligh calls (like colorId). The file based communication overhead is just too high for such usage. 2. Shared memory - When the payload is bigger than 64KB we'll use the shared memory * perf: Avoid unnecessary community and chat copies The nim profile trace is dominated with community and chat object copies. There are 3 main types of changes: - using `lent` to borrow a community from the service. It can be used as a return type only - using openarray in favor of seq for proc args, where `lent` cannot be used. - use "communityId" instead of full community where openarray or lent migration would cascade into lots of changes * perf: Optimize community role retrieval in getChatItemFromChatDto * perf: Move `getCachedCurrencyFormats` to threadpool * fix: Fixing merge errors * perf: Granular control qml compilation and loading of main layouts This commit aims to split the qml compilation into smaller chunks and schedule the compilation at the appropriate time. Approach: Each main section lives behind a loader component that has 2 purposes - load the component at appropriate times and defer the qml compilation until the loader is created. The same approach was applied to AppMain.qml and on top of this we'll need to make sure we're loading the AppMain at an appropriate time so that we'll avoid many intermediary states if the nim layer isn't ready for it. For this, I've introduced a new component - QmlCompiler. It has a list of main components and can precompile the qml component or make sure to load it all if needed (e.g while the onboarding runs we can use that time to preload everything) This approach is fully compatible with Loader.asynchronous usage and implementing loading states for the components - the community and chat loaders already implement it partially. Can be extended to preload all the sections in the background while the user is working on the current section. - Added MarketLoader.qml to handle market-related UI loading. - Introduced NodeLoader.qml for loading node-related UI components. - Created PopupsLoader.qml to manage various popups within the application. - Developed ProfileLoader.qml for loading user profile sections. - Implemented WalletLoader.qml to manage wallet-related UI components. - Added QmlCompiler.qml to centralize URL management for QML components. - Updated qmldir to include new loaders for better modularity. - Refactored main.qml to utilize the new AppMainLoader and improve loading logic. * fix: Correct spelling, function args and bindings * chore: bump vendors * fix: home selection doesn't open the proper 1x1 chat There are 2 bugs: property binding override from within the component internals and a signal signature mismatch
- Added a custom exit procedure (https://en.cppreference.com/c/program/_Exit) to bypass libc static destructors on mobile devices, preventing potential race conditions during shutdown - Ensured proper teardown of the threadpool in the StatusFoundation delete method Fixes #20855
* fix(collectibles): add ink, katana to unsupported list fixes #20717
* chore: add dapp fields html injection to storybook * fix(dapps): use the PlainText format for dApp controlled strings fixes #20879
Use the platform popup for the chat input context menu on iOS so paste and selection actions follow native text editing behavior. Avoid toggling readOnly during iOS paste handling, since that dismisses and restores the virtual keyboard. Keep Android using the existing null context menu path. Closes #20588
Use the native iOS context menu for StatusTextField and keep Android on the default behavior.
This commit bumps status-go to include status-im/status-go#7440. As a result the message sending is paused while in the background to stop the high frequency mvds loops that will prevent Android from going into sleep. To preserve message sending while the app is in the background/killed we'll have to wake messenger briefly on the OS intent. We'll resume messenger for 60 seconds - enough to push the message through and then it will be paused again unless the app goes back to foreground. This results in less battery usage and less events piling up in the qt event loop while the app is in the background.
Refresh notification settings wording across desktop and mobile, renaming the settings entry to “Notifications” and updating the enable notifications popup copy for iOS and other platforms. Add clearer privacy messaging for APNs, on-device mobile delivery, and desktop OS notifications. Restore the iOS centralized notification options section and reuse the sound/volume controls across general and iOS notification settings, while keeping platform-specific test notification behavior. Part of #20628
Adds local display state for the mobile push notification banner so it can respect the “Don’t ask me again” choice and avoid reappearing within the same minor version. The banner is now shown only on mobile when private notifications are disabled, the current app minor version is at least 2.38, the user has not opted out, and the banner has not already been shown for that minor version. Patch updates reuse the same stored minor version, so they do not retrigger the banner. Also wires the current app version into the handler and adds the “Don’t ask me again” switch to the popup. Closes #20902
…tion Move exemption search filtering from delegate visibility toggles to a SortFilterProxyModel, so the list only instantiates matching items instead of hiding non-matching delegates. Keep the exemptions list height stable while filtering, capped to the visible settings page height, to avoid the page scroll jumping when the filtered result count shrinks without leaving a long empty scroll area.
Prevent chat message notification types from being added to the ephemeral notifications model shown in AppMain. Message toasts are currently considered too noisy for the in-app experience, so NewMessage, NewMessageWithPersonalMention, and NewMessageWithGlobalMention are skipped until their usefulness is reassessed. Fixes #20877
Fixing multiple deadlocks on instable connectivity and on app restarts. - go-waku deadlocks and peer reconnection storm fixed by logos-messaging/logos-delivery-go#1302. This issue was deadlocking the messenger and any client restart would end-up in the same deadlock. - status-go filters the connection change and propagates only when the state actually changes status-im/status-go#7447. This would trigger a peer reconnection storm with lots tens of changes on app kill/app start. - Handle dns failure at start-up, leaving the clients with no lightpush peer. App should start now with more peers. Send message should work from the start. status-im/status-go#7447 - Make nim's connectionChange no-op on android. The connectionChange is managed by the android service itself since the service is persistent and the client is not. - Add a destruction watchdog for the android activity. If qt's onDestry blocks for more than 3 seconds we'll forcefully kill the app. Otherwise it can deadlock, making app restart impossible.
- use a StatusTextArea as the internal part (renderer) of the StatusTextMessage and make it always enabled (disabling prevents the URLs from being opened) - by using a (Status)TextArea instead of a TextEdit, we can handle the context menu events correctly w/o disabling the edit control Fixes #20894
- on touch screens, the `button` is often `Qt.NoButton` - also fixup opening the image context menus; on touch screens, the Menu.popup() needs a point position to open at the exact point the user (long)pressed Fixes #20897
- Added a global singleton instance for QGuiApplication to manage application lifecycle. - Replaced direct quit calls with singletonInstance.application.quit() for consistent application termination.
1. Adjust 1:1 chat list margins and scrollbar spacing 2. Align community channel list margins and scrollbar spacing 3. Align member list margins and scrollbar spacing - Sets a thinner scrollbar width matching the Activity Center list pattern - Adds left content padding based on the swipe indicator width plus the standard minimum margin - Reserves right padding for the scrollbar and a small gap so delegates do not overlap it - Keeps the chat list geometry driven by `StatusScrollView` padding instead of manual child offsets - Refines chat list spacing to improve visual balance and consistency. Fixes #20593
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DO NOT MERGE