Commit Graph
95 Commits
Author SHA1 Message Date
Sale Djenic 99c95234d9 fix: turning off lto (Link-Time Optimization) flag for iOS builds
On iOS, Nim builds --app:staticlib, so the .a ships bitcode, and the actual LTO + codegen happens at Xcode's final link.
ThinLTO is aggressive about cross-module optimization, and it occasionally miscompiles code with subtle semantics.
The exact pattern that's failing — Nim's ORC move/destructor handling around std/json's ref-based JsonNode built
via %* (a newJObject() followed by a run of OrderedTable inserts) — is a classic place for an over-eager optimizer to
wrongly drop the populated temporary or elide the inserts, yielding an empty {}.
2026-07-22 08:45:27 +02:00
Alex Jbanca 4be5bf6af6 chore: Fix monitoring and profiling targets 2026-07-07 10:44:53 +03:00
Alex Jbanca d3b8917a04 chore: Drop DOtherSide
+ Move monitoring to statusq
2026-07-07 10:44:53 +03:00
Andrey Bocharnikov 3287aee57e chore(mobile): enable LTO for nim status client build 2026-07-03 15:33:46 +04:00
Alex Jbanca af309cddcd fix: clean-up 2026-06-29 21:41:48 +03:00
Alex Jbanca 466236f948 fix: prl-to-pc via nimble 2026-06-29 21:41:48 +03:00
Alex Jbanca 736f2de125 feat(seaqt): Enable mobile builds and hopefully windows 2026-06-29 21:41:48 +03:00
Sale Djenic 3bd3c4b7a1 refactor(new-keycard-approach): remove status-keycard-go submodule and update references to reference to status-keycard-qt library
- Deleted the status-keycard-go submodule from .gitmodules and Makefile.
- Updated config.nims to reference STATUSKEYCARD_QT_LIBDIR instead of STATUSKEYCARDGO_LIBDIR.
- Adjusted build scripts and feature flags to remove dependencies on status-keycard-go.
- The code aligned.
2026-06-22 13:48:45 +02:00
Alex Jbanca 9f06b8d243 fix: Align min ios version with Qt6.11 2026-06-16 14:22:16 -04:00
Igor SirotinandClaude Opus 4.8 fc2da31b90 chore: remove Node Management page (#21177)
* chore: remove Node Management page

Remove the experimental Node Management section end-to-end: the QML page
and section loader, sidebar/section wiring, the node_section backend
module, the now-dead status-go shim procs, the page-only Stats and
ChroniclesLogs signal plumbing, and the Profile > Advanced toggle.

Network-connectivity detection is preserved by relocating the peer ->
connected bridge from the deleted node section into node_service.init.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: update-translations

* test: drop Node Management refs from storybook

Remove the now-dangling nodeEnabled property usage and the node section
fixtures left behind in storybook after the PrimaryNavSidebarAdaptor lost
its nodeEnabled property: the tst_PrimaryNavSidebar test/page bindings and
the Node entry in the mock SectionsModel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 11:35:13 +01:00
Siddarth Kumar 6e232c10d0 ios: upgrade to SDK 26 2026-05-06 08:53:30 +05:30
Alex Jbanca beb8fefc2d feat(Mobile Profiling): add mobile profiling support and related scripts 2026-05-04 16:21:48 +03:00
Alex Jbanca 7c80103d36 fix: android deadlock when spawning app foreground/background cycles (#20519) 2026-04-23 13:31:18 +02:00
Sale Djenic 74c9a24e39 fix: ci ios build failing
The issue only manifests when:

The mobile Makefile exports CC=clangWrap.sh (via EnvVariables.mk)
clangWrap.sh has the echo to stdout
Go's linker discovers ar via CombinedOutput() which captures both stdout and stderr
When invoked through the mobile Makefile, CC=clangWrap.sh leaks into the Go build's environment (despite the shell-level CC="$(xcrun ...)" override in the status-go recipe). Go's linker then runs clangWrap.sh --print-prog-name ar, and the echo output to stdout gets combined with clang's actual output, corrupting the ar path.

Removing the echo fixed the issue.
2026-04-20 07:58:59 +02:00
Siddarth Kumar 33cf795c11 scripts: version.sh should be referred in case of mobile 2026-04-13 20:37:02 +05:30
Alex Jbanca db4b5c5a46 feat(ios): wire-up push notifications (#20344)
* feat(ios): wire-up push notifications

- wire push notifications endpoints with qml access
- split NotificationsView.qml into 2 different components. The general component preserving the current behavior and a reduced functionality for centralized push notifications (similar to the Status legacy)
- wire bundle id from EnvVariables.mk to the push notifications status-go calls. We need the bundle id as topic.
- Tweak the Push permissions request flow to account for platform specifics

* fix: mobile-run doesn't work for all targets
2026-04-06 14:19:22 +03:00
Alex Jbanca 8b57fabf01 chore(android): Compile 16kb page size against qt 6.11
- update linker flags
- update imports for mobile WebViewAdapter
- explicit cmake find for qt code private
2026-03-26 09:08:57 +02:00
Alex Jbanca 0006524e51 fix: Small updates on status-go as a service flows
- remove `androidMinimizeToBackground` as it's not used anymore
- status-go client and server use configurable compilation flags based on `DEBUG` flag
- remove verbose logging in StatusGoService.java
2026-03-20 09:22:26 +02:00
Alex Jbanca 4fdcf9ec1d feat(android): status-go as a service
Add an option to run status-go as a service on android using Androdi Binder as a transport.

See ADR for more details docs/adr/0001-android-status-go-as-a-service.md
2026-03-20 09:22:26 +02:00
Andrey Bocharnikov 8950aaf02a feat(browser): mobile webview (#20178)
* fix(browser): fix pr comments

* fix(browser): fix offset between navigation and webview

* fix(browser): split logic into contexts

* dialogs
* favorites
* webview

* fix(browser): crash when webview tries to render and destroy at the same time

* fix(browser): opened dialogs counter

* fix(browser):  load platform-specific webview

* fix(wc): unused wc files

* fix(browser): separate dapps and websocket logic

* fix(browser): fix pr comments

* fix(browser): fix popup tracker

* fix(browser): fix pr

* fix(browser): fix PR

* fix(browser): fix PR
2026-03-17 22:32:58 +04:00
Andrey Bocharnikov 33fe931c4d feat(browser): integrate mobilewebview repo (#20179)
* feat(Browser): AbstractWebView + webengine component

* Added capabilities

fixes #19420

* feat(mobile-browser): profile manager

* feat(mobile-browser): make a single overlay for Downloads/EmptyPage views

* fix(browser): integrate mobilewebview repo

* fix(browser): fix pr comments

* fix(browser): fix pr comments

* chore: bump status go

* chore: disable mobile browser
2026-03-17 15:27:19 +04:00
Siddarth Kumar 7afb60d1b9 init: fdroid setup
- `mobile/Makefile` -> Added `apk-fdroid` build target, used by
`fdroid/build-app.sh`. F-Droid requires an unsigned APK without Google
Play services.

  - `mobile/android/qt6/build.gradle` -> Added F-Droid gradle build
flavor, used during `apk-fdroid` target. Separates F-Droid builds from
Play Store builds and no signing configuration since it's supposed to be
unsigned.

  - `mobile/scripts/buildApp.sh` -> Updated to copy F-Droid APK instead
of usual locations from Jenkins build.

  - `mobile/scripts/buildOpenSSL.sh` -> Moved from iOS dir, shared
between iOS and F-Droid builds. Reusing the OpenSSL build logic that was
previously iOS-only but is now needed for F-Droid's from-source
requirement.

  - `mobile/scripts/Common.mk` -> Updated path to `buildOpenSSL.sh`
which is no longer inside iOS dir.

  - `mobile/scripts/openssl-patch.diff` -> Moved from iOS dir, applied
by `buildOpenSSL.sh`, so that the patch is co-located with the script
that uses it.

  - `ci/Jenkinsfile.fdroid` -> Had to make a new pipeline script because
integrating this into `ci/Jenkinsfile.android` was causing issues with
the generated `AppImage` and steps had to be fully sequential, so I
figured it's good to separate them out.

  - `fdroid/entrypoint-fdroid.sh` -> Docker entrypoint, used by
`fdroid/Dockerfile`. Sets up the container user/permissions before the
F-Droid build starts.

  - `fdroid/Dockerfile` -> A minimalistic Docker image for the F-Droid
Jenkins build environment, used by `ci/Jenkinsfile.fdroid`. I didn't add
to existing Qt Android `Dockerfile` because this one only needs a
minimal environment with Docker-in-Docker to run the `fdroidserver` VM.

  - `fdroid/build-app.sh` -> Called by `fdroiddata` metadata build step.
Sets up Qt and Android NDK environment, detects `JAVA_HOME`, configures
`Go`/`Nim` env vars, and runs the `make` targets for the F-Droid APK.

  - `fdroid/build-openssl.sh` -> F-Droid requires OpenSSL to be built
from source rather than using prebuilt binaries.

  - `fdroid/build-qt-android.sh` -> F-Droid requires Qt to be built from
source; this handles the Android cross-compilation.

  - `fdroid/build-qt-host.sh` -> Qt's cross-compilation requires host
tools (`moc`, `rcc`, etc.) to be built first.

  - `fdroid/cleanup-binaries.sh` -> Removes binaries flagged by `fdroid`
scanner, called by `fdroiddata` metadata `prebuild` step. F-Droid's
scanner rejects repos containing prebuilt binaries in test/vendor
directories.

  - `fdroid/cleanup-fdroiddata.sh` -> Removes stale `fdroiddata` clones,
called by `ci/Jenkinsfile.fdroid`. Prevents disk space issues from
accumulating `fdroiddata` clones across builds.

  - `fdroid/fdroid-container-build.sh` -> Runs `fdroid build` inside
Docker container, called by `scripts/fdroid-local-build.sh`. Isolates
the build in a container to match F-Droid's official build environment.

  - `scripts/fdroid-local-build.sh` -> A handy script to build F-Droid
locally, also called by `ci/Jenkinsfile.fdroid`. Manages the full
lifecycle of cloning `fdroiddata`, launching the `fdroidserver`, and
extracting the output APK.

  - `fdroid/generate-keystore.sh` -> Generates a single-use keystore for
signing the F-Droid APK. Sourced by `buildApp.sh` to export signing
credentials into the build environment.

fixes: https://github.com/status-im/status-app/issues/19741
2026-03-14 20:54:15 +05:30
Siddarth Kumar a980ae767c ios: enable automatic signing for local builds
fixes: https://github.com/status-im/status-app/issues/19725
2026-03-06 20:23:59 +05:30
Alex Jbanca 64aa578908 fix: Disable swap, buy and bridge on ios release 2026-02-26 11:33:23 -05:00
Alex Jbanca 7fc5283251 fix: MacOS build - missing libZXing
Compile zxing and scodes as static libs
2026-02-20 12:52:10 +02:00
Alex Jbanca 298ae9842b fix: Keycard login on desktop 2026-02-20 12:52:10 +02:00
Siddarth Kumar 613c45e5d7 ci: fix android release builds
Otherwise they would fail like this :
```
[2026-02-17T01:17:53.201Z] * What went wrong:
[2026-02-17T01:17:53.201Z] Task 'assembleRelease bundleRelease' not
found in root project 'android-build'.
```
2026-02-17 19:04:59 +05:30
Jonathan Rainville ebb9c2f9c6 chore(qzxing): remove old QR code library 2026-02-13 13:05:32 -05:00
Sale Djenic d7e78bdefc feat(deep-links): deep links support on iOS
Closes #19563
2026-02-13 13:05:20 -05:00
Jonathan Rainville cec140de2b feat(qr): add new QR library SCodes to scan qr codes (#19811) 2026-02-13 09:21:18 -05:00
Siddarth Kumar 82f8881851 reapply docker file simplification for android QT
fixes :

```
0m=[94mqrc:/app/AppLayouts/Profile/views/EnsView.qml:4
[0m [33mtext[0m=[94m"module \"QtQml.StateMachine\" is not installed"[0m
```

and

```
E  FATAL EXCEPTION: qtMainLoopThread
Process: app.status.mobile.debug, PID: 18150
java.lang.UnsatisfiedLinkError: dlopen failed: library "libStatus
Debug_arm64-v8a.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1097)
at java.lang.Runtime.loadLibrary0(Runtime.java:1019)
at java.lang.System.loadLibrary(System.java:1765)
at
org.qtproject.qt.android.QtLoader.loadLibraryHelper(QtLoader.java:486)
at
org.qtproject.qt.android.QtLoader.lambda$loadMainLibrary$0$org-qtproject-qt-android-QtLoader(QtLoader.java:535)
at
org.qtproject.qt.android.QtLoader$$ExternalSyntheticLambda1.run(D8$$SyntheticClass:0)
at org.qtproject.qt.android.QtThread.lambda$run$0(QtThread.java:57)
at
org.qtproject.qt.android.QtThread$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
at org.qtproject.qt.android.QtThread$1.run(QtThread.java:25)
at java.lang.Thread.run(Thread.java:1563)
```

- re applies this commit :
https://github.com/status-im/status-app/commit/9381d0d06c2bee8e902be3bcf49e9680fe055b0d

- I also adjust the qml lint job to catch this kind of import failure in
CI :
```
[2026-02-03T07:06:17.215Z] Running: QML Lint (Mobile)
[2026-02-03T07:06:17.215Z] qmllint: /opt/qt/6.9.2/gcc_64/bin/qmllint
[2026-02-03T07:06:17.215Z] Qt modules:
/opt/qt/6.9.2/android_arm64_v8a/qml
[2026-02-03T07:06:17.215Z]
[2026-02-03T07:06:17.215Z] Checking 1200 files...
[2026-02-03T07:06:33.882Z]
[2026-02-03T07:06:33.882Z] ERRORS:
[2026-02-03T07:06:33.882Z]
/home/jenkins/workspace/status-app-android/13/ui/app/AppLayouts/Profile/views/EnsView.qml:4:1:
Failed to import QtQml.StateMachine. Are your import paths set up
properly?
```
2026-02-06 13:59:20 -05:00
jakub 06089e893c Revert "ci: simplify android qt docker setup"
This reverts commit 9381d0d06c.
2026-02-02 13:43:19 -05:00
Siddarth Kumar 9381d0d06c ci: simplify android qt docker setup
- Add debug android variant for local builds.
- Fix container builds makefile target for running locally.
- Switch from compiling QT ourselves to relying on `aqtinstall`
- uses fewer qt modules
- adds cleanup stage to save space
- fix make translation target for macos
2026-02-01 10:59:22 +05:30
Alex Jbanca f3b5c4e05e fix: Disable lto for nim_status_client 2026-01-21 09:34:30 +02:00
Alex Jbanca 9412e58829 chore(openssl): Include legacy providers for GlobalPlatform crypto
GlobalPlatform crypto needs the legacy providers. While it will potentially work OOTB with android since we're using dynamic linking, for IOS we need to compile with `no-module`. This will bundle the providers in the lib.
2026-01-14 14:37:35 +02:00
Alex Jbanca 87a5f3f909 fix: Remove hardcoded paths from the build script 2026-01-14 14:37:35 +02:00
Alex Jbanca bb9d6f5d4e fix: Remove buildKeycardQt.sh as it's not needed 2026-01-14 14:37:35 +02:00
Alex Jbanca e95901281c feat: Add status-keycard-qt lib
This commit adds the status-keycard-qt submodule and updates the build configuration to support it.

In this initial version the `status-keycard-qt` option can be enabled by using the `USE_STATUS_KEYCARD_QT` flag.
- desktop: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation. By default the go version is used
- ios: `USE_STATUS_KEYCARD_QT` will enable/disable the qt implementation
- android: the qt implementation is enabled by default

to squash - first commit
2026-01-14 14:37:35 +02:00
Siddarth Kumar 0fdd9fda2d ci: fix android signing
- brings in status-jenkins-lib@v1.9.36
- use gradle build types for PR and Release.
- signing config moved to gradle
- simplify build App script
2026-01-12 19:27:43 +04:00
Siddarth Kumar 1a9708fe01 ios: create and sign separate bundle ID for PRs
- points to `fix-ios-signing-with-fastlane` branch of
`status-jenkins-lib` which provides development certs for PR builds and
distribution certs for release builds.
- adds nix flake to provide ruby dependencies for `fastlane`
- adds config for new build identifier for PRs: `app.status.mobile.pr`
- swaps testflight script with fastlane action
- adds job to build iOS in release
- updates status-go to use nim-sds from
https://github.com/logos-messaging/nim-sds/pull/41
2025-12-24 16:33:32 +04:00
Lukáš Tinkl c4bd2dc4dc chore: setup automatic versioning for mobile builds
- use the same `DESKTOP_VERSION` as the user visible version, but also
set the internal build version string on both Android/iOS

Fixes #19309
2025-11-20 16:24:32 +01:00
Mag. d3246c8b0d ci: align STATUSQ_TESTMODE as the env var for test hooks (#19114)
Aligns workflow and build script with Jenkins to use STATUSQ_TESTMODE as the var to enable test hooks.
2025-11-10 10:24:31 +00:00
Siddarth Kumar 473adec29e fix: find command to select release aab 2025-10-31 12:57:19 -04:00
Siddarth Kumar a1dd245159 ios: produce signed build
- update status-jenkins-lib to v1.9.30 which provides iOS provisioning
profile and appstore certs.
- builds signed iOS app and pushes to testflight.
- updates testflight metadata with PR link and commit sha it was built
from
- adds `scripts/testflight-changelog.mjs` script used by CI to update PR
metadata.
- set `ITSAppUsesNonExemptEncryption` to `false`
2025-10-31 14:31:30 +04:00
Siddarth Kumar b949a1c902 fix: copy libcrypto from correct directory 2025-10-29 15:24:55 +04:00
Siddarth Kumar 947f7e1a8a ci: sign aab with jarsigner 2025-10-29 15:24:36 +04:00
Lukáš Tinkl b0d0e59cfa fix(mobile): set the production variant by default
- as we do in the desktop Makefile; this entails a lot of other
dependant options, like logging and enabling dev features in the app
2025-10-28 12:23:01 +01:00
Siddarth Kumar dee268e221 mobile: build a signed android app
- generate signed APK for PRs
- generate signed AAB for PRs targeting release branches
- updates status-jenkins-lib to v1.9.29 which provides keystore and
credentials for signing
- rename bundle id app.status.mobile
- nuke FOREGROUND_SERVICE permission
- automatically generate versionCode based on minutes since epoch
- nuke unused mobile/android/qt5 dir
- fix path to SecureAndroidAuthentication.java
- bump nim to 2.2.4
2025-10-26 12:36:27 +04:00
Alex Jbanca cfb41ba53a chore: Add splash screens
+ remove the safe area workarounds for qt 6.9.1

This commit adds the splash screen resources for Android and IOS.
On Android it will also create a StatusBarUtil.java. This is a helper to notify the OS when the app theme changes so that the top bar icons to change as well.
StatusQtActivity class inherits the QtActivity and implements the splash screen condition on Android. This is necessary to avoid screen flickering and empty screens while the app loads.
2025-10-17 09:53:17 +03:00
Alex Jbanca c0b842413b chore: Enable orc and use malloc on mobile 2025-10-16 20:33:48 +03:00